summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-09 14:50:19 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-09 14:50:19 +0200
commit70a013173a76737fda89ef7777013194cca0219e (patch)
tree578a0b57c6b0b0c565dfb24529de52487ea6bbab
parent4995e058f718507800ffd261131338b2dd9ef972 (diff)
downloadIshtar-70a013173a76737fda89ef7777013194cca0219e.tar.bz2
Ishtar-70a013173a76737fda89ef7777013194cca0219e.zip
Serializations: do not export empty set
-rw-r--r--ishtar_common/admin.py6
-rw-r--r--ishtar_common/migrations/0103_auto_20190909_1342.py5
-rw-r--r--ishtar_common/models.py2
-rw-r--r--ishtar_common/tasks.py49
4 files changed, 39 insertions, 23 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index 25dffcf72..eb2ac3a0b 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -1436,10 +1436,10 @@ launch_export_action.short_description = _("Launch export")
class ExportTaskAdmin(admin.ModelAdmin):
- readonly_fields = ("result", )
+ readonly_fields = ("result", "result_info")
exclude = ('creation_date', 'launch_date', 'finished_date')
- list_display = ["label", 'state', 'creation_date', 'launch_date',
- 'finished_date']
+ list_display = ["label", 'state', "result_info", 'creation_date',
+ 'launch_date', 'finished_date']
list_filter = ['state']
actions = [launch_export_action]
diff --git a/ishtar_common/migrations/0103_auto_20190909_1342.py b/ishtar_common/migrations/0103_auto_20190909_1342.py
index ef03725e9..cc884d4e7 100644
--- a/ishtar_common/migrations/0103_auto_20190909_1342.py
+++ b/ishtar_common/migrations/0103_auto_20190909_1342.py
@@ -20,6 +20,11 @@ class Migration(migrations.Migration):
operations = [
migrations.AddField(
model_name='exporttask',
+ name='result_info',
+ field=models.TextField(blank=True, null=True, verbose_name='Result information'),
+ ),
+ migrations.AddField(
+ model_name='exporttask',
name='export_conf',
field=models.BooleanField(default=True, verbose_name='Export configuration'),
),
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index bcec9931e..815c86d07 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -5716,6 +5716,8 @@ class ExportTask(models.Model):
finished_date = models.DateTimeField(null=True, blank=True)
result = models.FileField(_("Result"), null=True, blank=True,
upload_to="exports")
+ result_info = models.TextField(_("Result information"), null=True,
+ blank=True)
class Meta:
verbose_name = _("Export task")
diff --git a/ishtar_common/tasks.py b/ishtar_common/tasks.py
index 2a968eb0a..91695397f 100644
--- a/ishtar_common/tasks.py
+++ b/ishtar_common/tasks.py
@@ -25,6 +25,7 @@ import sys
from django.conf import settings
from django.core.files import File
from django.db.models import Q
+from django.utils.translation import ugettext_lazy as _
from ishtar_common.models import Town, Department
from ishtar_common.utils import task
@@ -81,50 +82,58 @@ def launch_export(export_task):
None, query=query, return_query=True).values_list(
"id", flat=True))
if not ids:
- kwargs["operation_queryset"] = Operation.objects.filter(
- pk=-1)
- else:
- kwargs["operation_queryset"] = Operation.objects.filter(
- pk__in=ids)
+ export_task.state = 'F'
+ export_task.result_info = str(_("No data to export"))
+ export_task.save()
+ return
+ kwargs["operation_queryset"] = Operation.objects.filter(
+ pk__in=ids)
elif export_task.filter_type == "S":
kwargs["info"]["query"]["model"] = "ArchaeologicalSite"
ids = list(get_site(
None, query=query, return_query=True).values_list(
"id", flat=True))
if not ids:
- kwargs["site_queryset"] = ArchaeologicalSite.objects.filter(
- pk=-1)
- else:
- kwargs["site_queryset"] = ArchaeologicalSite.objects.filter(
- pk__in=ids)
+ export_task.state = 'F'
+ export_task.result_info = str(_("No data to export"))
+ export_task.save()
+ return
+ kwargs["site_queryset"] = ArchaeologicalSite.objects.filter(
+ pk__in=ids)
elif export_task.filter_type == "CR":
kwargs["info"]["query"]["model"] = "ArchaeologicalSite"
ids = list(get_contextrecord(
None, query=query, return_query=True).values_list(
"id", flat=True))
if not ids:
- kwargs["cr_queryset"] = ContextRecord.objects.filter(pk=-1)
- else:
- kwargs["cr_queryset"] = ContextRecord.objects.filter(pk__in=ids)
+ export_task.state = 'F'
+ export_task.result_info = str(_("No data to export"))
+ export_task.save()
+ return
+ kwargs["cr_queryset"] = ContextRecord.objects.filter(pk__in=ids)
elif export_task.filter_type == "F":
kwargs["info"]["query"]["model"] = "Find"
ids = list(get_find(
None, query=query, return_query=True
).values_list("id", flat=True))
if not ids:
- kwargs["find_queryset"] = Find.objects.filter(pk=-1)
- else:
- kwargs["find_queryset"] = Find.objects.filter(pk__in=ids)
+ export_task.state = 'F'
+ export_task.result_info = str(_("No data to export"))
+ export_task.save()
+ return
+ kwargs["find_queryset"] = Find.objects.filter(pk__in=ids)
elif export_task.filter_type == "W":
kwargs["info"]["query"]["model"] = "Warehouse"
ids = list(get_warehouse(
None, query=query, return_query=True
).values_list("id", flat=True))
if not ids:
- kwargs["warehouse_queryset"] = Warehouse.objects.filter(pk=-1)
- else:
- kwargs["warehouse_queryset"] = Warehouse.objects.filter(
- pk__in=ids)
+ export_task.state = 'F'
+ export_task.result_info = str(_("No data to export"))
+ export_task.save()
+ return
+ kwargs["warehouse_queryset"] = Warehouse.objects.filter(
+ pk__in=ids)
kwargs["info"]["geo"] = export_task.geo
if not export_task.geo:
kwargs["no_geo"] = True