summaryrefslogtreecommitdiff
path: root/ishtar_common/tasks.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/tasks.py')
-rw-r--r--ishtar_common/tasks.py59
1 files changed, 50 insertions, 9 deletions
diff --git a/ishtar_common/tasks.py b/ishtar_common/tasks.py
index 631996684..2a968eb0a 100644
--- a/ishtar_common/tasks.py
+++ b/ishtar_common/tasks.py
@@ -28,7 +28,7 @@ from django.db.models import Q
from ishtar_common.models import Town, Department
from ishtar_common.utils import task
-from ishtar_common.serializers import full_serialization
+from ishtar_common.serializers import full_serialization, restore_serialized
from archaeological_operations.models import Operation, ArchaeologicalSite
from archaeological_context_records.models import ContextRecord
@@ -42,6 +42,21 @@ from archaeological_warehouse.views import get_warehouse
@task()
+def launch_import(import_task):
+ if import_task.state != 'S':
+ return
+ import_task.launch_date = datetime.datetime.now()
+ import_task.state = 'P'
+ import_task.save()
+
+ restore_serialized(import_task.source.path,
+ delete_existing=import_task.delete_before)
+ import_task.finished_date = datetime.datetime.now()
+ import_task.state = 'F'
+ import_task.save()
+
+
+@task()
def launch_export(export_task):
if export_task.state != 'S':
return
@@ -49,42 +64,68 @@ def launch_export(export_task):
export_task.state = 'P'
export_task.save()
- kwargs = {}
+ kwargs = {"info": {}}
+
+ for fltr_key in ("export_types", "export_conf", "export_importers",
+ "export_geo", "export_dir", "export_docs", "export_items"):
+ kwargs["info"][fltr_key] = getattr(export_task, fltr_key)
+ kwargs[fltr_key] = getattr(export_task, fltr_key)
+
if export_task.filter_type and export_task.filter_text:
query = {"search_vector": export_task.filter_text}
- kwargs["info"] = {"query": {"filter": export_task.filter_text}}
+ kwargs["info"]["query"] = {"filter": export_task.filter_text}
if export_task.filter_type == "O":
kwargs["info"]["query"]["model"] = "Operation"
ids = list(
get_operation(
None, query=query, return_query=True).values_list(
"id", flat=True))
- kwargs["operation_queryset"] = Operation.objects.filter(pk__in=ids)
+ if not ids:
+ kwargs["operation_queryset"] = Operation.objects.filter(
+ pk=-1)
+ else:
+ 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))
- kwargs["site_queryset"] = ArchaeologicalSite.objects.filter(
- pk__in=ids)
+ if not ids:
+ kwargs["site_queryset"] = ArchaeologicalSite.objects.filter(
+ pk=-1)
+ else:
+ 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))
- kwargs["cr_queryset"] = ContextRecord.objects.filter(pk__in=ids)
+ if not ids:
+ kwargs["cr_queryset"] = ContextRecord.objects.filter(pk=-1)
+ else:
+ 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))
- kwargs["find_queryset"] = Find.objects.filter(pk__in=ids)
+ if not ids:
+ kwargs["find_queryset"] = Find.objects.filter(pk=-1)
+ else:
+ 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))
- kwargs["warehouse_queryset"] = Warehouse.objects.filter(pk__in=ids)
+ if not ids:
+ kwargs["warehouse_queryset"] = Warehouse.objects.filter(pk=-1)
+ else:
+ kwargs["warehouse_queryset"] = Warehouse.objects.filter(
+ pk__in=ids)
+ kwargs["info"]["geo"] = export_task.geo
if not export_task.geo:
kwargs["no_geo"] = True
archive_name = full_serialization(**kwargs)