Fixes #1873. ValueError at /ipr/new-specific. Commit ready for merge

- Legacy-Id: 10624
This commit is contained in:
Ryan Cross 2015-12-22 21:00:28 +00:00
parent ebfebde27a
commit 57f3acb69c
3 changed files with 34 additions and 1 deletions

View file

@ -41,6 +41,10 @@ class SearchableIprDisclosuresField(forms.CharField):
value = ""
if isinstance(value, basestring):
pks = self.parse_select2_value(value)
# if the user posted a non integer value we need to remove it
for key in pks:
if not key.isdigit():
pks.remove(key)
value = self.model.objects.filter(pk__in=pks)
if isinstance(value, self.model):
value = [value]
@ -57,6 +61,9 @@ class SearchableIprDisclosuresField(forms.CharField):
value = super(SearchableIprDisclosuresField, self).clean(value)
pks = self.parse_select2_value(value)
if not all([ key.isdigit() for key in pks ]):
raise forms.ValidationError(u'You must enter IPR ID(s) as integers')
objs = self.model.objects.filter(pk__in=pks)
found_pks = [str(o.pk) for o in objs]

View file

@ -134,7 +134,7 @@ class GenericDisclosureForm(forms.Form):
raise forms.ValidationError('Submitter information must be provided in section VII')
return cleaned_data
def save(self, *args, **kwargs):
nargs = self.cleaned_data.copy()
same_as_ii_above = nargs.get('same_as_ii_above')

View file

@ -404,6 +404,32 @@ class IprTests(TestCase):
self.assertTrue('New IPR Submission' in outbox[0]['Subject'])
self.assertTrue('ietf-ipr@' in outbox[0]['To'])
def test_update_bad_post(self):
draft = make_test_data()
original_ipr = IprDisclosureBase.objects.get(title='Statement regarding rights')
url = urlreverse("ietf.ipr.views.new", kwargs={ "type": "specific" })
# successful post
empty_outbox()
r = self.client.post(url, {
"updates": "this is supposed to be an integer",
"holder_legal_name": "Test Legal",
"holder_contact_name": "Test Holder",
"holder_contact_email": "test@holder.com",
"iprdocrel_set-TOTAL_FORMS": 1,
"iprdocrel_set-INITIAL_FORMS": 0,
"iprdocrel_set-0-document": "%s" % draft.docalias_set.first().pk,
"iprdocrel_set-0-revisions": '00',
"patent_info": "none",
"has_patent_pending": False,
"licensing": "royalty-free",
"submitter_name": "Test Holder",
"submitter_email": "test@holder.com",
})
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertTrue(q("#id_updates").parents(".form-group").hasClass("has-error"))
def test_addcomment(self):
make_test_data()
ipr = IprDisclosureBase.objects.get(title='Statement regarding rights')