Skip to content

Commit 8e8d2c3

Browse files
committed
Merged in [13230] from rjsparks@nostrum.com:
Adds scripts to create/delete a dummy nomcom to use in development environments. Fixes ietf-tools#2283. - Legacy-Id: 13233 Note: SVN reference [13230] has been migrated to Git commit 0088273
2 parents e6c4187 + 0088273 commit 8e8d2c3

4 files changed

Lines changed: 85 additions & 2 deletions

File tree

ietf/nomcom/delete_dummy_nomcom.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#!/usr/bin/python
2+
3+
# script for generating a dummy nomcom to use when developing nomcom related code
4+
5+
# boiler plate
6+
import os, sys
7+
import django
8+
import socket
9+
10+
11+
basedir = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), '../..'))
12+
sys.path.insert(0, basedir)
13+
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings")
14+
15+
django.setup()
16+
17+
from ietf.group.models import Group
18+
from ietf.person.models import User
19+
20+
if socket.gethostname().split('.')[0] in ['core3', 'ietfa', 'ietfb', 'ietfc', ]:
21+
raise EnvironmentError("Refusing to run tests on production server")
22+
23+
Group.objects.filter(acronym='nomcom7437').delete()
24+
User.objects.filter(username__in=['dummychair','dummymember','dummycandidate']).delete()

ietf/nomcom/factories.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,14 @@ class Meta:
137137
person = factory.SubFactory(PersonFactory)
138138
email = factory.LazyAttribute(lambda obj: obj.person.email())
139139

140+
class NomineePositionFactory(factory.DjangoModelFactory):
141+
class Meta:
142+
model = NomineePosition
143+
144+
position = factory.SubFactory(PositionFactory)
145+
nominee = factory.SubFactory(NomineeFactory)
146+
state_id = 'accepted'
147+
140148
class FeedbackFactory(factory.DjangoModelFactory):
141149
class Meta:
142150
model = Feedback

ietf/nomcom/make_dummy_nomcom.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#!/usr/bin/python
2+
3+
# script for generating a dummy nomcom to use when developing nomcom related code
4+
5+
# boiler plate
6+
import os, sys
7+
import django
8+
import socket
9+
10+
11+
basedir = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), '../..'))
12+
sys.path.insert(0, basedir)
13+
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings")
14+
15+
django.setup()
16+
17+
from ietf.nomcom.factories import nomcom_kwargs_for_year, NomComFactory, NomineePositionFactory, key
18+
from ietf.person.factories import EmailFactory
19+
20+
if socket.gethostname().split('.')[0] in ['core3', 'ietfa', 'ietfb', 'ietfc', ]:
21+
raise EnvironmentError("Refusing to run tests on production server")
22+
23+
nc = NomComFactory.create(**nomcom_kwargs_for_year(year=7437,
24+
populate_personnel=False,
25+
populate_positions=False))
26+
27+
e = EmailFactory(person__name=u'Dummy Chair',address=u'dummychair@example.com',person__user__username=u'dummychair',person__default_emails=False)
28+
e.person.user.set_password('password')
29+
e.person.user.save()
30+
nc.group.role_set.create(name_id=u'chair',person=e.person,email=e)
31+
32+
e = EmailFactory(person__name=u'Dummy Member',address=u'dummymember@example.com',person__user__username=u'dummymember',person__default_emails=False)
33+
e.person.user.set_password('password')
34+
e.person.user.save()
35+
nc.group.role_set.create(name_id=u'member',person=e.person,email=e)
36+
37+
38+
e = EmailFactory(person__name=u'Dummy Candidate',address=u'dummycandidate@example.com',person__user__username=u'dummycandidate',person__default_emails=False)
39+
e.person.user.set_password('password')
40+
e.person.user.save()
41+
NomineePositionFactory(nominee__nomcom=nc, nominee__person=e.person,
42+
position__nomcom=nc, position__name=u'Dummy Area Director',
43+
)
44+
45+
print key
46+
print "Nomcom 7437 created. The private key can also be found at any time in ietf/nomcom/factories.py. Note that it is NOT a secure key."

ietf/person/factories.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,11 @@ def default_aliases(obj, create, extracted, **kwargs): # pylint: disable=no-self
5858

5959
@factory.post_generation
6060
def default_emails(obj, create, extracted, **kwargs): # pylint: disable=no-self-argument
61-
make_email = getattr(EmailFactory, 'create' if create else 'build')
62-
make_email(person=obj,address=obj.user.email)
61+
if extracted is None:
62+
extracted = True
63+
if create and extracted:
64+
make_email = getattr(EmailFactory, 'create' if create else 'build')
65+
make_email(person=obj,address=obj.user.email)
6366

6467
@factory.post_generation
6568
def default_photo(obj, create, extracted, **kwargs): # pylint: disable=no-self-argument
@@ -100,5 +103,7 @@ class Meta:
100103

101104
address = factory.Sequence(lambda n:'%s.%s_%d@%s' % ( slugify(unidecode(fake.first_name())),
102105
slugify(unidecode(fake.last_name())), n, fake.domain_name()))
106+
person = factory.SubFactory(PersonFactory)
107+
103108
active = True
104109
primary = False

0 commit comments

Comments
 (0)