datatracker/ietf/utils/test_data.py
Henrik Levkowetz cbfe489ff5 Merged in more shim-layer removals from olau@iola.dk
(-r5465:HEAD from branch/iola/shimfree).  Copying relevant
commit messages here:

 - Deleted dead code in many places.

 - Renamed id-something to draft-something, make the "is
   this eligible for expiration" logic clearer

 - Added a name for IPR search URL

 - Revamped the ballot popup view

 - URL reversed the IPR search link instead of hardcoding it

 - Cleaned up search views and remove dead code, port them to the new DB
   schema, hack related views in iesg/ and wginfo/ to use the new search
   interfaces, avoid camelCase in search GET parameters (with
   backwards-compat fallback), add some simple search unit tests, remove
   caching from views_search.py index pages as they're now pretty fast to
   generate, rewrite ballot popup JS, regularize some CSS classes to use
   hyphen-notation rather than camelCase, move some of the search
   templates to doc/.

   idrfc/ now mostly contains some wrapper code still in use by other
   subdirs, some ported code not yet moved, and dead code.

 - Fixed output bug in test crawler and print referrer upon errors so it's
   easier to figure out where a link came from

 - Added /doc/in-last-call/ to crawler, report original page as referrer in
   a redirect chain rather than intermediate URL

 - Ported idindex to new schema, speed them up, add tests, refactor index
   page in views_search to share code with the text index file, get rid
   of some special-case idindex filters from ietf_filters, move
   "/drafts/" redirects to a file in /doc/

 - Ported /idtracker/status/ and /idtracker/status/last-call/ overview of
   drafts in IESG process to new schema in /doc/iesg/ and
   /doc/iesg/last-call/

 - Added redirects for all of /idtracker/*, removed all view code and other
   dead code from idtracker/

 - Removed the idtracker sitemap indexing drafts - in its current form,
   it adds nothing of value to the HTML-based /doc/all/ view, and it's
   pretty slow

 - Ported idtracker feeds to new schema, move them to doc/, cleaned up
   idtracker/ - only templatetags/ietf_filters and proxy code is left
 - Legacy-Id: 5836
2013-07-17 20:52:39 +00:00

447 lines
13 KiB
Python

from django.conf import settings
from django.contrib.auth.models import User
from ietf.iesg.models import TelechatDate, WGAction
from ietf.ipr.models import IprDetail, IprDocAlias
from ietf.meeting.models import Meeting
from ietf.doc.models import *
from ietf.doc.utils import *
from ietf.name.models import *
from ietf.group.models import *
from ietf.person.models import *
def make_test_data():
# telechat dates
t = datetime.date.today()
old = TelechatDate.objects.create(date=t - datetime.timedelta(days=14)).date
date1 = TelechatDate.objects.create(date=t).date
date2 = TelechatDate.objects.create(date=t + datetime.timedelta(days=14)).date
date3 = TelechatDate.objects.create(date=t + datetime.timedelta(days=14 * 2)).date
date4 = TelechatDate.objects.create(date=t + datetime.timedelta(days=14 * 3)).date
# groups
secretariat, created = Group.objects.get_or_create(
name="Secretariat",
acronym="secretariat",
state_id="active",
type_id="ietf",
parent=None)
ietf, created = Group.objects.get_or_create(
name="IETF",
acronym="ietf",
state_id="active",
type_id="ietf",
parent=None)
for x in ["irtf", "iab", "ise", "iesg"]:
Group.objects.get_or_create(
name=x.upper(),
acronym=x,
state_id="active",
type_id="ietf",
parent=None)
area, created = Group.objects.get_or_create(
name="Far Future",
acronym="farfut",
state_id="active",
type_id="area",
parent=ietf)
individ, created = Group.objects.get_or_create(
name="Individual submissions",
acronym="none",
state_id="active",
type_id="individ",
parent=None)
# mars WG
group, created = Group.objects.get_or_create(
name="Martian Special Interest Group",
acronym="mars",
state_id="active",
type_id="wg",
parent=area,
list_email="mars-wg@ietf.org",
)
mars_wg = group
charter, created = Document.objects.get_or_create(
name="charter-ietf-" + group.acronym,
type_id="charter",
title=group.name,
group=group,
rev="00",
)
charter.set_state(State.objects.get(used=True, slug="approved", type="charter"))
group.charter = charter
group.save()
DocAlias.objects.create(
name=charter.name,
document=charter
)
# ames WG
group = Group.objects.create(
name="Asteroid Mining Equipment Standardization Group",
acronym="ames",
state_id="proposed",
type_id="wg",
parent=area,
list_email="ames-wg@ietf.org",
)
charter = Document.objects.create(
name="charter-ietf-" + group.acronym,
type_id="charter",
title=group.name,
group=group,
rev="00",
)
charter.set_state(State.objects.get(used=True, slug="infrev", type="charter"))
DocAlias.objects.create(
name=charter.name,
document=charter
)
group.charter = charter
group.save()
WGAction.objects.create(
pk=group.pk,
note="",
status_date=datetime.date.today(),
agenda=1,
token_name="Aread",
category=13,
telechat_date=date2
)
# persons
# system
system_person = Person.objects.create(
# id=0, # special value
name="(System)",
ascii="(System)",
address="",
)
system_person.save()
# IANA and RFC Editor groups
iana = Group.objects.create(
name="IANA",
acronym="iana",
state_id="active",
type_id="ietf",
parent=None,
)
rfc_editor = Group.objects.create(
name="RFC Editor",
acronym="rfceditor",
state_id="active",
type_id="ietf",
parent=None,
)
if system_person.id != 0: # work around bug in Django
Person.objects.filter(id=system_person.id).update(id=0)
system_person = Person.objects.get(id=0)
alias = Alias(person=system_person, name=system_person.name)
alias.save()
Email.objects.get_or_create(address="", person=system_person)
# plain IETF'er
u = User.objects.create(username="plain")
plainman = Person.objects.create(
name="Plain Man",
ascii="Plain Man",
user=u)
email = Email.objects.create(
address="plain@example.com",
person=plainman)
# ad
u = User.objects.create(username="ad")
ad = p = Person.objects.create(
name="Aread Irector",
ascii="Aread Irector",
user=u)
email = Email.objects.create(
address="aread@ietf.org",
person=p)
Role.objects.create(
name_id="ad",
group=area,
person=p,
email=email)
mars_wg.ad = ad
mars_wg.save()
# create a bunch of ads for swarm tests
for i in range(1, 10):
u = User.objects.create(username="ad%s" % i)
p = Person.objects.create(
name="Ad No%s" % i,
ascii="Ad No%s" % i,
user=u)
email = Email.objects.create(
address="ad%s@ietf.org" % i,
person=p)
if i < 6:
# active
Role.objects.create(
name_id="ad",
group=area,
person=p,
email=email)
else:
areahist = GroupHistory.objects.create(
group=area,
name=area.name,
acronym=area.acronym,
type_id=area.type_id,
state_id=area.state_id,
parent=area.parent
)
RoleHistory.objects.create(
name_id="ad",
group=areahist,
person=p,
email=email)
# stream chairs
for stream in ['ietf','irtf','iab','iesg']:
u = User.objects.create( username= ("%schair"%stream) )
p = Person.objects.create(
name="%s chair"%stream,
ascii="%s chair"%stream,
user = u,
)
chairmail = Email.objects.create(
address="%schair@ietf.org"%stream,
person = p,
)
Role.objects.create(
name_id = "chair",
group = Group.objects.get(acronym=stream),
person = p,
email = chairmail,
)
# group chair
u = User.objects.create(username="marschairman")
p = Person.objects.create(
name="WG Chair Man",
ascii="WG Chair Man",
user=u
)
wgchair = Email.objects.create(
address="wgchairman@ietf.org",
person=p)
Role.objects.create(
name_id="chair",
group=mars_wg,
person=p,
email=wgchair,
)
# group delegate
u = User.objects.create(username="wgdelegate")
p = Person.objects.create(
name="WG Delegate",
ascii="WG Delegate",
user=u
)
email = Email.objects.create(
address="wgdelegate@ietf.org",
person=p)
Role.objects.create(
name_id="delegate",
group=mars_wg,
person=p,
email=email,
)
# secretary
u = User.objects.create(username="secretary")
p = Person.objects.create(
name="Sec Retary",
ascii="Sec Retary",
user=u)
email = Email.objects.create(
address="sec.retary@ietf.org",
person=p)
Role.objects.create(
name_id="secr",
group=secretariat,
person=p,
email=email,
)
# IANA user
u = User.objects.create(username="iana")
p = Person.objects.create(
name="Ina Iana",
ascii="Ina Iana",
user=u)
Alias.objects.create(
name=p.name,
person=p)
email = Email.objects.create(
address="iana@ia.na",
person=p)
Role.objects.create(
name_id="auth",
group=iana,
email=email,
person=p,
)
# RFC Editor user
u = User.objects.create(username="rfc")
p = Person.objects.create(
name="Rfc Editor",
ascii="Rfc Editor",
user=u)
email = Email.objects.create(
address="rfc@edit.or",
person=p)
Role.objects.create(
name_id="auth",
group=rfc_editor,
email=email,
person=p,
)
# Secretariat user
u = User.objects.create(id=509, username="wnl")
p = Person.objects.create(
name="Wanda Lo",
ascii="Wanda Lo",
user=u)
email = Email.objects.create(
address="wnl@amsl.com",
person=p)
Role.objects.create(
name_id="auth",
group=secretariat,
email=email,
person=p,
)
# draft
draft = Document.objects.create(
name="draft-ietf-mars-test",
time=datetime.datetime.now(),
type_id="draft",
title="Optimizing Martian Network Topologies",
stream_id="ietf",
group=mars_wg,
abstract="Techniques for achieving near-optimal Martian networks.",
rev="01",
pages=2,
intended_std_level_id="ps",
shepherd=plainman,
ad=ad,
expires=datetime.datetime.now() + datetime.timedelta(days=settings.INTERNET_DRAFT_DAYS_TO_EXPIRE),
notify="aliens@example.mars",
note="",
)
draft.set_state(State.objects.get(used=True, type="draft", slug="active"))
draft.set_state(State.objects.get(used=True, type="draft-iesg", slug="pub-req"))
draft.set_state(State.objects.get(used=True, type="draft-stream-%s" % draft.stream_id, slug="wg-doc"))
doc_alias = DocAlias.objects.create(
document=draft,
name=draft.name,
)
DocumentAuthor.objects.create(
document=draft,
author=Email.objects.get(address="aread@ietf.org"),
order=1
)
# fill in some useful default events
DocEvent.objects.create(
type="started_iesg_process",
by=ad,
doc=draft,
desc="Started IESG process",
)
BallotDocEvent.objects.create(
type="created_ballot",
ballot_type=BallotType.objects.get(doc_type="draft", slug="approve"),
by=ad,
doc=draft,
desc="Created ballot",
)
# IPR
ipr = IprDetail.objects.create(
title="Statement regarding rights",
legal_name="Native Martians United",
is_pending=0,
applies_to_all=1,
licensing_option=1,
lic_opt_a_sub=2,
lic_opt_b_sub=2,
lic_opt_c_sub=2,
comments="",
lic_checkbox=True,
other_notes="",
status=1,
submitted_date=datetime.date.today(),
)
IprDocAlias.objects.create(
ipr=ipr,
doc_alias=doc_alias,
rev="00",
)
# meeting
Meeting.objects.create(
number="42",
type_id="ietf",
date=datetime.date.today() + datetime.timedelta(days=180),
city="New York",
country="US",
time_zone="US/Eastern",
break_area="Lounge",
reg_area="Lobby",
)
# an independent submission before review
doc = Document.objects.create(name='draft-imaginary-independent-submission',type_id='draft')
doc.set_state(State.objects.get(used=True, type="draft", slug="active"))
DocAlias.objects.create(name=doc.name, document=doc)
# an irtf submission mid review
doc = Document.objects.create(name='draft-imaginary-irtf-submission', type_id='draft')
docalias = DocAlias.objects.create(name=doc.name, document=doc)
doc.stream = StreamName.objects.get(slug='irtf')
doc.save()
doc.set_state(State.objects.get(type="draft", slug="active"))
crdoc = Document.objects.create(name='conflict-review-imaginary-irtf-submission', type_id='conflrev', rev='00', notify="fsm@ietf.org")
DocAlias.objects.create(name=crdoc.name, document=crdoc)
crdoc.set_state(State.objects.get(name='Needs Shepherd', type__slug='conflrev'))
crdoc.relateddocument_set.create(target=docalias,relationship_id='conflrev')
# A status change mid review
iesg = Group.objects.get(acronym='iesg')
doc = Document.objects.create(name='status-change-imaginary-mid-review',type_id='statchg', rev='00', notify="fsm@ietf.org",group=iesg)
doc.set_state(State.objects.get(slug='needshep',type__slug='statchg'))
doc.save()
docalias = DocAlias.objects.create(name='status-change-imaginary-mid-review',document=doc)
# Some things for a status change to affect
target_rfc = Document.objects.create(name='draft-ietf-random-thing', type_id='draft', std_level_id='ps')
target_rfc.set_state(State.objects.get(slug='rfc',type__slug='draft'))
target_rfc.save()
docalias = DocAlias.objects.create(name='draft-ietf-random-thing',document=target_rfc)
docalias = DocAlias.objects.create(name='rfc9999',document=target_rfc)
target_rfc = Document.objects.create(name='draft-ietf-random-otherthing', type_id='draft', std_level_id='inf')
target_rfc.set_state(State.objects.get(slug='rfc',type__slug='draft'))
target_rfc.save()
docalias = DocAlias.objects.create(name='draft-ietf-random-otherthing',document=target_rfc)
docalias = DocAlias.objects.create(name='rfc9998',document=target_rfc)
return draft