diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-10-07 17:12:17 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-10-07 17:39:17 +0200 |
commit | 2f526ba22f183ef744cfd7ac7284585f8b318d95 (patch) | |
tree | 7012a072ea14253e1baee745728d75b4c136eaa7 /ishtar_common | |
parent | b0372619f003b5ca8f007b93c9839a62f23ab4fb (diff) | |
download | Ishtar-2f526ba22f183ef744cfd7ac7284585f8b318d95.tar.bz2 Ishtar-2f526ba22f183ef744cfd7ac7284585f8b318d95.zip |
✨ Importer type: add default number of line to skip for CSV - 🗃️ DB: export types for templates
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/forms_common.py | 8 | ||||
-rw-r--r-- | ishtar_common/migrations/0252_export_formats_def_head_len.py | 33 | ||||
-rw-r--r-- | ishtar_common/models.py | 10 | ||||
-rw-r--r-- | ishtar_common/models_imports.py | 41 | ||||
-rw-r--r-- | ishtar_common/templates/ishtar/sheet_import_gen.html | 3 |
5 files changed, 70 insertions, 25 deletions
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py index 479d98315..ce4bc140b 100644 --- a/ishtar_common/forms_common.py +++ b/ishtar_common/forms_common.py @@ -246,6 +246,8 @@ class BaseImportForm(IshtarForm, forms.ModelForm): user = kwargs.pop("user") super().__init__(*args, **kwargs) self.fields["imported_file"].required = True + self.fields["skip_lines"].required = False + self.fields["skip_lines"].initial = None self._filter_group(user) self._filter_importer_type(user) if "imported_images" in self.fields: @@ -413,6 +415,8 @@ class NewImportForm(BaseImportForm): def save(self, user, commit=True): self.instance.user = user + if not self.cleaned_data["skip_lines"]: + self.instance.skip_lines = self.cleaned_data["importer_type"].default_header_len item = super().save(commit) if not self.media_link_is_zip: return item @@ -451,10 +455,6 @@ class NewImportGISForm(BaseImportForm): "encoding": FormHeader(_("CSV options")), } - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.fields["skip_lines"].initial = 0 - def clean_imported_file(self): value = self.cleaned_data.get("imported_file", None) if value: diff --git a/ishtar_common/migrations/0252_export_formats_def_head_len.py b/ishtar_common/migrations/0252_export_formats_def_head_len.py new file mode 100644 index 000000000..386df5384 --- /dev/null +++ b/ishtar_common/migrations/0252_export_formats_def_head_len.py @@ -0,0 +1,33 @@ +# Generated by Django 2.2.24 on 2024-10-07 13:43 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ishtar_common', '0251_data_default_welcome'), + ] + + operations = [ + migrations.AddField( + model_name='documenttemplate', + name='export_format', + field=models.CharField(blank=True, choices=[('xlsx', 'XLSX'), ('pdf', 'PDF')], default='', max_length=4, verbose_name='Export format'), + ), + migrations.AddField( + model_name='importertype', + name='default_header_len', + field=models.PositiveSmallIntegerField(default=1, verbose_name='Default header length'), + ), + migrations.AlterField( + model_name='importertype', + name='is_import', + field=models.BooleanField(default=True, verbose_name='Can be imported'), + ), + migrations.AlterField( + model_name='ishtarsiteprofile', + name='homepage', + field=models.TextField(blank=True, default='', help_text='Homepage of Ishtar - if not defined a default homepage will appear. Use HTML or markdown syntax.', verbose_name='Home page'), + ), + ] diff --git a/ishtar_common/models.py b/ishtar_common/models.py index a827fa902..73f140625 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -2057,6 +2057,15 @@ class Dashboard(object): return v +EXPORT_FORMATS = [] + +if settings.USE_LIBREOFFICE: + EXPORT_FORMATS.append(("xlsx", _("XLSX"))) + EXPORT_FORMATS.append(("pdf", _("PDF"))) + +EXPORT_FORMATS_DICT = dict(EXPORT_FORMATS) + + class DocumentTemplate(models.Model): name = models.CharField(_("Name"), max_length=100) slug = models.SlugField(_("Slug"), max_length=100, unique=True) @@ -2068,6 +2077,7 @@ class DocumentTemplate(models.Model): null=True, help_text=max_size_help(), ) + export_format = models.CharField(_("Export format"), max_length=4, choices=EXPORT_FORMATS, blank=True, default="") label_template = models.FileField( _("Base template for labels"), upload_to="templates/%Y/", diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py index 836676c03..a499a9b12 100644 --- a/ishtar_common/models_imports.py +++ b/ishtar_common/models_imports.py @@ -162,22 +162,7 @@ class ImporterType(models.Model): type = models.CharField( _("Type"), max_length=3, choices=IMPORT_TYPES, default="tab" ) - tab_number = models.PositiveIntegerField( - _("Tab number"), default=1, validators=[MinValueValidator(1)], - help_text=_("When using an Excel or Calc file choose the tab number. Keep it to 1 by default.") - ) - layer_name = models.CharField( - _("Layer name"), - max_length=200, - blank=True, - null=True, - help_text=_("For GIS file with multiple layers"), - ) - is_main_geometry = models.BooleanField( - _("Set as main geometry"), - default=True, - help_text=_("Only relevant for GIS files"), - ) + available = models.BooleanField(_("Available"), default=True) users = models.ManyToManyField("IshtarUser", verbose_name=_("Users"), blank=True) associated_models = models.ForeignKey( ImporterModel, @@ -194,16 +179,32 @@ class ImporterType(models.Model): help_text=_("Leave blank for no restrictions"), related_name="importer_type_created", ) - is_template = models.BooleanField(_("Can be exported"), default=False) - is_import = models.BooleanField(_("Can be import"), default=True) - archive_required = models.BooleanField(_("Archive required"), default=False) unicity_keys = models.CharField( _('Unicity keys (separator ";")'), blank=True, null=True, max_length=500, help_text=_("Mandatory for update importer. Set to key that identify items " "without ambiguity. Warning: __ is not supported, only use level " "1 key.") ) - available = models.BooleanField(_("Available"), default=True) + is_main_geometry = models.BooleanField( + _("Set as main geometry"), + default=True, + help_text=_("Only relevant for GIS files"), + ) + is_import = models.BooleanField(_("Can be imported"), default=True) + is_template = models.BooleanField(_("Can be exported"), default=False) + default_header_len = models.PositiveSmallIntegerField(_("Default header length"), default=1) + archive_required = models.BooleanField(_("Archive required"), default=False) + tab_number = models.PositiveIntegerField( + _("Tab number"), default=1, validators=[MinValueValidator(1)], + help_text=_("When using an Excel or Calc file choose the tab number. Keep it to 1 by default.") + ) + layer_name = models.CharField( + _("Layer name"), + max_length=200, + blank=True, + null=True, + help_text=_("For GIS file with multiple layers"), + ) pre_import_message = models.TextField( _("Pre-import form message"), blank=True, default="", max_length=500 ) diff --git a/ishtar_common/templates/ishtar/sheet_import_gen.html b/ishtar_common/templates/ishtar/sheet_import_gen.html index 4078c059b..8cb75a7f2 100644 --- a/ishtar_common/templates/ishtar/sheet_import_gen.html +++ b/ishtar_common/templates/ishtar/sheet_import_gen.html @@ -98,7 +98,8 @@ <dt>{% trans "Associated imports" %}</dt> <dd>{% for import in import_list %}{{import|simple_link_to_window}} {{import}}<br>{% endfor %}</dd> </dl> - {% endif %} {% endwith %} + {% endif %}{% endwith %} + {% field_flex _("Number of header lines") item.skip_lines %} </div> |