diff options
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 |
commit | 70a013173a76737fda89ef7777013194cca0219e (patch) | |
tree | 578a0b57c6b0b0c565dfb24529de52487ea6bbab | |
parent | 4995e058f718507800ffd261131338b2dd9ef972 (diff) | |
download | Ishtar-70a013173a76737fda89ef7777013194cca0219e.tar.bz2 Ishtar-70a013173a76737fda89ef7777013194cca0219e.zip |
Serializations: do not export empty set
-rw-r--r-- | ishtar_common/admin.py | 6 | ||||
-rw-r--r-- | ishtar_common/migrations/0103_auto_20190909_1342.py | 5 | ||||
-rw-r--r-- | ishtar_common/models.py | 2 | ||||
-rw-r--r-- | ishtar_common/tasks.py | 49 |
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 |