summaryrefslogtreecommitdiff
path: root/ishtar_common/models_common.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/models_common.py')
-rw-r--r--ishtar_common/models_common.py39
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 = [