summaryrefslogtreecommitdiff
path: root/ishtar/ishtar_base/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar/ishtar_base/models.py')
-rw-r--r--ishtar/ishtar_base/models.py43
1 files changed, 31 insertions, 12 deletions
diff --git a/ishtar/ishtar_base/models.py b/ishtar/ishtar_base/models.py
index 37af19f87..ee22b9973 100644
--- a/ishtar/ishtar_base/models.py
+++ b/ishtar/ishtar_base/models.py
@@ -74,7 +74,8 @@ def valid_ids(cls):
try:
cls.objects.get(pk=v)
except ObjectDoesNotExist:
- raise ValidationError(_(u"Not a valid item."))
+ raise ValidationError(
+ _(u"An item selected is not a valid item."))
return func
# unique validator for models
@@ -150,11 +151,11 @@ class GeneralType(models.Model):
return self.label
@classmethod
- def get_help(cls, dct={}):
+ def get_help(cls, dct={}, exclude=[]):
help_text = cls.HELP_TEXT
c_rank = -1
help_items = u"\n"
- for item in cls.get_types(dct=dct, instances=True):
+ for item in cls.get_types(dct=dct, instances=True, exclude=exclude):
if hasattr(item, '__iter__'):
# TODO: manage multiple levels
continue
@@ -175,18 +176,21 @@ class GeneralType(models.Model):
return u""
@classmethod
- def get_types(cls, dct={}, instances=False):
+ def get_types(cls, dct={}, instances=False, exclude=[]):
base_dct = dct.copy()
if hasattr(cls, 'parent'):
- return cls._get_parent_types(base_dct, instances)
- return cls._get_types(base_dct, instances)
+ return cls._get_parent_types(base_dct, instances, exclude=exclude)
+ return cls._get_types(base_dct, instances, exclude=exclude)
@classmethod
- def _get_types(cls, dct={}, instances=False):
+ def _get_types(cls, dct={}, instances=False, exclude=[]):
dct['available'] = True
if not instances:
yield ('', '--')
- for item in cls.objects.filter(**dct).all():
+ items = cls.objects.filter(**dct)
+ if exclude:
+ items = items.exclude(txt_idx__in=exclude)
+ for item in items.all():
if instances:
item.rank = 0
yield item
@@ -196,10 +200,12 @@ class GeneralType(models.Model):
PREFIX = "› "
@classmethod
- def _get_childs(cls, item, dct, prefix=0, instances=False):
+ def _get_childs(cls, item, dct, prefix=0, instances=False, exclude=[]):
prefix += 1
dct['parent'] = item
childs = cls.objects.filter(**dct)
+ if exclude:
+ childs = childs.exclude(txt_idx__in=exclude)
if hasattr(cls, 'order'):
childs = childs.order_by('order')
for child in childs.all():
@@ -209,16 +215,19 @@ class GeneralType(models.Model):
else:
yield (child.pk, SafeUnicode(prefix*cls.PREFIX + \
unicode(_(unicode(child))) ))
- for sub_child in cls._get_childs(child, dct, prefix, instances):
+ for sub_child in cls._get_childs(child, dct, prefix, instances,
+ exclude=exclude):
yield sub_child
@classmethod
- def _get_parent_types(cls, dct={}, instances=False):
+ def _get_parent_types(cls, dct={}, instances=False, exclude=[]):
dct['available'] = True
if not instances:
yield ('', '--')
dct['parent'] = None
items = cls.objects.filter(**dct)
+ if exclude:
+ items = items.exclude(txt_idx__in=exclude)
if hasattr(cls, 'order'):
items = items.order_by('order')
for item in items.all():
@@ -227,7 +236,7 @@ class GeneralType(models.Model):
yield item
else:
yield (item.pk, unicode(item))
- for child in cls._get_childs(item, dct, instances):
+ for child in cls._get_childs(item, dct, instances, exclude=exclude):
yield child
class HistoryError(Exception):
@@ -335,6 +344,10 @@ class LightHistorizedItem(BaseHistorizedItem):
class Meta:
abstract = True
+ def save(self, *args, **kwargs):
+ super(LightHistorizedItem, self).save(*args, **kwargs)
+ return True
+
class Departement(models.Model):
label = models.CharField(_(u"Label"), max_length=30)
number = models.CharField(_(u"Number"), unique=True, max_length=3)
@@ -1129,6 +1142,12 @@ class Container(LightHistorizedItem):
verbose_name = _(u"Container")
verbose_name_plural = _(u"Containers")
+ def __unicode__(self):
+ lbl = self.reference
+ lbl += u" - %s" % unicode(self.container_type)
+ lbl += u" (%s)" % unicode(self.location)
+ return lbl
+
if settings.COUNTRY == 'fr':
class Arrondissement(models.Model):
name = models.CharField(u"Nom", max_length=30)