Make human-friendly the name of the dump files and xut some long lines

remotes/origin/enhancement/email-actions
David Barragán Merino 2015-01-21 15:28:00 +01:00
parent df20fc7f45
commit 8c6588b17a
2 changed files with 26 additions and 16 deletions

View File

@ -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, )

View File

@ -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,
{
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):