Skip to content

Commit

Permalink
Adds scripts to create/delete a dummy nomcom to use in development en…
Browse files Browse the repository at this point in the history
…vironments. Commit ready for merge. Fixes #2283.

 - Legacy-Id: 13230
  • Loading branch information
rjsparks committed Apr 18, 2017
1 parent b2db0d4 commit 0088273
Show file tree
Hide file tree
Showing 4 changed files with 85 additions and 2 deletions.
24 changes: 24 additions & 0 deletions ietf/nomcom/delete_dummy_nomcom.py
@@ -0,0 +1,24 @@
#!/usr/bin/python

# script for generating a dummy nomcom to use when developing nomcom related code

# boiler plate
import os, sys
import django
import socket


basedir = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), '../..'))
sys.path.insert(0, basedir)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings")

django.setup()

from ietf.group.models import Group
from ietf.person.models import User

if socket.gethostname().split('.')[0] in ['core3', 'ietfa', 'ietfb', 'ietfc', ]:
raise EnvironmentError("Refusing to run tests on production server")

Group.objects.filter(acronym='nomcom7437').delete()
User.objects.filter(username__in=['dummychair','dummymember','dummycandidate']).delete()
8 changes: 8 additions & 0 deletions ietf/nomcom/factories.py
Expand Up @@ -137,6 +137,14 @@ class Meta:
person = factory.SubFactory(PersonFactory)
email = factory.LazyAttribute(lambda obj: obj.person.email())

class NomineePositionFactory(factory.DjangoModelFactory):
class Meta:
model = NomineePosition

position = factory.SubFactory(PositionFactory)
nominee = factory.SubFactory(NomineeFactory)
state_id = 'accepted'

class FeedbackFactory(factory.DjangoModelFactory):
class Meta:
model = Feedback
Expand Down
46 changes: 46 additions & 0 deletions ietf/nomcom/make_dummy_nomcom.py
@@ -0,0 +1,46 @@
#!/usr/bin/python

# script for generating a dummy nomcom to use when developing nomcom related code

# boiler plate
import os, sys
import django
import socket


basedir = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), '../..'))
sys.path.insert(0, basedir)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings")

django.setup()

from ietf.nomcom.factories import nomcom_kwargs_for_year, NomComFactory, NomineePositionFactory, key
from ietf.person.factories import EmailFactory

if socket.gethostname().split('.')[0] in ['core3', 'ietfa', 'ietfb', 'ietfc', ]:
raise EnvironmentError("Refusing to run tests on production server")

nc = NomComFactory.create(**nomcom_kwargs_for_year(year=7437,
populate_personnel=False,
populate_positions=False))

e = EmailFactory(person__name=u'Dummy Chair',address=u'dummychair@example.com',person__user__username=u'dummychair',person__default_emails=False)
e.person.user.set_password('password')
e.person.user.save()
nc.group.role_set.create(name_id=u'chair',person=e.person,email=e)

e = EmailFactory(person__name=u'Dummy Member',address=u'dummymember@example.com',person__user__username=u'dummymember',person__default_emails=False)
e.person.user.set_password('password')
e.person.user.save()
nc.group.role_set.create(name_id=u'member',person=e.person,email=e)


e = EmailFactory(person__name=u'Dummy Candidate',address=u'dummycandidate@example.com',person__user__username=u'dummycandidate',person__default_emails=False)
e.person.user.set_password('password')
e.person.user.save()
NomineePositionFactory(nominee__nomcom=nc, nominee__person=e.person,
position__nomcom=nc, position__name=u'Dummy Area Director',
)

print key
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."
9 changes: 7 additions & 2 deletions ietf/person/factories.py
Expand Up @@ -58,8 +58,11 @@ def default_aliases(obj, create, extracted, **kwargs): # pylint: disable=no-self

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

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

address = factory.Sequence(lambda n:'%s.%s_%d@%s' % ( slugify(unidecode(fake.first_name())),
slugify(unidecode(fake.last_name())), n, fake.domain_name()))
person = factory.SubFactory(PersonFactory)

active = True
primary = False

0 comments on commit 0088273

Please sign in to comment.