diff options
| 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 |
| commit | 3bd682b730198c69f76366ef456893c9d2b68fb3 (patch) | |
| tree | 9f8d94bb4c66787977392b565ba901373b1b3e51 /ishtar_common/models_imports.py | |
| parent | f627155f8d6a5505477d1cc52109356a1cfa4c24 (diff) | |
| download | Ishtar-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.py | 36 |
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" |
