diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-04-29 11:12:07 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-06-17 13:21:27 +0200 |
commit | 2adf65aad9a99158da6eef7468dde7badd434b1e (patch) | |
tree | 239064507748fcde0dc8b1f6bdab7ebcbf2ed68e /ishtar_common/models.py | |
parent | aab04bcf162d1264f7612b729a0dfe3177f24d3f (diff) | |
download | Ishtar-2adf65aad9a99158da6eef7468dde7badd434b1e.tar.bz2 Ishtar-2adf65aad9a99158da6eef7468dde7badd434b1e.zip |
Document templates: adapt models to manage labels
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 74151fa31..43267f6df 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -3037,12 +3037,12 @@ class Dashboard(object): avrg = self.get_average(vals) return self.get_average([(x - avrg) ** 2 for x in vals]) - def get_standard_deviation(self, vals=[]): + def get_standard_deviation(self, vals=None): if not vals: vals = self.numbers[:] return round(self.get_variance(vals) ** 0.5, 3) - def get_median(self, vals=[]): + def get_median(self, vals=None): if not vals: vals = self.numbers[:] len_vals = len(vals) @@ -3053,7 +3053,7 @@ class Dashboard(object): return (vals[int(len_vals / 2) - 1] + vals[int(len_vals / 2)]) / 2.0 - def get_mode(self, vals={}): + def get_mode(self, vals=None): if not vals: vals = dict(zip(self.periods, self.numbers[:])) mx = max(vals.values()) @@ -3063,22 +3063,24 @@ class Dashboard(object): class DocumentTemplate(models.Model): - CLASSNAMES = (('archaeological_operations.models.AdministrativeAct', - _("Administrative Act")),) name = models.CharField(_("Name"), max_length=100) slug = models.SlugField(_("Slug"), blank=True, null=True, max_length=100, unique=True) + associated_model = models.ForeignKey(ImporterModel) template = models.FileField( _("Template"), upload_to="templates/%Y/", help_text=max_size_help()) - associated_object_name = models.CharField( - _("Associated object"), max_length=100, choices=CLASSNAMES) available = models.BooleanField(_("Available"), default=True) + for_labels = models.BooleanField(_("Used for labels"), default=False) + label_per_page = models.IntegerField( + _("Number of label per page"), blank=True, null=True, + help_text=_("Only relevant for label template") + ) objects = SlugModelManager() class Meta: verbose_name = _("Document template") verbose_name_plural = _("Document templates") - ordering = ['associated_object_name', 'name'] + ordering = ['associated_model', 'name'] def __str__(self): return self.name @@ -3086,13 +3088,20 @@ class DocumentTemplate(models.Model): def natural_key(self): return (self.slug,) + def clean(self): + if self.for_labels and not self.label_per_page: + raise ValidationError(_("For label template, you must provide " + "number of label per page.")) + def save(self, *args, **kwargs): if not self.slug: self.slug = create_slug(DocumentTemplate, self.name) return super(DocumentTemplate, self).save(*args, **kwargs) @classmethod - def get_tuples(cls, dct={}, empty_first=True): + def get_tuples(cls, dct=None, empty_first=True): + if not dct: + dct = {} dct['available'] = True if empty_first: yield ('', '----------') |