summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/forms_common.py8
-rw-r--r--ishtar_common/migrations/0252_export_formats_def_head_len.py33
-rw-r--r--ishtar_common/models.py10
-rw-r--r--ishtar_common/models_imports.py41
-rw-r--r--ishtar_common/templates/ishtar/sheet_import_gen.html3
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>