implemented PUT support for members and switched 404 to be a json response
This commit is contained in:
+7
-4
@@ -25,6 +25,11 @@ class Member(models.Model):
|
||||
|
||||
@classmethod
|
||||
def create_from_dict(cls,d):
|
||||
mbr = cls()
|
||||
mbr.update_from_dict(d)
|
||||
return mbr.get_dict()
|
||||
|
||||
def update_from_dict(self,d):
|
||||
dmap = {
|
||||
'first_name': 'first_name',
|
||||
'last_name': 'last_name',
|
||||
@@ -33,14 +38,12 @@ class Member(models.Model):
|
||||
'AYY': 'AYY',
|
||||
'jas': 'jas',
|
||||
}
|
||||
mbr = cls()
|
||||
for k,v in d.items():
|
||||
try:
|
||||
mbr.__setattr__(dmap[k],v)
|
||||
self.__setattr__(dmap[k],v)
|
||||
except KeyError:
|
||||
pass
|
||||
mbr.save()
|
||||
return mbr.get_dict()
|
||||
self.save()
|
||||
|
||||
def __str__(self):
|
||||
return "{} {}".format(first_name, last_name)
|
||||
|
||||
+22
-4
@@ -1,5 +1,5 @@
|
||||
from django.shortcuts import render, get_object_or_404
|
||||
from django.http import HttpResponse
|
||||
from django.http import HttpResponse, HttpResponseBadRequest
|
||||
from django.core.exceptions import ValidationError
|
||||
from members.models import Member
|
||||
import json
|
||||
@@ -12,14 +12,32 @@ def members(request, *args, **kwargs):
|
||||
return HttpResponse(json.dumps(mems))
|
||||
|
||||
def member(request,*args, **kwargs):
|
||||
if request.method == 'GET':
|
||||
|
||||
#get and put together since both operate on existing objects and return one object
|
||||
if request.method in ['GET','PUT']:
|
||||
# get object by id or give 404
|
||||
idx = kwargs.pop("idx", None)
|
||||
mem = get_object_or_404(Member, pk=idx)
|
||||
try:
|
||||
Member.objects.get(pk=idx)
|
||||
except Member.DoesNotExist:
|
||||
resp = HttpResponse('{"error":"object not found"}')
|
||||
resp.status_code = 404
|
||||
return resp
|
||||
|
||||
|
||||
# update model if request type was PUT
|
||||
if request.method == 'PUT':
|
||||
try:
|
||||
data = json.loads(request.body.decode("utf-8"))
|
||||
mem.update_from_dict(data)
|
||||
except ValueError:
|
||||
return HttpResponseBadRequest('{"error" : "Invalid parameters supplied"}')
|
||||
return HttpResponse(json.dumps(mem.get_dict()))
|
||||
|
||||
if request.method == 'POST':
|
||||
try:
|
||||
data = json.loads(request.body.decode("utf-8"))
|
||||
memdict = Member.create_from_dict(data)
|
||||
return HttpResponse(json.dumps(memdict))
|
||||
except ValueError:
|
||||
raise ValidationError("Invalid parameters supplied")
|
||||
return HttpResponseBadRequest('{"error" : "Invalid parameters supplied"}')
|
||||
|
||||
Reference in New Issue
Block a user