diff options
Diffstat (limited to 'ishtar_common/models_common.py')
-rw-r--r-- | ishtar_common/models_common.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py index 4a266af9c..cd6c266ef 100644 --- a/ishtar_common/models_common.py +++ b/ishtar_common/models_common.py @@ -730,6 +730,7 @@ class GeneralType(Cached, models.Model): class OrderedModel(models.Model): order = models.IntegerField(_("Order"), default=10) + class Meta: abstract = True @@ -1553,6 +1554,7 @@ class BaseHistorizedItem( Historized item with external ID management. All historized items are searchable and have a data json field. Historized items can be "locked" for edition. + Historized items can have associated ishtar user for permission management """ IS_BASKET = False @@ -1591,6 +1593,12 @@ class BaseHistorizedItem( blank=True, null=True, ) + ishtar_users = models.ManyToManyField( + "ishtar_common.IshtarUser", blank=True, related_name='%(class)s_permission_associated' + ) + + class Meta: + abstract = True DATED_FIELDS = [ "created", @@ -3059,6 +3067,37 @@ class GeographicItem(models.Model): return lst +class PermissionRequest(models.Model): + name = models.CharField(_("Name"), max_length=200) + slug = models.SlugField(_("Slug"), unique=True) + model = models.ForeignKey(ContentType, related_name="permissions", + verbose_name=_("Model"), on_delete=models.CASCADE) + request = models.TextField( + _("Request"), blank=True, null=False, default="", + help_text=_("Use 'text' request used in Ishtar search input") + ) + limit_to_attached_areas = models.BooleanField( + _("Limit request to attached areas"), default=False, + help_text=_("Request is limited to areas attached to the ishtar user") + ) + include_associated_items = models.BooleanField( + _("Include associated items"), default=True, + help_text=_("All items associated items match the request") + ) + include_upstream_items = models.BooleanField( + _("Include upstream items"), default=True, + help_text=_( + "All items associated by upstream link math the request. " + "For instance, match is done for all finds associated with own " + "context records") + ) + active = models.BooleanField(_("Active"), default=True) + + class Meta: + verbose_name = _("Permission request") + verbose_name_plural = _("Permissions requests") + + class SerializeItem: SERIALIZE_EXCLUDE = ["search_vector"] SERIALIZE_PROPERTIES = [ |