Add form drafts API (#52)
This commit is contained in:
@ -1,13 +1,16 @@
|
||||
from django.core.mail import send_mail
|
||||
from django.conf import settings
|
||||
from django.views import View
|
||||
from django.views.generic import DetailView
|
||||
from django.views.generic.base import TemplateView
|
||||
from django.views.generic.edit import CreateView
|
||||
from django.http import Http404, HttpResponse
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.urls import reverse
|
||||
from .models import CaseStudy
|
||||
from .models import CaseStudy, CaseStudyDraft
|
||||
from .forms import ShortCaseStudyForm, LongCaseStudyForm
|
||||
|
||||
|
||||
NOTIFY_MESSAGE = """
|
||||
Hello,
|
||||
|
||||
@ -72,3 +75,48 @@ class CaseStudyDetail(DetailView):
|
||||
template_name = "map/detail.html"
|
||||
model = CaseStudy
|
||||
context_object_name = "case_study"
|
||||
|
||||
|
||||
class Drafts(View):
|
||||
"""Retrieve or save a draft."""
|
||||
|
||||
def get_object(self, request):
|
||||
try:
|
||||
return CaseStudyDraft.objects.get(author=request.user)
|
||||
except:
|
||||
return None
|
||||
|
||||
def get(self, request):
|
||||
if not request.user.is_authenticated:
|
||||
return HttpResponse(status=403) # Forbidden
|
||||
|
||||
draft = self.get_object(request)
|
||||
if draft == None:
|
||||
return HttpResponse(status=404) # Not Found
|
||||
else:
|
||||
return HttpResponse(draft.data, content_type="application/json")
|
||||
|
||||
def put(self, request):
|
||||
if not request.user.is_authenticated:
|
||||
return HttpResponse(status=403) # Forbidden
|
||||
|
||||
# Find an existing object is there is one
|
||||
draft = self.get_object(request)
|
||||
if draft == None:
|
||||
# If there isn't, create a new draft...
|
||||
draft = CaseStudyDraft(author=request.user, data=request.body)
|
||||
draft.save()
|
||||
return HttpResponse(status=201) # Created
|
||||
else:
|
||||
draft.data = request.body
|
||||
draft.save()
|
||||
return HttpResponse(status=200) # OK
|
||||
|
||||
def delete(self, request):
|
||||
if not request.user.is_authenticated:
|
||||
return HttpResponse(status=403) # Forbidden
|
||||
|
||||
draft = self.get_object(request)
|
||||
if draft != None:
|
||||
draft.delete()
|
||||
return HttpResponse(status=204)
|
||||
|
Reference in New Issue
Block a user