From 8c6588b17a50b2e20ce72750d9c37461cc8f809c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Wed, 21 Jan 2015 15:28:00 +0100 Subject: [PATCH] Make human-friendly the name of the dump files and xut some long lines --- taiga/export_import/api.py | 5 +++-- taiga/export_import/tasks.py | 37 ++++++++++++++++++++++-------------- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/taiga/export_import/api.py b/taiga/export_import/api.py index d198de7d..fff76806 100644 --- a/taiga/export_import/api.py +++ b/taiga/export_import/api.py @@ -65,10 +65,10 @@ class ProjectExporterViewSet(mixins.ImportThrottlingPolicyMixin, GenericViewSet) if settings.CELERY_ENABLED: task = tasks.dump_project.delay(request.user, project) - tasks.delete_project_dump.apply_async((project.pk,), countdown=settings.EXPORTS_TTL) + tasks.delete_project_dump.apply_async((project.pk, project.slug), countdown=settings.EXPORTS_TTL) return Response({"export-id": task.id}, status=status.HTTP_202_ACCEPTED) - path = "exports/{}/{}.json".format(project.pk, uuid.uuid4().hex) + path = "exports/{}/{}-{}.json".format(project.pk, project.slug, uuid.uuid4().hex) content = ContentFile(ExportRenderer().render(service.project_to_dict(project), renderer_context={"indent": 4}).decode('utf-8')) @@ -78,6 +78,7 @@ class ProjectExporterViewSet(mixins.ImportThrottlingPolicyMixin, GenericViewSet) } return Response(response_data, status=status.HTTP_200_OK) + class ProjectImporterViewSet(mixins.ImportThrottlingPolicyMixin, CreateModelMixin, GenericViewSet): model = Project permission_classes = (permissions.ImportExportPermission, ) diff --git a/taiga/export_import/tasks.py b/taiga/export_import/tasks.py index 97b08a8a..108a0417 100644 --- a/taiga/export_import/tasks.py +++ b/taiga/export_import/tasks.py @@ -33,32 +33,41 @@ from .renderers import ExportRenderer @app.task(bind=True) def dump_project(self, user, project): mbuilder = MagicMailBuilder() - - path = "exports/{}/{}.json".format(project.pk, self.request.id) + path = "exports/{}/{}-{}.json".format(project.pk, project.slug, self.request.id) try: - content = ContentFile(ExportRenderer().render(project_to_dict(project), renderer_context={"indent": 4}).decode('utf-8')) + content = ExportRenderer().render(project_to_dict(project), renderer_context={"indent": 4}) + content = content.decode('utf-8') + content = ContentFile(content) + default_storage.save(path, content) url = default_storage.url(path) except Exception: - email = mbuilder.export_import_error( - user.email, - { - "user": user, - "error_subject": "Error generating project dump", - "error_message": "Error generating project dump", - } - ) + ctx = { + "user": user, + "error_subject": "Error generating project dump", + "error_message": "Error generating project dump", + } + email = mbuilder.export_import_error(user.email, ctx) email.send() return + deletion_date = timezone.now() + datetime.timedelta(seconds=settings.EXPORTS_TTL) - email = mbuilder.dump_project(user.email, {"url": url, "project": project, "user": user, "deletion_date": deletion_date}) + ctx = { + "url": url, + "project": project, + "user": user, + "deletion_date": deletion_datei + } + email = mbuilder.dump_project(user.email, ctx) email.send() + @app.task -def delete_project_dump(project_id, task_id): - default_storage.delete("exports/{}/{}.json".format(project_id, task_id)) +def delete_project_dump(project_id, project_slug, task_id): + default_storage.delete("exports/{}/{}-{}.json".format(project_id, project_slug, task_id)) + @app.task def load_project_dump(user, dump):