Skip to content
Snippets Groups Projects

Resolve "add delete datafile api endpoint"

Merged Jonathan Séguin requested to merge 136-add-delete-datafile-api-endpoint into master
Files
2
+ 34
3
@@ -4,10 +4,14 @@ import logging
from django.contrib.auth.mixins import LoginRequiredMixin
from django.db.models import Q
from django.shortcuts import get_object_or_404
from django.views.generic import TemplateView
from django.views.generic import TemplateView, View
from django.http import JsonResponse
# from django.views.generic.detail import SingleObjectMixin
from django.views.generic.detail import BaseDetailView, SingleObjectMixin
from django.utils.translation import ugettext_lazy as _
from portal.views import TokenLoginMixin
from portal.views import TokenLoginMixin, SlugMixin
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator
from ...models import DataFile, DataSet, Profile
from ...views import JSONListView, JSONView, StaffViewMixin, ActivePageViewMixin
@@ -89,6 +93,33 @@ class DataFileMetadataJSONView(TokenLoginMixin, JSONView):
return metadata
class DataFileDeleteJSONView(TokenLoginMixin, SlugMixin, BaseDetailView):
model = DataFile
http_method_names = ["delete"]
@method_decorator(csrf_exempt, name='dispatch')
def dispatch(self, *args, **kwargs):
method = self.request.POST.get('_method', '').lower()
if method == 'delete':
return self.delete(*args, **kwargs)
return super(DataFileDeleteJSONView, self).dispatch(*args, **kwargs)
def delete(self, request, *args, **kwargs):
try:
o = self.get_object()
except Exception as e:
return JsonResponse({'error': _('File cannot be found')}, status=403)
if o in DataFile.objects.editable_by_profile(self.request.user.profile).all():
iric_data_id = o.iric_data_id
try:
o.delete()
return JsonResponse({'success': _(f'DataFile {iric_data_id} succesfully deleted')}, status=202)
except Exception as e:
return JsonResponse({'error': e.msg}, status=500)
return JsonResponse({'error': _('You are not authorized to delete this file')}, status=403)
# DataSet API Views #######
class AdminDataSetJSONListView(TokenLoginMixin, JSONListView):
model = DataSet
Loading