diff options
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/admin.py | 14 | ||||
-rw-r--r-- | ishtar_common/forms_common.py | 73 | ||||
-rw-r--r-- | ishtar_common/models.py | 2 | ||||
-rw-r--r-- | ishtar_common/templates/ishtar/import_list.html | 3 | ||||
-rw-r--r-- | ishtar_common/urls.py | 5 | ||||
-rw-r--r-- | ishtar_common/views.py | 7 |
6 files changed, 88 insertions, 16 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index 2b706f10a..cf4366bd8 100644 --- a/ishtar_common/admin.py +++ b/ishtar_common/admin.py @@ -1684,7 +1684,6 @@ class ImporterTypeAdmin(admin.ModelAdmin): inlines = [ImporterGroupImporterInline] - class RegexpAdmin(admin.ModelAdmin): list_display = ("name", "regexp", "description") @@ -1907,6 +1906,19 @@ class ImportAdmin(admin.ModelAdmin): admin_site.register(models.Import, ImportAdmin) +@admin.register(models.ImportGroup, site=admin_site) +class ImportGroupAdmin(admin.ModelAdmin): + list_display = ( + "name", + "importer_type", + "imported_file", + "user", + "state", + "creation_date", + ) + autocomplete_fields = ["user"] + + class TargetKeyGroupAdmin(admin.ModelAdmin): list_display = ("name", "all_user_can_use", "all_user_can_modify", "available") search_fields = ("name",) diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py index 197b5a03c..1b62dcf49 100644 --- a/ishtar_common/forms_common.py +++ b/ishtar_common/forms_common.py @@ -217,12 +217,12 @@ class BaseImportForm(IshtarForm, forms.ModelForm): "name", "importer_type", "imported_file", + "associated_group", "encoding", "csv_sep", + "skip_lines", "imported_images", "imported_images_link", - "associated_group", - "skip_lines", ) widgets = { "imported_file": widgets.BSClearableFileInput, @@ -231,11 +231,28 @@ class BaseImportForm(IshtarForm, forms.ModelForm): HEADERS = { "name": FormHeader(_("Import (table)")), + "encoding": FormHeader(_("CSV options")), } def __init__(self, *args, **kwargs): user = kwargs.pop("user") super(BaseImportForm, self).__init__(*args, **kwargs) + self._filter_group(user) + self._filter_importer_type() + 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(available=True, + type=self.importer_type) + ] + + def _filter_group(self, user): groups = models.TargetKeyGroup.objects.filter(available=True) if not user.is_superuser: groups = groups.filter(all_user_can_use=True) @@ -245,16 +262,6 @@ class BaseImportForm(IshtarForm, forms.ModelForm): self.fields["associated_group"].choices = [(None, "--")] + [ (g.pk, str(g)) for g in groups.all() ] - self.fields["importer_type"].choices = [("", "--")] + [ - (imp.pk, imp.name) - for imp in models.ImporterType.objects.filter(available=True, - type=self.importer_type) - ] - 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() BAD_CHARS = ["é", "³", "ô", "Ã\xa0", "é"] @@ -312,16 +319,18 @@ class NewImportForm(BaseImportForm): "name", "importer_type", "imported_file", + "associated_group", "encoding", "csv_sep", + "skip_lines", "imported_images", "imported_images_link", - "associated_group", - "skip_lines", ) HEADERS = { "name": FormHeader(_("Import (table)")), + "encoding": FormHeader(_("CSV options")), + "imported_images": FormHeader(_("Documents/Images")), } def clean(self): @@ -389,14 +398,15 @@ class NewImportGISForm(BaseImportForm): "name", "importer_type", "imported_file", + "associated_group", "encoding", "csv_sep", - "associated_group", "skip_lines", ) HEADERS = { "name": FormHeader(_("Import (GIS)")), + "encoding": FormHeader(_("CSV options")), } def __init__(self, *args, **kwargs): @@ -439,6 +449,39 @@ class NewImportGISForm(BaseImportForm): return item +class NewImportGroupForm(NewImportForm): + error_css_class = "error" + required_css_class = "required" + + class Meta: + model = models.ImportGroup + fields = ( + "name", + "importer_type", + "imported_file", + "encoding", + "csv_sep", + "skip_lines", + "imported_images", + "imported_images_link", + ) + + HEADERS = { + "name": FormHeader(_("Import (group)")), + "encoding": FormHeader(_("CSV options")), + "imported_images": FormHeader(_("Documents/Images")), + } + + def _filter_importer_type(self): + self.fields["importer_type"].choices = [("", "--")] + [ + (imp.pk, imp.name) + for imp in models.ImporterGroup.objects.filter(available=True) + ] + + def _filter_group(self, user): + pass + + class TargetKeyForm(forms.ModelForm): class Meta: model = models.TargetKey diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 6cc31216c..607184e41 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -120,6 +120,7 @@ from ishtar_common.models_imports import ( TargetKey, FormaterType, Import, + ImportGroup, TargetKeyGroup, ValueFormater, ItemKey, @@ -177,6 +178,7 @@ __all__ = [ "ImporterModel", "ImporterType", "ImporterGroup", + "ImportGroup", "ImporterGroupImporter", "ImporterDefault", "ImporterDefaultValues", diff --git a/ishtar_common/templates/ishtar/import_list.html b/ishtar_common/templates/ishtar/import_list.html index 2f1872610..1b78e62c4 100644 --- a/ishtar_common/templates/ishtar/import_list.html +++ b/ishtar_common/templates/ishtar/import_list.html @@ -23,6 +23,9 @@ <a href="{% url 'new_import_gis' %}" class="btn btn-success"> <i class="fa fa-plus"></i> {% trans 'import (GIS)' %} </a> + <a href="{% url 'new_import_group' %}" class="btn btn-success"> + <i class="fa fa-plus"></i> {% trans 'import (group)' %} + </a> </div> <div id="import-container"> {% include "ishtar/import_table.html" %} diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py index 7b0c69a68..9209eea09 100644 --- a/ishtar_common/urls.py +++ b/ishtar_common/urls.py @@ -224,6 +224,11 @@ urlpatterns = [ name="new_import_gis", ), url( + r"^import-new-group/$", + check_rights(["change_import"])(views.NewImportGroupView.as_view()), + name="new_import_group", + ), + url( r"^import-list/$", check_rights(["change_import"])(views.ImportListView.as_view()), name="current_imports", diff --git a/ishtar_common/views.py b/ishtar_common/views.py index db493fd37..b58ab024a 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1513,6 +1513,13 @@ class NewImportGISView(NewImportView): page_name = _("Import: create (GIS)") +class NewImportGroupView(NewImportView): + template_name = "ishtar/form.html" + model = models.Import + form_class = forms.NewImportGroupForm + page_name = _("Import: create (group)") + + class ImportListView(IshtarMixin, LoginRequiredMixin, ListView): template_name = "ishtar/import_list.html" model = models.Import |