Skip to content

Commit 57f3acb

Browse files
committed
Fixes ietf-tools#1873. ValueError at /ipr/new-specific. Commit ready for merge
- Legacy-Id: 10624
1 parent ebfebde commit 57f3acb

3 files changed

Lines changed: 34 additions & 1 deletion

File tree

ietf/ipr/fields.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ def prepare_value(self, value):
4141
value = ""
4242
if isinstance(value, basestring):
4343
pks = self.parse_select2_value(value)
44+
# if the user posted a non integer value we need to remove it
45+
for key in pks:
46+
if not key.isdigit():
47+
pks.remove(key)
4448
value = self.model.objects.filter(pk__in=pks)
4549
if isinstance(value, self.model):
4650
value = [value]
@@ -57,6 +61,9 @@ def clean(self, value):
5761
value = super(SearchableIprDisclosuresField, self).clean(value)
5862
pks = self.parse_select2_value(value)
5963

64+
if not all([ key.isdigit() for key in pks ]):
65+
raise forms.ValidationError(u'You must enter IPR ID(s) as integers')
66+
6067
objs = self.model.objects.filter(pk__in=pks)
6168

6269
found_pks = [str(o.pk) for o in objs]

ietf/ipr/forms.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ def clean(self):
134134
raise forms.ValidationError('Submitter information must be provided in section VII')
135135

136136
return cleaned_data
137-
137+
138138
def save(self, *args, **kwargs):
139139
nargs = self.cleaned_data.copy()
140140
same_as_ii_above = nargs.get('same_as_ii_above')

ietf/ipr/tests.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,32 @@ def test_update(self):
404404
self.assertTrue('New IPR Submission' in outbox[0]['Subject'])
405405
self.assertTrue('ietf-ipr@' in outbox[0]['To'])
406406

407+
def test_update_bad_post(self):
408+
draft = make_test_data()
409+
original_ipr = IprDisclosureBase.objects.get(title='Statement regarding rights')
410+
url = urlreverse("ietf.ipr.views.new", kwargs={ "type": "specific" })
411+
412+
# successful post
413+
empty_outbox()
414+
r = self.client.post(url, {
415+
"updates": "this is supposed to be an integer",
416+
"holder_legal_name": "Test Legal",
417+
"holder_contact_name": "Test Holder",
418+
"holder_contact_email": "test@holder.com",
419+
"iprdocrel_set-TOTAL_FORMS": 1,
420+
"iprdocrel_set-INITIAL_FORMS": 0,
421+
"iprdocrel_set-0-document": "%s" % draft.docalias_set.first().pk,
422+
"iprdocrel_set-0-revisions": '00',
423+
"patent_info": "none",
424+
"has_patent_pending": False,
425+
"licensing": "royalty-free",
426+
"submitter_name": "Test Holder",
427+
"submitter_email": "test@holder.com",
428+
})
429+
self.assertEqual(r.status_code, 200)
430+
q = PyQuery(r.content)
431+
self.assertTrue(q("#id_updates").parents(".form-group").hasClass("has-error"))
432+
407433
def test_addcomment(self):
408434
make_test_data()
409435
ipr = IprDisclosureBase.objects.get(title='Statement regarding rights')

0 commit comments

Comments
 (0)