def test_find_item_by_name(self): choice = get_choice_by_name(SampleChoices, "simple") self.assertEqual(choice.id, 1) self.assertEqual(choice.name, "simple") self.assertEqual(choice.raw, "simple") choice = get_choice_by_name(SampleChoices, "not_simple") self.assertEqual(choice.id, 2) self.assertEqual(choice.name, "not_simple") self.assertEqual(choice.raw, "not simple")
def test_find_item_by_name(self): choice = get_choice_by_name(SampleChoices, 'simple') self.assertEqual(choice.id, 1) self.assertEqual(choice.name, 'simple') self.assertEqual(choice.raw, 'simple') choice = get_choice_by_name(SampleChoices, 'not_simple') self.assertEqual(choice.id, 2) self.assertEqual(choice.name, 'not_simple') self.assertEqual(choice.raw, 'not simple')
def clean(self): for name, value in self.cleaned_data.iteritems(): if name.endswith('-custom'): continue if value == 'custom': info = self.field_info.get(name, DefaultInfo()) try: value = info.clean(self.cleaned_data[name + '-custom']) except (TypeError, ValueError, forms.ValidationError) as e: self._errors[name + '-custom'] = self.error_class([e]) else: if (name == 'type' and self.result['type'].get((value,)) == 'unknown'): msg = "Please specify custom value for this component." self._errors[name] = self.error_class([msg]) if 'ralph_assets' in settings.INSTALLED_APPS: from ralph_assets.api_ralph import is_asset_assigned from ralph_assets.models import Asset try: asset = self.get_value('asset') except (KeyError, ValueError): asset = None else: if asset == 'None': asset = None if asset: _, asset_sn, asset_barcode = asset.split(' - ') try: if asset_sn == '': asset_sn = None if asset_barcode == '': asset_barcode = None asset_obj = Asset.objects.get(sn=asset_sn, barcode=asset_barcode) except Asset.DoesNotExist: pass else: if (self.data['asset'] != 'database' and is_asset_assigned(asset_id=asset_obj.id)): msg = ("This asset is already linked to some other " "device. To resolve this conflict, please " "click the link above.") self._errors['asset'] = self.error_class([msg]) try: selected_type = self.get_value('type') except (KeyError, ValueError): if not asset: msg = "Can't save this device without specifying an asset." self._errors['asset'] = self.error_class([msg]) else: selected_type = get_choice_by_name(DeviceType, selected_type) if selected_type not in ASSET_NOT_REQUIRED and not asset: msg = "Asset is required for this kind of device." self._errors['asset'] = self.error_class([msg]) return self.cleaned_data
def clean(self): for name, value in self.cleaned_data.iteritems(): if name.endswith('-custom'): continue if value == 'custom': info = self.field_info.get(name, DefaultInfo()) try: value = info.clean(self.cleaned_data[name + '-custom']) except (TypeError, ValueError, forms.ValidationError) as e: self._errors[name + '-custom'] = self.error_class([e]) else: if (name == 'type' and self.result['type'].get( (value, )) == 'unknown'): msg = "Please specify custom value for this component." self._errors[name] = self.error_class([msg]) if 'ralph_assets' in settings.INSTALLED_APPS: from ralph_assets.api_ralph import is_asset_assigned from ralph_assets.models import Asset try: asset = self.get_value('asset') except (KeyError, ValueError): asset = None else: if asset == 'None': asset = None if asset: _, asset_sn, asset_barcode = asset.split(' - ') try: if asset_sn == '': asset_sn = None if asset_barcode == '': asset_barcode = None asset_obj = Asset.objects.get(sn=asset_sn, barcode=asset_barcode) except Asset.DoesNotExist: pass else: if (self.data['asset'] != 'database' and is_asset_assigned(asset_id=asset_obj.id)): msg = ("This asset is already linked to some other " "device. To resolve this conflict, please " "click the link above.") self._errors['asset'] = self.error_class([msg]) try: selected_type = self.get_value('type') except (KeyError, ValueError): if not asset: msg = "Can't save this device without specifying an asset." self._errors['asset'] = self.error_class([msg]) else: selected_type = get_choice_by_name(DeviceType, selected_type) if selected_type not in ASSET_NOT_REQUIRED and not asset: msg = "Asset is required for this kind of device." self._errors['asset'] = self.error_class([msg]) return self.cleaned_data
def test_find_item_by_raw_name(self): choice = get_choice_by_name(SampleChoices, "some difficult case") self.assertEqual(choice.id, 3) self.assertEqual(choice.name, "difficult") self.assertEqual(choice.raw, "some difficult case")
def test_find_item_by_name_with_spaces(self): choice = get_choice_by_name(SampleChoices, "Not Simple") self.assertEqual(choice.id, 2) self.assertEqual(choice.name, "not_simple") self.assertEqual(choice.raw, "not simple")
def test_find_item_by_raw_name(self): choice = get_choice_by_name(SampleChoices, 'some difficult case') self.assertEqual(choice.id, 3) self.assertEqual(choice.name, 'difficult') self.assertEqual(choice.raw, 'some difficult case')
def test_find_item_by_name_with_spaces(self): choice = get_choice_by_name(SampleChoices, 'Not Simple') self.assertEqual(choice.id, 2) self.assertEqual(choice.name, 'not_simple') self.assertEqual(choice.raw, 'not simple')