summaryrefslogtreecommitdiff
path: root/ishtar_common/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r--ishtar_common/models.py61
1 files changed, 61 insertions, 0 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 0a5fc30bf..b3cc807a8 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -5675,3 +5675,64 @@ class AdministrationTask(models.Model):
self.state = 'F'
self.result = "{}".format(stdout.decode('utf-8'))
self.save()
+
+
+ITEM_TYPES = (
+ ("O", _("Operation")),
+ ("S", _("Archaeological site")),
+ ("CR", _("Context record")),
+ ("F", _("Find")),
+ ("W", _("Warehouse")),
+)
+
+
+EXPORT_STATE = (("C", _("Created")),) + SCRIPT_STATE
+
+
+class ExportTask(models.Model):
+ filter_type = models.CharField(
+ _("Filter on"), max_length=2, choices=ITEM_TYPES, null=True, blank=True
+ )
+ filter_text = models.TextField(
+ _("Filter query"), null=True, blank=True,
+ help_text=_("Textual query on this item (try it on the main "
+ "interface)"))
+ geo = models.BooleanField(
+ _("Export geographic data"), default=True,
+ help_text=_("Geographic data can represent large volume of "
+ "information. Geographic data can be excluded from the "
+ "export"))
+ state = models.CharField(_("State"), max_length=2, choices=EXPORT_STATE,
+ default='C')
+ creation_date = models.DateTimeField(default=datetime.datetime.now)
+ launch_date = models.DateTimeField(null=True, blank=True)
+ finished_date = models.DateTimeField(null=True, blank=True)
+ result = models.FileField(_("Result"), null=True, blank=True,
+ upload_to="exports")
+
+ class Meta:
+ verbose_name = _("Export task")
+ verbose_name_plural = _("Export tasks")
+ ordering = ['creation_date']
+
+ def __str__(self):
+ state = _("Unknown")
+ if self.state in SCRIPT_STATE_DCT:
+ state = str(SCRIPT_STATE_DCT[self.state])
+ return "Export - {} - {}".format(self.creation_date, state)
+
+ @property
+ def label(self):
+ fltr = _("Whole database")
+ if self.filter_type and self.filter_text:
+ dct = dict(ITEM_TYPES)
+ if self.filter_type in dct:
+ fltr = '{} "{}"'.format(dct[self.filter_type], self.filter_text)
+ return "{} - {}".format(fltr, self.creation_date)
+
+ def clean(self):
+ if (self.filter_text and not self.filter_type) or (
+ self.filter_type and not self.filter_type):
+ raise ValidationError(
+ _("To filter filter type and filter text must be filled.")
+ )