From 0088273f5a8dc4b162937ea775b774e6c04fd23c Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Tue, 18 Apr 2017 16:13:14 +0000 Subject: [PATCH] Adds scripts to create/delete a dummy nomcom to use in development environments. Commit ready for merge. Fixes #2283. - Legacy-Id: 13230 --- ietf/nomcom/delete_dummy_nomcom.py | 24 ++++++++++++++++ ietf/nomcom/factories.py | 8 ++++++ ietf/nomcom/make_dummy_nomcom.py | 46 ++++++++++++++++++++++++++++++ ietf/person/factories.py | 9 ++++-- 4 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 ietf/nomcom/delete_dummy_nomcom.py create mode 100644 ietf/nomcom/make_dummy_nomcom.py diff --git a/ietf/nomcom/delete_dummy_nomcom.py b/ietf/nomcom/delete_dummy_nomcom.py new file mode 100644 index 000000000..659f376cc --- /dev/null +++ b/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() diff --git a/ietf/nomcom/factories.py b/ietf/nomcom/factories.py index 272c984b7..d4b9c6a00 100644 --- a/ietf/nomcom/factories.py +++ b/ietf/nomcom/factories.py @@ -137,6 +137,14 @@ class NomineeFactory(factory.DjangoModelFactory): 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 diff --git a/ietf/nomcom/make_dummy_nomcom.py b/ietf/nomcom/make_dummy_nomcom.py new file mode 100644 index 000000000..e4c551e48 --- /dev/null +++ b/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." diff --git a/ietf/person/factories.py b/ietf/person/factories.py index 5ff0da6c1..447663ec8 100644 --- a/ietf/person/factories.py +++ b/ietf/person/factories.py @@ -58,8 +58,11 @@ class PersonFactory(factory.DjangoModelFactory): @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 @@ -100,5 +103,7 @@ class EmailFactory(factory.DjangoModelFactory): 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