Use Django forms in members, WIP

This commit is contained in:
Jan Tuomi
2017-05-11 09:01:30 +03:00
parent 3b770343a0
commit 189f0dd30d
7 changed files with 60 additions and 36 deletions
+9
View File
@@ -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)
+18 -11
View File
@@ -1,38 +1,45 @@
{% extends "members_base.html" %}
{% load bootstrap3 %}
{% block content %}
<div ng-controller="postController">
<div>
<h3> Lisää jäsen </h3>
<div id="input_form">
<form name="memberForm">
<form name="memberForm" action="/members/submit_member" method="post" class="form">{% csrf_token %}
<!--
<div class="form-group">
<label>Etunimi: </label>
<input id="firstNameField" required type="text" placeholder="Sähkö" class="form-control" ng-model="member.first_name"></input>
<input name="first_name" required type="text" placeholder="Sähkö" class="form-control">
</div>
<div class="form-group">
<label>Sukunimi: </label>
<input id="lastNameField" required type="text" placeholder="Insinööri" class="form-control" ng-model="member.last_name"></input>
<input name="last_name" required type="text" placeholder="Insinööri" class="form-control">
</div>
<div class="form-group">
<label>Sähköposti: </label>
<input id="emailField" required type="text" placeholder="sahko.insinoori@aalto.fi" class="form-control" ng-model="member.email"></input>
<input name="email" required type="text" placeholder="sahko.insinoori@aalto.fi" class="form-control">
</div>
<div class="form-group">
<label>AYY jäsen: </label>
<input type="checkbox" id="AYY" value="0" ng-model="member.AYY"></input>
<input type="checkbox" name="is_AYY" value="0">
</div>
<div class="form-group">
<label>JAS-listaan: </label>
<input type="checkbox" id="JAS" value="0" ng-model="member.jas"></input>
<input type="checkbox" name="is_JAS" value="0">
</div>
<div class="form-group">
<label>Asuinkunta: </label>
<input id="PORField" required type="text" placeholder="Otaniemi" class="form-control" ng-model="member.POR"></input>
<input name="residence" required type="text" placeholder="Otaniemi" class="form-control">
</div>
<a href="/members/list">
<button ng-click="memberForm.$valid && send()" type="submit" class="btn btn-success" id="sendmember">Tallenna</button>
</a>
-->
{% bootstrap_form form %}
{% buttons %}
<button type="submit" class="btn btn-primary">
Tallenna
</button>
{% endbuttons %}
</form>
</div>
</div>
+3
View File
@@ -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<pk>\d+)/$', memDetailAPI.as_view()),
url(r'^rest/api/requests/$', reqListAPI.as_view()),
url(r'^rest/api/requests/(?P<pk>\d+)/$', reqDetailAPI.as_view()),
url(r'^submit_member$', submit_member),
#application
url(r'^application/$', application_index),
+27 -25
View File
@@ -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"])
+1
View File
@@ -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
+1
View File
@@ -46,6 +46,7 @@ INSTALLED_APPS = [
'infoscreen',
'rest_framework',
'django_nose',
'bootstrap3',
]
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
+1
View File
@@ -46,6 +46,7 @@ INSTALLED_APPS = [
'infoscreen',
'rest_framework',
'django_nose',
'bootstrap3',
]
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'