43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
from django.shortcuts import render, get_object_or_404
|
|
from django.http import HttpResponse, HttpResponseBadRequest
|
|
from django.core.exceptions import ValidationError
|
|
from members.models import Member
|
|
import json
|
|
|
|
def index(request, *args, **kwargs):
|
|
return render(request, 'index.html',{})
|
|
|
|
def members(request, *args, **kwargs):
|
|
mems = list(map(lambda m: m.get_dict(),Member.objects.all()))
|
|
return HttpResponse(json.dumps(mems))
|
|
|
|
def member(request,*args, **kwargs):
|
|
|
|
#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)
|
|
try:
|
|
mem = 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:
|
|
return HttpResponseBadRequest('{"error" : "Invalid parameters supplied"}')
|