diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-01-07 17:06:23 +0100 |
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-01-07 17:06:23 +0100 |
| commit | dfe75c20106e95e91dcc94c6311139f0a453851e (patch) | |
| tree | 82ed0a8896d0d003052a9e840afe92675d6b186d | |
| parent | e2f3099bb54a873e948777a8136562bcc4b058a3 (diff) | |
| download | Ishtar-dfe75c20106e95e91dcc94c6311139f0a453851e.tar.bz2 Ishtar-dfe75c20106e95e91dcc94c6311139f0a453851e.zip | |
Add a unique validator
| -rw-r--r-- | ishtar/furnitures/forms.py | 10 | ||||
| -rw-r--r-- | ishtar/furnitures/models.py | 34 |
2 files changed, 22 insertions, 22 deletions
diff --git a/ishtar/furnitures/forms.py b/ishtar/furnitures/forms.py index b5437d65f..e294a00ac 100644 --- a/ishtar/furnitures/forms.py +++ b/ishtar/furnitures/forms.py @@ -290,11 +290,11 @@ class FileForm1(forms.Form): in_charge = forms.IntegerField(label=_("Person in charge"), widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-person'), associated_model=models.Person), - validators=[models.Person.valid_id]) + validators=[models.valid_id(models.Person)]) year = forms.IntegerField(label=_("Year"), initial=lambda:datetime.datetime.now().year) internal_reference = forms.CharField(label=_(u"Internal reference"), - max_length=60) +max_length=60, validators=[models.is_unique(models.File, 'internal_reference')]) creation_date = forms.DateField(label=_(u"Creation date"), initial=datetime.datetime.now) file_type = forms.ChoiceField(label=_("File type"), @@ -314,7 +314,7 @@ class TownForm(forms.Form): town = forms.IntegerField(label=_(u"Town"), widget=widgets.JQueryAutoComplete("/" + settings.URL_PATH + \ 'autocomplete-town', associated_model=models.Town), - validators=[models.Town.valid_id]) + validators=[models.valid_id(models.Town)]) class TownFormSet(FormSet): def clean(self): @@ -338,7 +338,7 @@ class ParcelForm(forms.Form): form_label = _("Parcels") associated_models = {'parcel':models.Parcel} town = forms.ChoiceField(label=_("Town"), choices=(), - validators=[models.Town.valid_id]) + validators=[models.valid_id(models.Town)]) section = forms.CharField(label=_(u"Section"), validators=[MaxLengthValidator(4)]) parcel_number = forms.CharField(label=_(u"Parcel number"), @@ -391,7 +391,7 @@ class FileForm4(forms.Form): widget=widgets.JQueryAutoComplete( reverse_lazy('autocomplete-organization'), associated_model=models.Organization), - validators=[models.Organization.valid_id]) + validators=[models.valid_id(models.Organization)]) total_developed_surface = forms.IntegerField( label=_("Total developed surface")) if settings.COUNTRY == 'fr': diff --git a/ishtar/furnitures/models.py b/ishtar/furnitures/models.py index 7e9822b89..abb8c963e 100644 --- a/ishtar/furnitures/models.py +++ b/ishtar/furnitures/models.py @@ -36,11 +36,23 @@ from simple_history.models import HistoricalRecords from ishtar import settings # valid ID validator for models -def valid_id(cls, value): - try: - cls.objects.get(pk=value) - except ObjectDoesNotExist: - raise ValidationError(_(u"Not a valid person.")) +def valid_id(cls): + def func(value): + try: + cls.objects.get(pk=value) + except ObjectDoesNotExist: + raise ValidationError(_(u"Not a valid item.")) + return func + +# unique validator for models +def is_unique(cls, field): + def func(value): + query = {field:value} + try: + assert cls.objects.filter(**query).count() == 0 + except AssertionError: + raise ValidationError(_(u"This item already exist.")) + return func class OwnPerms: """ @@ -137,10 +149,6 @@ class Organization(Address, OwnPerms): ("delete_own_organization", ugettext(u"Can delete own Organization")), ) - @classmethod - def valid_id(cls, value): - valid_id(cls, value) - def __unicode__(self): return self.name @@ -181,10 +189,6 @@ class Person(Address, OwnPerms) : def __unicode__(self): return u"%s %s - %s" % (self.name, self.surname, self.email) - @classmethod - def valid_id(cls, value): - valid_id(cls, value) - class IshtarUser(models.Model): user = models.ForeignKey(User, unique=True, related_name='profile', verbose_name=_(u"User")) @@ -591,10 +595,6 @@ class Town(models.Model): return u"%s (%s)" % (self.name, unicode(self.canton)) return self.name - @classmethod - def valid_id(cls, value): - valid_id(cls, value) - class TreatmentType(GeneralType): virtual = models.BooleanField(_(u"Virtual")) class Meta: |
