summaryrefslogtreecommitdiff
path: root/ishtar_common/models_imports.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2026-01-21 12:34:57 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2026-01-21 17:05:17 +0100
commit3bd682b730198c69f76366ef456893c9d2b68fb3 (patch)
tree9f8d94bb4c66787977392b565ba901373b1b3e51 /ishtar_common/models_imports.py
parentf627155f8d6a5505477d1cc52109356a1cfa4c24 (diff)
downloadIshtar-3bd682b730198c69f76366ef456893c9d2b68fb3.tar.bz2
Ishtar-3bd682b730198c69f76366ef456893c9d2b68fb3.zip
🐛 GIS API: fix permissions - improve regenerate permissions
Diffstat (limited to 'ishtar_common/models_imports.py')
-rw-r--r--ishtar_common/models_imports.py36
1 files changed, 24 insertions, 12 deletions
diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py
index c114aff2c..1c0bd4fa4 100644
--- a/ishtar_common/models_imports.py
+++ b/ishtar_common/models_imports.py
@@ -251,14 +251,6 @@ class ImporterType(models.Model):
verbose_name = _("Importer - Type")
verbose_name_plural = _("Importer - Types")
ordering = ("name",)
- # own is defined by users
- # change permission need view permission
- permissions = (
- ("view_gis_importer", "Can export to QGIS"),
- ("view_own_gis_importer", "Can export own to QGIS"),
- ("change_gis_importer", "Can import from QGIS"),
- ("change_own_gis_importer", "Can import own to QGIS"),
- )
ADMIN_SECTION = _("Imports")
def natural_key(self):
@@ -286,19 +278,35 @@ class ImporterType(models.Model):
)
@classmethod
- def q_qgis_importers(cls, ishtaruser):
+ def _q_qgis_importers(cls, action, ishtaruser):
"""
Return QGIS importer query
+ - action : "view" or "change"
"""
# filter available according to permissions
q = cls.objects.filter(type="qgs", available=True)
- if not ishtaruser.is_superuser and not ishtaruser.has_permission(
- "change_gis_importer"):
- if not ishtaruser.has_permission("change_own_gis_importer"):
+ if not ishtaruser.is_superuser and \
+ not ishtaruser.has_permission("ishtaradmin") and \
+ not ishtaruser.has_permission(f"ishtar_common.{action}_gis_import"):
+ if not ishtaruser.has_permission(f"ishtar_common.{action}_own_gis_import"):
return q.filter(pk__isnull=True)
q = q.filter(users__pk=ishtaruser.pk)
return q
+ @classmethod
+ def q_qgis_importers(cls, ishtaruser):
+ """
+ Return QGIS importer query with view permission
+ """
+ return cls._q_qgis_importers("view", ishtaruser)
+
+ @classmethod
+ def q_qgis_change_importers(cls, ishtaruser):
+ """
+ Return QGIS importer query with change permission
+ """
+ return cls._q_qgis_importers("change", ishtaruser)
+
@property
def type_label(self):
if self.type in IMPORT_TYPES_DICT:
@@ -2246,6 +2254,10 @@ class Import(BaseImport):
("add_own_import", "Can add own Import"),
("change_own_import", "Can change own Import"),
("delete_own_import", "Can delete own Import"),
+ ("view_gis_import", "Can export to QGIS"),
+ ("view_own_gis_import", "Can export own to QGIS"),
+ ("change_gis_import", "Can import from QGIS"),
+ ("change_own_gis_import", "Can import own to QGIS"),
)
ADMIN_SECTION = _("Imports")
SLUG = "import"