summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commitdfe75c20106e95e91dcc94c6311139f0a453851e (patch)
tree82ed0a8896d0d003052a9e840afe92675d6b186d
parente2f3099bb54a873e948777a8136562bcc4b058a3 (diff)
downloadIshtar-dfe75c20106e95e91dcc94c6311139f0a453851e.tar.bz2
Ishtar-dfe75c20106e95e91dcc94c6311139f0a453851e.zip
Add a unique validator
-rw-r--r--ishtar/furnitures/forms.py10
-rw-r--r--ishtar/furnitures/models.py34
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: