summaryrefslogtreecommitdiff
path: root/ishtar_common/forms_common.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2023-10-26 17:03:41 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2024-04-16 16:38:32 +0200
commitf4f482cd4074898f5344a3a078e27800bbd060fd (patch)
tree46a317f0f5de7b0177206ac5b965be794ff2b2af /ishtar_common/forms_common.py
parente008dd87b2eafd88cec3d75d0b3b4c92ce891f23 (diff)
downloadIshtar-f4f482cd4074898f5344a3a078e27800bbd060fd.tar.bz2
Ishtar-f4f482cd4074898f5344a3a078e27800bbd060fd.zip
✨ refactoring import permissions
Diffstat (limited to 'ishtar_common/forms_common.py')
-rw-r--r--ishtar_common/forms_common.py33
1 files changed, 24 insertions, 9 deletions
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index dd3a83971..0d739fbfb 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -246,19 +246,31 @@ class BaseImportForm(IshtarForm, forms.ModelForm):
super().__init__(*args, **kwargs)
self.fields["imported_file"].required = True
self._filter_group(user)
- self._filter_importer_type()
+ self._filter_importer_type(user)
if "imported_images" in self.fields:
self.fields["imported_images"].validators = [file_size_validator]
self.fields["imported_file"].validators = [file_size_validator]
self._post_init()
- def _filter_importer_type(self):
- self.fields["importer_type"].choices = [("", "--")] + [
- (imp.pk, imp.name)
- for imp in models.ImporterType.objects.filter(
+ def _filter_importer_type_query(self, q, user):
+ if user.is_superuser or user.ishtaruser.has_right("add_import"):
+ return q
+ if not user.ishtaruser.has_right("add_own_import"):
+ self.fields["importer_type"].choices = [("", "--")]
+ return
+ q = q.filter(users__pk=user.ishtaruser.pk)
+ return q
+
+ def _filter_importer_type(self, user):
+ q = models.ImporterType.objects.filter(
available=True, is_import=True, type=self.importer_type
- )
+ )
+ q = self._filter_importer_type_query(q, user)
+ if not q:
+ return
+ self.fields["importer_type"].choices = [("", "--")] + [
+ (imp.pk, imp.name) for imp in q.all()
]
def _filter_group(self, user):
@@ -511,10 +523,13 @@ class NewImportGroupForm(NewImportForm):
"imported_images": FormHeader(_("Documents/Images")),
}
- def _filter_importer_type(self):
+ def _filter_importer_type(self, user):
+ q = models.ImporterGroup.objects.filter(available=True)
+ q = self._filter_importer_type_query(q, user)
+ if not q:
+ return
self.fields["importer_type"].choices = [("", "--")] + [
- (imp.pk, imp.name)
- for imp in models.ImporterGroup.objects.filter(available=True)
+ (imp.pk, imp.name) for imp in q.all()
]
def _filter_group(self, user):