Add form drafts API (#52)

This commit is contained in:
2018-04-14 12:40:42 +10:00
parent 0317535c11
commit 08bb577e37
6 changed files with 163 additions and 2 deletions

View File

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