diff --git a/members/models.py b/members/models.py index e5d61f9..355a182 100644 --- a/members/models.py +++ b/members/models.py @@ -4,7 +4,7 @@ class Member(models.Model): ''' Member model represets one member on the registry ''' - + first_name = models.CharField(max_length=127) last_name = models.CharField(max_length=127) email = models.EmailField() @@ -23,5 +23,24 @@ class Member(models.Model): 'jas':self.jas, } + @classmethod + def create_from_dict(cls,d): + dmap = { + 'first_name': 'first_name', + 'last_name': 'last_name', + 'email': 'email', + 'POR': 'POR', + 'AYY': 'AYY', + 'jas': 'jas', + } + mbr = cls() + for k,v in d.iteritems(): + try: + mbr.__setattr__(dmap[k],v) + except KeyError: + pass + mbr.save() + return mbr.get_dict() + def __str__(self): return "{} {}".format(first_name, last_name) diff --git a/members/views.py b/members/views.py index 11c2ed7..e53088f 100644 --- a/members/views.py +++ b/members/views.py @@ -1,15 +1,24 @@ from django.shortcuts import render, get_object_or_404 from django.http import HttpResponse +from django.core.exceptions import ValidationError from members.models import Member import json def index(request, *args, **kwargs): - return render(request, 'index.html',{}) + 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, idx, *args, **kwargs): - mem = get_object_or_404(Member, pk=idx) - return HttpResponse(json.dumps(mem.get_dict())) +def member(request,*args, **kwargs): + if request.method == 'GET': + idx = kwargs.pop("idx", None) + mem = get_object_or_404(Member, pk=idx) + return HttpResponse(json.dumps(mem.get_dict())) + if request.method == 'POST': + try: + data = json.parse(request.body) + Member.create_from_dict(data) + except ValueError: + raise ValidationError("Invalid parameters supplied") diff --git a/sikweb/urls.py b/sikweb/urls.py index b1b3236..e084089 100644 --- a/sikweb/urls.py +++ b/sikweb/urls.py @@ -26,4 +26,5 @@ urlpatterns = [ url(r'^members/$', mindex), url(r'^members/api/members$', mems), url(r'^members/api/member/(?P\d+)$', mem), + url(r'^members/api/member/$', mem), ]