implemented member request feature for members app
This commit is contained in:
@@ -50,3 +50,41 @@ POST /members/api/member (gets newly created item (with id) as response)
|
||||
|
||||
DELETE /members/api/member/:id
|
||||
|
||||
// get all pending member requests
|
||||
GET /members/api/requests
|
||||
|
||||
[
|
||||
{
|
||||
"submitted": "2016-07-25 15:58:22.103187+00:00",
|
||||
"id": 1,
|
||||
"member": {
|
||||
"id": 69,
|
||||
"AYY": false,
|
||||
"email": "asd@asd.asd",
|
||||
"first_name": "reg",
|
||||
"POR": "",
|
||||
"jas": false,
|
||||
"last_name": "uest"
|
||||
}
|
||||
},
|
||||
{
|
||||
"submitted": "2016-07-25 15:59:06.069821+00:00",
|
||||
"id": 2,
|
||||
"member": {
|
||||
"id": 70,
|
||||
"AYY": false,
|
||||
"email": "asd@asd.asd",
|
||||
"first_name": "re",
|
||||
"POR": "",
|
||||
"jas": false,
|
||||
"last_name": "guest"
|
||||
}
|
||||
}
|
||||
]
|
||||
//accept member request (== delete request but leave member)
|
||||
|
||||
POST /members/api/request/:id
|
||||
|
||||
//reject member request (== delete request and delete member)
|
||||
|
||||
DELETE /members/api/request/:id
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9 on 2016-07-25 15:57
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('members', '0002_auto_20160530_1642'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='MemberRequest',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('submitted', models.DateTimeField(default=django.utils.timezone.now)),
|
||||
('member', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='members.Member')),
|
||||
],
|
||||
),
|
||||
]
|
||||
+13
-1
@@ -1,4 +1,5 @@
|
||||
from django.db import models
|
||||
from django.utils import timezone
|
||||
|
||||
class Member(models.Model):
|
||||
'''
|
||||
@@ -27,7 +28,7 @@ class Member(models.Model):
|
||||
def create_from_dict(cls,d):
|
||||
mbr = cls()
|
||||
mbr.update_from_dict(d)
|
||||
return mbr.get_dict()
|
||||
return mbr
|
||||
|
||||
def update_from_dict(self,d):
|
||||
dmap = {
|
||||
@@ -47,3 +48,14 @@ class Member(models.Model):
|
||||
|
||||
def __str__(self):
|
||||
return "{} {}".format(first_name, last_name)
|
||||
|
||||
class MemberRequest(models.Model):
|
||||
member = models.ForeignKey(Member)
|
||||
submitted = models.DateTimeField(default=timezone.now)
|
||||
|
||||
def get_dict(self):
|
||||
return {
|
||||
'id': self.id,
|
||||
'member': self.member.get_dict(),
|
||||
'submitted': self.submitted.isoformat(" ")
|
||||
}
|
||||
|
||||
+30
-2
@@ -1,7 +1,7 @@
|
||||
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
|
||||
from members.models import Member, MemberRequest
|
||||
import json
|
||||
|
||||
def index(request, *args, **kwargs):
|
||||
@@ -49,6 +49,34 @@ def member(request,*args, **kwargs):
|
||||
try:
|
||||
data = json.loads(request.body.decode("utf-8"))
|
||||
memdict = Member.create_from_dict(data)
|
||||
return HttpResponse(json.dumps(memdict))
|
||||
return HttpResponse(json.dumps(mem.get_dict()))
|
||||
except ValueError:
|
||||
return HttpResponseBadRequest('{"error" : "Invalid parameters supplied"}')
|
||||
|
||||
def member_requests(request, *args, **kwargs):
|
||||
reqs = list(map(lambda r: r.get_dict(),MemberRequest.objects.all()))
|
||||
return HttpResponse(json.dumps(reqs))
|
||||
|
||||
def new_member_request(request, *args, **kwargs):
|
||||
try:
|
||||
data = json.loads(request.body.decode("utf-8"))
|
||||
mem = Member.create_from_dict(data)
|
||||
req = MemberRequest.objects.create(member=mem)
|
||||
return HttpResponse(json.dumps(mem.get_dict()))
|
||||
except ValueError:
|
||||
return HttpResponseBadRequest('{"error" : "Invalid parameters supplied"}')
|
||||
|
||||
def handle_mem_request(request, idx, *args, **kwargs):
|
||||
try:
|
||||
req = MemberRequest.objects.get(pk=idx)
|
||||
except MemberRequest.DoesNotExist:
|
||||
resp = HttpResponse('{"error":"object not found"}')
|
||||
resp.status_code = 404
|
||||
return resp
|
||||
|
||||
if request.method == 'DELETE':
|
||||
req.member.delete()
|
||||
else: # method == POST because other aren't allowed here
|
||||
req.delete()
|
||||
return HttpResponse('{"status":"success"}')
|
||||
|
||||
|
||||
@@ -19,6 +19,9 @@ from django.contrib import admin
|
||||
from members.views import index as mindex
|
||||
from members.views import members as mems
|
||||
from members.views import member as mem
|
||||
from members.views import handle_mem_request
|
||||
from members.views import new_member_request
|
||||
from members.views import member_requests
|
||||
|
||||
|
||||
urlpatterns = [
|
||||
@@ -27,4 +30,8 @@ urlpatterns = [
|
||||
url(r'^members/api/members$', mems),
|
||||
url(r'^members/api/member/(?P<idx>\d+)$', mem),
|
||||
url(r'^members/api/member/$', mem),
|
||||
url(r'^members/api/member/$', mem),
|
||||
url(r'^members/api/requests$', member_requests),
|
||||
url(r'^members/api/request$', new_member_request),
|
||||
url(r'^members/api/request/(?P<idx>\d+)$', handle_mem_request),
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user