diff --git a/ietf/dbtemplate/fixtures/nomcom_templates.xml b/ietf/dbtemplate/fixtures/nomcom_templates.xml index b13f4db00..369cad73c 100644 --- a/ietf/dbtemplate/fixtures/nomcom_templates.xml +++ b/ietf/dbtemplate/fixtures/nomcom_templates.xml @@ -181,4 +181,10 @@ The questionaire is repeated below for your convenience. Describe the topic and add any information/instructions for the responder here. + + /nomcom/defaults/iesg_requirements + Generic IESG Requirements + rst + Generic IESG Requirements Yo! + diff --git a/ietf/dbtemplate/migrations/0008_add_default_iesg_req_template.py b/ietf/dbtemplate/migrations/0008_add_default_iesg_req_template.py new file mode 100644 index 000000000..0fe0d04fe --- /dev/null +++ b/ietf/dbtemplate/migrations/0008_add_default_iesg_req_template.py @@ -0,0 +1,32 @@ +# Copyright The IETF Trust 2020, All Rights Reserved +# -*- coding: utf-8 -*- +# Generated by Django 1.11.27 on 2020-01-07 09:25 +from __future__ import unicode_literals + +from django.db import migrations + +def forward(apps, schema_editor): + DBTemplate = apps.get_model('dbtemplate', 'DBTemplate') + DBTemplate.objects.create(path='/nomcom/defaults/iesg_requirements', type_id='rst', title='Generic IESG requirements', + content="""============================= +IESG MEMBER DESIRED EXPERTISE +============================= + +Place this years Generic IESG Member Desired Expertise here. + +This template uses reStructured text for formatting. Feel free to use it (to change the above header for example). +""") + +def reverse(apps, schema_editor): + DBTemplate = apps.get_model('dbtemplate', 'DBTemplate') + DBTemplate.objects.filter(path='/nomcom/defaults/iesg_requirements').delete() + +class Migration(migrations.Migration): + + dependencies = [ + ('dbtemplate', '0007_adjust_review_assigned'), + ] + + operations = [ + migrations.RunPython(forward, reverse) + ] diff --git a/ietf/nomcom/forms.py b/ietf/nomcom/forms.py index 30ef70176..fe8942bbc 100644 --- a/ietf/nomcom/forms.py +++ b/ietf/nomcom/forms.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- @@ -603,7 +603,7 @@ class PositionForm(forms.ModelForm): class Meta: model = Position - fields = ('name', 'is_open', 'accepting_nominations', 'accepting_feedback') + fields = ('name', 'is_iesg_position', 'is_open', 'accepting_nominations', 'accepting_feedback') def __init__(self, *args, **kwargs): self.nomcom = kwargs.pop('nomcom', None) diff --git a/ietf/nomcom/management/commands/make_dummy_nomcom.py b/ietf/nomcom/management/commands/make_dummy_nomcom.py index 92d71dcac..2e34aba6a 100644 --- a/ietf/nomcom/management/commands/make_dummy_nomcom.py +++ b/ietf/nomcom/management/commands/make_dummy_nomcom.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2017-2019, All Rights Reserved +# Copyright The IETF Trust 2017-2020, All Rights Reserved # -*- coding: utf-8 -*- @@ -56,7 +56,7 @@ class Command(BaseCommand): e.person.user.set_password('password') e.person.user.save() NomineePositionFactory(nominee__nomcom=nc, nominee__person=e.person, - position__nomcom=nc, position__name='Dummy Area Director', + position__nomcom=nc, position__name='Dummy Area Director', position__is_iesg_position=True, ) self.stdout.write("%s\n" % key) diff --git a/ietf/nomcom/migrations/0007_position_is_iesg_position.py b/ietf/nomcom/migrations/0007_position_is_iesg_position.py new file mode 100644 index 000000000..25ebb48f9 --- /dev/null +++ b/ietf/nomcom/migrations/0007_position_is_iesg_position.py @@ -0,0 +1,21 @@ +# Copyright The IETF Trust 2020, All Rights Reserved +# -*- coding: utf-8 -*- +# Generated by Django 1.11.27 on 2020-01-07 14:41 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('nomcom', '0006_auto_20190716_1216'), + ] + + operations = [ + migrations.AddField( + model_name='position', + name='is_iesg_position', + field=models.BooleanField(default=False, verbose_name='Is IESG Position'), + ), + ] diff --git a/ietf/nomcom/models.py b/ietf/nomcom/models.py index 8b852415e..1ba9448de 100644 --- a/ietf/nomcom/models.py +++ b/ietf/nomcom/models.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- from __future__ import absolute_import, print_function, unicode_literals @@ -202,6 +202,7 @@ class Position(models.Model): is_open = models.BooleanField(verbose_name='Is open', default=False, help_text="Set is_open when the nomcom is working on a position. Clear it when an appointment is confirmed.") accepting_nominations = models.BooleanField(verbose_name='Is accepting nominations', default=False) accepting_feedback = models.BooleanField(verbose_name='Is accepting feedback', default=False) + is_iesg_position = models.BooleanField(verbose_name='Is IESG Position', default=False) objects = PositionManager() @@ -235,10 +236,19 @@ class Position(models.Model): return render_to_string(self.questionnaire.path, {'position': self}) def get_requirement(self): - rendered = render_to_string(self.requirement.path, {'position': self}) + specific_reqs = render_to_string(self.requirement.path, {'position': self}) if self.requirement.type_id=='plain': - rendered = linebreaks(rendered) - return rendered + specific_reqs = linebreaks(specific_reqs) + + generic_iesg_template = DBTemplate.objects.filter(group=self.nomcom.group,path__endswith='iesg_requirements').first() + + if self.is_iesg_position and generic_iesg_template: + generic_iesg_reqs = render_to_string(generic_iesg_template.path, {}) + if generic_iesg_template.type_id=='plain': + generic_iesg_reqs = linebreaks(generic_iesg_reqs) + return render_to_string("nomcom/iesg_position_requirements.html", dict(position=self, generic_iesg_reqs=generic_iesg_reqs, specific_reqs=specific_reqs)) + else: + return specific_reqs @python_2_unicode_compatible class Topic(models.Model): diff --git a/ietf/nomcom/test_data.py b/ietf/nomcom/test_data.py index 072f43e92..30b61e34f 100644 --- a/ietf/nomcom/test_data.py +++ b/ietf/nomcom/test_data.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- @@ -141,7 +141,8 @@ def nomcom_test_data(): name=name, is_open=True, accepting_nominations=True, - accepting_feedback=True) + accepting_feedback=True, + is_iesg_position= POSITIONS.index(name) < 9) ChangeStateGroupEvent.objects.get_or_create(group=group, type="changed_state", diff --git a/ietf/nomcom/utils.py b/ietf/nomcom/utils.py index 5f8da9b06..670cfbfc0 100644 --- a/ietf/nomcom/utils.py +++ b/ietf/nomcom/utils.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2012-2019, All Rights Reserved +# Copyright The IETF Trust 2012-2020, All Rights Reserved # -*- coding: utf-8 -*- @@ -47,6 +47,7 @@ NOMINEE_QUESTIONNAIRE_REMINDER_TEMPLATE = 'email/questionnaire_reminder.txt' NOMINATION_RECEIPT_TEMPLATE = 'email/nomination_receipt.txt' FEEDBACK_RECEIPT_TEMPLATE = 'email/feedback_receipt.txt' DESCRIPTION_TEMPLATE = 'topic/description' +IESG_GENERIC_REQUIREMENTS_TEMPLATE = 'iesg_requirements' DEFAULT_NOMCOM_TEMPLATES = [HOME_TEMPLATE, INEXISTENT_PERSON_TEMPLATE, @@ -55,7 +56,8 @@ DEFAULT_NOMCOM_TEMPLATES = [HOME_TEMPLATE, NOMINEE_ACCEPT_REMINDER_TEMPLATE, NOMINEE_QUESTIONNAIRE_REMINDER_TEMPLATE, NOMINATION_RECEIPT_TEMPLATE, - FEEDBACK_RECEIPT_TEMPLATE] + FEEDBACK_RECEIPT_TEMPLATE, + IESG_GENERIC_REQUIREMENTS_TEMPLATE] def get_nomcom_by_year(year): diff --git a/ietf/templates/nomcom/iesg_position_requirements.html b/ietf/templates/nomcom/iesg_position_requirements.html new file mode 100644 index 000000000..e78a35996 --- /dev/null +++ b/ietf/templates/nomcom/iesg_position_requirements.html @@ -0,0 +1,12 @@ +
+
General IESG Requirements
+
+ {{generic_iesg_reqs|safe}} +
+
+
+
{{position.name}} Specific Requirements
+
+ {{specific_reqs|safe}} +
+
\ No newline at end of file diff --git a/ietf/templates/nomcom/list_positions.html b/ietf/templates/nomcom/list_positions.html index 66bd222a1..d71815fca 100644 --- a/ietf/templates/nomcom/list_positions.html +++ b/ietf/templates/nomcom/list_positions.html @@ -20,7 +20,7 @@

{{ group.grouper| yesno:"Open Positions,Closed Positions"}}

{% for position in group.list %} -

{{ position.name }}

+

{{ position.name }}{% if position.is_iesg_position %} (IESG){% endif %}

{% if group.grouper %}
Accepting
diff --git a/ietf/templates/nomcom/requirements.html b/ietf/templates/nomcom/requirements.html index 0b0ced68e..8f779e98c 100644 --- a/ietf/templates/nomcom/requirements.html +++ b/ietf/templates/nomcom/requirements.html @@ -32,3 +32,14 @@
{% endblock %} + +{% block js %} + +{% endblock %} +