diff --git a/members/forms.py b/members/forms.py new file mode 100644 index 0000000..7fcbdea --- /dev/null +++ b/members/forms.py @@ -0,0 +1,9 @@ +from django import forms + +class MemberForm(forms.Form): + first_name = forms.CharField(label="First name", max_length=100) + last_name = forms.CharField(label="Last name", max_length=100) + email = forms.EmailField(label="Email", max_length=100) + is_AYY = forms.BooleanField(label="AYY", required=False, initial=True) + is_JAS = forms.BooleanField(label="JAS", required=False, initial=True) + residence = forms.CharField(label="Place of residence", max_length=100) \ No newline at end of file diff --git a/members/templates/add_member.html b/members/templates/add_member.html index 72ac254..4a7eab7 100644 --- a/members/templates/add_member.html +++ b/members/templates/add_member.html @@ -1,38 +1,45 @@ {% extends "members_base.html" %} +{% load bootstrap3 %} + {% block content %} -
+

Lisää jäsen

-
+ {% csrf_token %} + + {% bootstrap_form form %} + {% buttons %} + + {% endbuttons %}
diff --git a/members/urls.py b/members/urls.py index 20eb6e9..0c6029a 100644 --- a/members/urls.py +++ b/members/urls.py @@ -14,6 +14,8 @@ from members.views import new_member_request from members.views import member_requests from members.views import export_csv as mem_csv_export from members.views import tommy_blooper +from members.views import submit_member + # members API from members.views import MembersList as memsListAPI from members.views import MemberDetails as memDetailAPI @@ -50,6 +52,7 @@ urlpatterns = [ url(r'^rest/api/members/(?P\d+)/$', memDetailAPI.as_view()), url(r'^rest/api/requests/$', reqListAPI.as_view()), url(r'^rest/api/requests/(?P\d+)/$', reqDetailAPI.as_view()), + url(r'^submit_member$', submit_member), #application url(r'^application/$', application_index), diff --git a/members/views.py b/members/views.py index 851dc2e..1a8d4ec 100644 --- a/members/views.py +++ b/members/views.py @@ -1,15 +1,19 @@ -from django.shortcuts import render, get_object_or_404 +from django.shortcuts import render from django.contrib.auth.decorators import permission_required from django.views.decorators.http import require_http_methods from django.views.decorators.csrf import ensure_csrf_cookie -from django.http import HttpResponse, HttpResponseBadRequest -from django.core.exceptions import ValidationError -from members.models import Member, Request -import json +from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseRedirect from django.core.mail import send_mail -import requests from django.conf import settings + +import json +import requests import logging + + +from members.models import Member, Request +from members.forms import MemberForm + '''Rest API''' from members.serializers import MemberSerializer, MemberRequestSerializer from rest_framework import generics @@ -88,7 +92,8 @@ def member_list(request, *args, **kwargs): @require_http_methods(["GET"]) @permission_required('members.change_member', login_url='/login') def add_member(request, *args, **kwargs): - return render(request, 'add_member.html', {}) + form = MemberForm() + return render(request, 'add_member.html', {'form': form}) @ensure_csrf_cookie @require_http_methods(["GET"]) @@ -96,6 +101,21 @@ def add_member(request, *args, **kwargs): def add_many_members(request, *args, **kwargs): return render(request, 'add_many_members.html', {}) +@ensure_csrf_cookie +@require_http_methods(["POST"]) +@permission_required('members.change_member', login_url='/login') +def submit_member(request, *args, **kwargs): + form = MemberForm(request.POST) + if form.is_valid(): + print(request.POST) + return HttpResponse('jee') + else: + print(request.POST) + print(form.errors) + return HttpResponse('oh shit') + + return HttpResponseRedirect('/members') + @ensure_csrf_cookie @require_http_methods(["GET"]) @permission_required('members.change_member', login_url='/login') @@ -172,24 +192,6 @@ def member(request, *args, **kwargs): resp.status_code = 500 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")) - mem = Member.create_from_dict(data) - return HttpResponse(json.dumps(mem.get_dict())) - except ValueError: - return HttpResponseBadRequest('{"error" : "Invalid parameters supplied"}') - @ensure_csrf_cookie @require_http_methods(["POST"]) diff --git a/requirements.txt b/requirements.txt index 6b4f74d..a334cb6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18,3 +18,4 @@ coverage==4.3.4 django-nose==1.4.4 uWSGI==2.0.14 psycopg2==2.7.1 +django-bootstrap3==8.2.3 diff --git a/sikweb/settings-docker-sample.py b/sikweb/settings-docker-sample.py index 16d06cd..0ac2afa 100644 --- a/sikweb/settings-docker-sample.py +++ b/sikweb/settings-docker-sample.py @@ -46,6 +46,7 @@ INSTALLED_APPS = [ 'infoscreen', 'rest_framework', 'django_nose', + 'bootstrap3', ] TEST_RUNNER = 'django_nose.NoseTestSuiteRunner' diff --git a/sikweb/settings-sample.py b/sikweb/settings-sample.py index 03c40cc..939a7b7 100644 --- a/sikweb/settings-sample.py +++ b/sikweb/settings-sample.py @@ -46,6 +46,7 @@ INSTALLED_APPS = [ 'infoscreen', 'rest_framework', 'django_nose', + 'bootstrap3', ] TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'