def clean(self): # Get kit quantities from the data that was passed in name_prefix = "kit-quantity-" prefix_len = len(name_prefix) kits = { Kit.objects.get(pk=int(name[prefix_len:])): int(value) for name, value in self.data.iteritems() if name.startswith(name_prefix) and value and is_int(value) and int(value) } self.cleaned_data['kits'] = kits if len(kits) == 0: raise ValidationError('Please add a quantity of at least one kit') if len(kits) > 1: if not self.cleaned_data.get('name', False): raise ValidationError('Name required if more than one ' 'kit is included') # If there's just one kit, default the name and description to its name and description if len(kits) == 1: kit = kits.keys()[0] if not self.cleaned_data.get('name', False): self.cleaned_data['name'] = kit.name if not self.cleaned_data.get('description', False): self.cleaned_data['description'] = kit.description return self.cleaned_data
def test_is_int(self): for value, result in [ ("1", True), ("", False), ("1,000", False), ("1.05", False), ("queryt", False), ("1234db", False), ("1_23", False), ]: self.assertEqual(result, is_int(value))