diff options
Diffstat (limited to 'ishtar_common/models_common.py')
-rw-r--r-- | ishtar_common/models_common.py | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py index 9ad73f314..613c54fac 100644 --- a/ishtar_common/models_common.py +++ b/ishtar_common/models_common.py @@ -844,8 +844,8 @@ class TemplateItem: return templates -class SheetFilter(models.Model): - key = models.CharField(_("Key"), max_length=200) +class BaseSheetFilter(models.Model): + key = models.TextField(_("Key"), default="-") class Meta: abstract = True @@ -873,6 +873,45 @@ class SheetFilter(models.Model): return sorted(set(keys)) +class SheetFilter(BaseSheetFilter): + content_type = models.ForeignKey( + ContentType, related_name="content_type_sheetfilter", on_delete=models.CASCADE + ) + exclude_or_include = models.CharField( + _("Exclude or include"), + default="E", + max_length=1, + choices=(("E", _("exclude")), ("I", _("Include"))) + ) + + class Meta: + verbose_name = _("Sheet filter") + verbose_name_plural = _("Sheet filters") + ADMIN_SECTION = _("Account") + + def get_template(self): + ct = self.content_type + model = apps.get_model(ct.app_label, ct.model) + tpl = loader.get_template(f"ishtar/sheet_{model.SLUG}.html") + return tpl.template.origin.name + + +class FilteredSheet(models.Model): + name = models.CharField(_("Name"), max_length=200) + content_type = models.ForeignKey( + ContentType, related_name="content_type_filteredsheet", on_delete=models.CASCADE + ) + filters = models.ManyToManyField( + SheetFilter, blank=True, verbose_name=_("Filters"), + related_name="filtered_sheet" + ) + + class Meta: + verbose_name = _("Filtered sheet") + verbose_name_plural = _("Filtered sheets") + ADMIN_SECTION = _("Account") + + class FullSearch(models.Model): search_vector = SearchVectorField( _("Search vector"), blank=True, null=True, help_text=_("Auto filled at save") |