diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-10-21 19:41:49 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-02-19 14:43:48 +0100 |
commit | 0b8933306e071f626af0ff2250bca962c1a03090 (patch) | |
tree | 9022a85264942c5bf5fb6db8ffaab01844feced6 /ishtar_common/models_common.py | |
parent | c93dd3812c53d21ab8517dc7af72e1d4b70a1b04 (diff) | |
download | Ishtar-0b8933306e071f626af0ff2250bca962c1a03090.tar.bz2 Ishtar-0b8933306e071f626af0ff2250bca962c1a03090.zip |
🗃️ permissions refactoring: add permission request model - link between main item and ishtar users
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 = [ |