diff options
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 |
commit | f4f482cd4074898f5344a3a078e27800bbd060fd (patch) | |
tree | 46a317f0f5de7b0177206ac5b965be794ff2b2af /ishtar_common/forms_common.py | |
parent | e008dd87b2eafd88cec3d75d0b3b4c92ce891f23 (diff) | |
download | Ishtar-f4f482cd4074898f5344a3a078e27800bbd060fd.tar.bz2 Ishtar-f4f482cd4074898f5344a3a078e27800bbd060fd.zip |
✨ refactoring import permissions
Diffstat (limited to 'ishtar_common/forms_common.py')
-rw-r--r-- | ishtar_common/forms_common.py | 33 |
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): |