Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions ietf/doc/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,13 @@ def __init__(self, *args, **kwargs):
self.fields['ad'].choices = list(choices) + [("", "-------"), (ad_pk, Person.objects.get(pk=ad_pk).plain_name())]

class NotifyForm(forms.Form):
notify = forms.CharField(max_length=255, help_text="List of email addresses to receive state notifications, separated by comma.", label="Notification list", required=False)
notify = forms.CharField(
widget=forms.Textarea,
max_length=1023,
help_text="List of email addresses to receive state notifications, separated by comma.",
label="Notification list",
required=False,
)

def clean_notify(self):
addrspecs = [x.strip() for x in self.cleaned_data["notify"].split(',')]
Expand Down Expand Up @@ -223,4 +229,4 @@ def clean(self):

@staticmethod
def valid_resource_tags():
return ExtResourceName.objects.all().order_by('slug').values_list('slug', flat=True)
return ExtResourceName.objects.all().order_by('slug').values_list('slug', flat=True)
23 changes: 23 additions & 0 deletions ietf/doc/migrations/0048_send_notices.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Generated by Django 2.2.28 on 2022-12-05 17:53

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('doc', '0047_tzaware_deletedevents'),
]

operations = [
migrations.AlterField(
model_name='dochistory',
name='notify',
field=models.TextField(blank=True, max_length=1023),
),
migrations.AlterField(
model_name='document',
name='notify',
field=models.TextField(blank=True, max_length=1023),
),
]
2 changes: 1 addition & 1 deletion ietf/doc/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ class DocumentInfo(models.Model):
ad = ForeignKey(Person, verbose_name="area director", related_name='ad_%(class)s_set', blank=True, null=True)
shepherd = ForeignKey(Email, related_name='shepherd_%(class)s_set', blank=True, null=True)
expires = models.DateTimeField(blank=True, null=True)
notify = models.CharField(max_length=255, blank=True)
notify = models.TextField(max_length=1023, blank=True)
external_url = models.URLField(blank=True)
uploaded_filename = models.TextField(blank=True)
note = models.TextField(blank=True)
Expand Down
6 changes: 3 additions & 3 deletions ietf/doc/tests_charter.py
Original file line number Diff line number Diff line change
Expand Up @@ -448,8 +448,8 @@ def test_edit_notify(self):
# Regenerate does not save!
self.assertEqual(charter.notify,newlist)
q = PyQuery(r.content)
formlist = q('form input[name=notify]')[0].value
self.assertEqual(formlist, None)
formlist = q('form textarea[name=notify]')[0].value.strip()
self.assertEqual(formlist, "")

def test_edit_ad(self):

Expand Down Expand Up @@ -840,4 +840,4 @@ def test_chartering_from_bof(self):
ad_role = RoleFactory(group__type_id='area',name_id='ad')
charter = CharterFactory(group__type_id='wg',group__state_id='bof',group__parent=ad_role.group)
e1,_ = default_review_text(charter.group, charter, Person.objects.get(name="(System)"))
self.assertTrue('A new IETF WG has been proposed' in e1.text)
self.assertTrue('A new IETF WG has been proposed' in e1.text)
8 changes: 4 additions & 4 deletions ietf/doc/tests_conflict_review.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ def test_start_review_as_stream_owner(self):
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertEqual(len(q('form input[name=notify]')),1)
self.assertEqual(len(q('form textarea[name=notify]')), 1)
self.assertEqual(len(q('form select[name=ad]')),0)

# successfully starts a review, and notifies the secretariat
Expand Down Expand Up @@ -179,8 +179,8 @@ def test_edit_notices(self):
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertEqual(len(q('form input[name=notify]')),1)
self.assertEqual(doc.notify,q('form input[name=notify]')[0].value)
self.assertEqual(len(q('form textarea[name=notify]')), 1)
self.assertEqual(doc.notify, q('form textarea[name=notify]')[0].value.strip())

# change notice list
newlist = '"Foo Bar" <foo@bar.baz.com>'
Expand All @@ -197,7 +197,7 @@ def test_edit_notices(self):
# Regenerate does not save!
self.assertEqual(doc.notify,newlist)
q = PyQuery(r.content)
self.assertEqual(None,q('form input[name=notify]')[0].value)
self.assertEqual("", q('form textarea[name=notify]')[0].value.strip())

def test_edit_ad(self):
doc = Document.objects.get(name='conflict-review-imaginary-irtf-submission')
Expand Down
6 changes: 3 additions & 3 deletions ietf/doc/tests_draft.py
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,7 @@ def test_start_iesg_process_on_draft(self):
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertEqual(len(q('form select[name=intended_std_level]')), 1)
self.assertEqual(None,q('form input[name=notify]')[0].value)
self.assertEqual("", q('form textarea[name=notify]')[0].value.strip())

# add
events_before = draft.docevent_set.count()
Expand Down Expand Up @@ -947,7 +947,7 @@ def test_doc_change_notify(self):
r = self.client.get(url)
self.assertEqual(r.status_code,200)
q = PyQuery(r.content)
self.assertEqual(len(q('form input[name=notify]')),1)
self.assertEqual(len(q('form textarea[name=notify]')), 1)

# Provide a list
r = self.client.post(url,dict(notify="TJ2APh2P@ietf.org",save_addresses="1"))
Expand All @@ -962,7 +962,7 @@ def test_doc_change_notify(self):
# Regenerate does not save!
self.assertEqual(doc.notify,'TJ2APh2P@ietf.org')
q = PyQuery(r.content)
self.assertEqual(None,q('form input[name=notify]')[0].value)
self.assertEqual("", q('form textarea[name=notify]')[0].value.strip())

def test_doc_change_intended_status(self):
url = urlreverse('ietf.doc.views_draft.change_intention', kwargs=dict(name=self.docname))
Expand Down
8 changes: 4 additions & 4 deletions ietf/doc/tests_status_change.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,8 @@ def test_edit_notices(self):
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertEqual(len(q('form input[name=notify]')),1)
self.assertEqual(doc.notify,q('form input[name=notify]')[0].value)
self.assertEqual(len(q('form textarea[name=notify]')), 1)
self.assertEqual(doc.notify, q('form textarea[name=notify]')[0].value.strip())

# change notice list
newlist = '"Foo Bar" <foo@bar.baz.com>'
Expand All @@ -169,8 +169,8 @@ def test_edit_notices(self):
# Regenerate does not save!
self.assertEqual(doc.notify,newlist)
q = PyQuery(r.content)
formlist = q('form input[name=notify]')[0].value
self.assertEqual(None,formlist)
formlist = q('form textarea[name=notify]')[0].value.strip()
self.assertEqual("", formlist)

def test_edit_title(self):
doc = Document.objects.get(name='status-change-imaginary-mid-review')
Expand Down
18 changes: 15 additions & 3 deletions ietf/doc/views_conflict_review.py
Original file line number Diff line number Diff line change
Expand Up @@ -370,13 +370,25 @@ def approve_conflict_review(request, name):
))

class SimpleStartReviewForm(forms.Form):
notify = forms.CharField(max_length=255, label="Notice emails", help_text="Separate email addresses with commas.", required=False)
notify = forms.CharField(
widget=forms.Textarea,
max_length=1023,
label="Notice emails",
help_text="Separate email addresses with commas.",
required=False,
)

class StartReviewForm(forms.Form):
ad = forms.ModelChoiceField(Person.objects.filter(role__name="ad", role__group__state="active",role__group__type='area').order_by('name'),
label="Shepherding AD", empty_label="(None)", required=True)
create_in_state = forms.ModelChoiceField(State.objects.filter(used=True, type="conflrev", slug__in=("needshep", "adrev")), empty_label=None, required=False)
notify = forms.CharField(max_length=255, label="Notice emails", help_text="Separate email addresses with commas.", required=False)
notify = forms.CharField(
widget=forms.Textarea,
max_length=1023,
label="Notice emails",
help_text="Separate email addresses with commas.",
required=False,
)
telechat_date = forms.TypedChoiceField(coerce=lambda x: datetime.datetime.strptime(x, '%Y-%m-%d').date(), empty_value=None, required=False, widget=forms.Select(attrs={'onchange':'make_bold()'}))

def __init__(self, *args, **kwargs):
Expand Down Expand Up @@ -523,4 +535,4 @@ def start_review_as_stream_owner(request, name):
{'form': form,
'doc_to_review': doc_to_review,
},
)
)
8 changes: 7 additions & 1 deletion ietf/doc/views_draft.py
Original file line number Diff line number Diff line change
Expand Up @@ -515,7 +515,13 @@ class EditInfoForm(forms.Form):
area = forms.ModelChoiceField(Group.objects.filter(type="area", state="active"), empty_label="(None - individual submission)", required=False, label="Assigned to area")
ad = forms.ModelChoiceField(Person.objects.filter(role__name="ad", role__group__state="active",role__group__type='area').order_by('name'), label="Responsible AD", empty_label="(None)", required=True)
create_in_state = forms.ModelChoiceField(State.objects.filter(used=True, type="draft-iesg", slug__in=("pub-req", "watching")), empty_label=None, required=False)
notify = forms.CharField(max_length=255, label="Notice emails", help_text="Separate email addresses with commas.", required=False)
notify = forms.CharField(
widget=forms.Textarea,
max_length=1023,
label="Notice emails",
help_text="Separate email addresses with commas.",
required=False,
)
note = forms.CharField(widget=forms.Textarea, label="IESG note", required=False, strip=False)
telechat_date = forms.TypedChoiceField(coerce=lambda x: datetime.datetime.strptime(x, '%Y-%m-%d').date(), empty_value=None, required=False, widget=forms.Select(attrs={'onchange':'make_bold()'}))
returning_item = forms.BooleanField(required=False)
Expand Down
8 changes: 7 additions & 1 deletion ietf/doc/views_status_change.py
Original file line number Diff line number Diff line change
Expand Up @@ -468,7 +468,13 @@ class StartStatusChangeForm(forms.Form):
ad = forms.ModelChoiceField(Person.objects.filter(role__name="ad", role__group__state="active",role__group__type='area').order_by('name'),
label="Shepherding AD", empty_label="(None)", required=False)
create_in_state = forms.ModelChoiceField(State.objects.filter(type="statchg", slug__in=("needshep", "adrev")), empty_label=None, required=False)
notify = forms.CharField(max_length=255, label="Notice emails", help_text="Separate email addresses with commas.", required=False)
notify = forms.CharField(
widget=forms.Textarea,
max_length=1023,
label="Notice emails",
help_text="Separate email addresses with commas.",
required=False,
)
telechat_date = forms.TypedChoiceField(coerce=lambda x: datetime.datetime.strptime(x, '%Y-%m-%d').date(), empty_value=None, required=False, widget=forms.Select(attrs={'onchange':'make_bold()'}))
relations={} # type: Dict[str, str]

Expand Down