Use Django forms in members, WIP
This commit is contained in:
@@ -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)
|
||||
@@ -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>
|
||||
|
||||
@@ -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
@@ -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"])
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -46,6 +46,7 @@ INSTALLED_APPS = [
|
||||
'infoscreen',
|
||||
'rest_framework',
|
||||
'django_nose',
|
||||
'bootstrap3',
|
||||
]
|
||||
|
||||
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
|
||||
|
||||
@@ -46,6 +46,7 @@ INSTALLED_APPS = [
|
||||
'infoscreen',
|
||||
'rest_framework',
|
||||
'django_nose',
|
||||
'bootstrap3',
|
||||
]
|
||||
|
||||
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
|
||||
|
||||
Reference in New Issue
Block a user