Purge Angular from member register, WIP

This commit is contained in:
Jan Tuomi
2017-05-11 22:25:37 +03:00
parent 189f0dd30d
commit 7b178ab1f7
14 changed files with 515 additions and 369 deletions
Binary file not shown.
+154 -130
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-29 16:19+0300\n"
"POT-Creation-Date: 2017-05-11 22:23+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -21,64 +21,66 @@ msgstr ""
msgid "ABB jobs"
msgstr "ABB jobs"
#: infoscreen/models.py:85
#, fuzzy
#| msgid "External image"
msgid "External website"
msgstr "External image"
#: infoscreen/models.py:84
msgid "APY Item"
msgstr "ÄPY Item"
#: infoscreen/models.py:131
#: infoscreen/models.py:95
msgid "External website"
msgstr "External website"
#: infoscreen/models.py:141
msgid "Sössö articles"
msgstr "Sössö articles"
#: infoscreen/models.py:140
#: infoscreen/models.py:150
msgid "Events"
msgstr ""
msgstr "Events"
#: infoscreen/models.py:152
#: infoscreen/models.py:162
msgid "Image"
msgstr ""
msgstr "Image"
#: infoscreen/models.py:170
#: infoscreen/models.py:180
msgid "HSL timetables"
msgstr "HSL timetables"
#: infoscreen/models.py:180
#: infoscreen/models.py:190
msgid "External image"
msgstr "External image"
#: infoscreen/templates/infoscreen_admin.html:23
#: members/templates/members_base.html:60
#: members/templates/members_base.html:51
msgid "Log out"
msgstr ""
msgstr "Log out"
#: infoscreen/templates/infoscreen_admin.html:30
msgid "Infoscreen Admin Pane"
msgstr ""
msgstr "Infoscreen Admin Pane"
#: infoscreen/templates/infoscreen_admin.html:35
msgid "Info items"
msgstr ""
msgstr "Info items"
#: infoscreen/templates/infoscreen_admin.html:36
msgid "Infoitems available for rotations"
msgstr ""
msgstr "Infoitems available for rotations"
#: infoscreen/templates/infoscreen_admin.html:39
msgid "Item"
msgstr ""
msgstr "Item"
#: infoscreen/templates/infoscreen_admin.html:40
msgid "Type"
msgstr ""
msgstr "Type"
#: infoscreen/templates/infoscreen_admin.html:41
msgid "Set duration"
msgstr ""
msgstr "Set duration"
#: infoscreen/templates/infoscreen_admin.html:42
msgid "Add to rotation"
msgstr ""
msgstr "Add to rotation"
#: infoscreen/templates/infoscreen_admin.html:43
#: infoscreen/templates/infoscreen_admin.html:50
@@ -86,221 +88,243 @@ msgstr ""
#: infoscreen/templates/infoscreen_admin.html:84
#: infoscreen/templates/infoscreen_admin.html:101
#: infoscreen/templates/infoscreen_admin.html:105
#: members/templates/member_list.html:63
#: members/templates/member_list.html:84
msgid "Delete"
msgstr ""
msgstr "Delete"
#: infoscreen/templates/infoscreen_admin.html:49
msgid "Add"
msgstr ""
msgstr "Add"
#: infoscreen/templates/infoscreen_admin.html:53
msgid "Create new item"
msgstr ""
msgstr "Create new item"
#: infoscreen/templates/infoscreen_admin.html:56
msgid "Item type"
msgstr ""
msgstr "Item type"
#: infoscreen/templates/infoscreen_admin.html:67
msgid "Rotations"
msgstr ""
msgstr "Rotations"
#: infoscreen/templates/infoscreen_admin.html:69
msgid "Select rotation to edit"
msgstr ""
msgstr "Select rotation to edit"
#: infoscreen/templates/infoscreen_admin.html:73
#: infoscreen/templates/infoscreen_admin.html:95
msgid "Rotation"
msgstr ""
msgstr "Rotation"
#: infoscreen/templates/infoscreen_admin.html:74
msgid "id"
msgstr ""
msgstr "id"
#: infoscreen/templates/infoscreen_admin.html:75
#: infoscreen/templates/infoscreen_admin.html:82
msgid "Select"
msgstr ""
msgstr "Select"
#: infoscreen/templates/infoscreen_admin.html:76
#: infoscreen/templates/infoscreen_admin.html:83
msgid "Preview"
msgstr ""
msgstr "Preview"
#: infoscreen/templates/infoscreen_admin.html:87
msgid "Name"
msgstr ""
msgstr "Name"
#: infoscreen/templates/infoscreen_admin.html:88
msgid "Create new"
msgstr ""
msgstr "Create new"
#: infoscreen/templates/infoscreen_admin.html:96
msgid "Instances in currently selected rotation"
msgstr ""
msgstr "Instances in currently selected rotation"
#: infoscreen/templates/infoscreen_admin.html:99
msgid "Instance"
msgstr ""
msgstr "Instance"
#: infoscreen/templates/infoscreen_admin.html:100
msgid "Duration"
msgstr "Duration"
#: members/models.py:11 members/templates/member_list.html.py:57
msgid "First name"
msgstr "First name"
#: members/models.py:12 members/templates/member_list.html.py:56
msgid "Last name"
msgstr "Last name"
#: members/models.py:13 members/templates/member_list.html.py:58
msgid "Email"
msgstr "Email"
#: members/models.py:14
msgid "Place of residence"
msgstr "Place of residence"
#: members/models.py:15
msgid "AYY"
msgstr "AYY"
#: members/models.py:16
msgid "JAS"
msgstr "JAS"
#: members/templates/add_member.html:8 members/templates/edit_member.html:8
#: members/templates/members_base.html:42
msgid "Add member"
msgstr "Add member"
#: members/templates/add_member.html:15 members/templates/edit_member.html:16
msgid "Save"
msgstr ""
#: members/templates/member_list.html:13 members/templates/member_list.html:45
msgid "Added"
msgstr ""
#: members/templates/delete_member_confirm.html:8
msgid "Are you sure you want to delete this member?"
msgstr "Are you sure you want to delete this member?"
#: members/templates/member_list.html:14
msgid "Added after"
msgstr ""
#: members/templates/delete_member_confirm.html:17
msgid "Yes, I'm sure"
msgstr "Yes, I'm sure"
#: members/templates/member_list.html:9
msgid "Show filters"
msgstr "Show filters"
#: members/templates/member_list.html:15
msgid "Added before"
msgstr ""
#: members/templates/member_list.html:20 members/templates/member_list.html:46
msgid "Paid"
msgstr ""
#: members/templates/member_list.html:21
msgid "Paid after"
msgstr ""
#: members/templates/member_list.html:22
msgid "Paid before"
msgstr ""
#: members/templates/member_list.html:27
msgid "Search"
msgstr ""
msgstr "Search"
#: members/templates/member_list.html:28
msgid "Filter"
msgstr ""
#: members/templates/member_list.html:20
msgid "Added after"
msgstr "Added after"
#: members/templates/member_list.html:29
msgid "Reset"
msgstr ""
#: members/templates/member_list.html:24
msgid "Added before"
msgstr "Added before"
#: members/templates/member_list.html:32 members/templates/members_base.html:13
msgid "Member register"
msgstr ""
#: members/templates/member_list.html:30
msgid "Paid after"
msgstr "Paid after"
#: members/templates/member_list.html:33
msgid "Download CSV"
msgstr ""
#: members/templates/member_list.html:39
msgid "Last name"
msgstr ""
#: members/templates/member_list.html:34
msgid "Paid before"
msgstr "Paid before"
#: members/templates/member_list.html:40
msgid "First name"
msgstr ""
msgid "Filter"
msgstr "Filter"
#: members/templates/member_list.html:41
msgid "Email"
msgstr ""
msgid "Reset"
msgstr "Reset"
#: members/templates/member_list.html:42
#: members/templates/member_list.html:49 members/templates/members_base.html:15
msgid "Member register"
msgstr "Member register"
#: members/templates/member_list.html:50
msgid "Download CSV"
msgstr "Download CSV"
#: members/templates/member_list.html:59
msgid "AYY member"
msgstr ""
msgstr "AYY member"
#: members/templates/member_list.html:43
#: members/templates/member_list.html:60
msgid "JAS recipient"
msgstr ""
#: members/templates/member_list.html:44
msgid "Residence"
msgstr ""
#: members/templates/member_list.html:47
msgid "Member count"
msgstr ""
msgstr "JAS recipient"
#: members/templates/member_list.html:61
msgid "Update payment"
msgstr ""
msgid "Residence"
msgstr "Residence"
#: members/templates/member_list.html:62
msgid "Edit"
msgstr ""
msgid "Added"
msgstr "Added"
#: members/templates/member_list.html:63
msgid "Are you sure?"
msgstr ""
msgid "Paid"
msgstr "Paid"
#: members/templates/members_base.html:50
#: members/templates/member_list.html:64
msgid "Member count"
msgstr "Member count"
#: members/templates/member_list.html:79
msgid "Update payment"
msgstr "Update payment"
#: members/templates/member_list.html:81
msgid "Edit"
msgstr "Edit"
#: members/templates/members_base.html:41
msgid "Member list"
msgstr ""
msgstr "Member list"
#: members/templates/members_base.html:51
msgid "Add member"
msgstr ""
#: members/templates/members_base.html:52
#: members/templates/members_base.html:43
msgid "Add multiple"
msgstr ""
msgstr "Add multiple"
#: members/templates/members_base.html:53
#: members/templates/members_base.html:44
msgid "Member application"
msgstr ""
msgstr "Member application"
#: members/templates/members_base.html:69
#: members/templates/members_base.html:60
msgid "Member register of SIK ry"
msgstr ""
#: sikweb/settings-docker-sample.py:170 sikweb/settings-sample.py:170
#: sikweb/settings.py:170
msgid "English"
msgstr ""
msgstr "Member register of SIK ry"
#: sikweb/settings-docker-sample.py:171 sikweb/settings-sample.py:171
#: sikweb/settings.py:171
msgid "English"
msgstr "English"
#: sikweb/settings-docker-sample.py:172 sikweb/settings-sample.py:172
#: sikweb/settings.py:172
msgid "Finnish"
msgstr ""
msgstr "Finnish"
#: templates/footer.html:11
msgid "Copyright Aalto-yliopiston Sähköinsinöörikilta ry"
msgstr ""
msgstr "Copyright Aalto-yliopiston Sähköinsinöörikilta ry"
#: webapp/templates/admin_index.html:6
msgid "SIK Admin"
msgstr ""
msgstr "SIK Admin"
#: webapp/templates/main_index.html:7
msgid "Members"
msgstr ""
msgstr "Members"
#: webapp/templates/main_index.html:8
msgid "Infoscreen"
msgstr ""
msgstr "Infoscreen"
#: webapp/templates/main_index.html:9
msgid "Admin tools"
msgstr ""
msgstr "Admin tools"
#: webapp/templates/navigation.html:29
msgid "Event calendar"
msgstr ""
msgstr "Event calendar"
#: webapp/templates/navigation.html:30
msgid "International"
msgstr ""
msgstr "International"
#: webapp/templates/navigation.html:31
msgid "Sössö"
msgstr ""
msgstr "Sössö"
#: webapp/templates/navigation.html:32
msgid "Contact"
msgstr ""
msgstr "Contact"
#~ msgid "Coffee display"
#~ msgstr "Coffee display"
#~ msgid "Image upload"
#~ msgstr "Image upload"
#~ msgid "Are you sure?"
#~ msgstr "Are you sure?"
Binary file not shown.
+127 -95
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-29 16:19+0300\n"
"POT-Creation-Date: 2017-05-11 22:23+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -22,32 +22,36 @@ msgstr ""
msgid "ABB jobs"
msgstr "ABB-työpaikat"
#: infoscreen/models.py:85
#: infoscreen/models.py:84
msgid "APY Item"
msgstr "ÄPY-tilastot"
#: infoscreen/models.py:95
msgid "External website"
msgstr "Ulkoinen verkkosivu"
#: infoscreen/models.py:131
#: infoscreen/models.py:141
msgid "Sössö articles"
msgstr "Sössön artikkelit"
#: infoscreen/models.py:140
#: infoscreen/models.py:150
msgid "Events"
msgstr "Tapahtumat"
#: infoscreen/models.py:152
#: infoscreen/models.py:162
msgid "Image"
msgstr "Kuva"
#: infoscreen/models.py:170
#: infoscreen/models.py:180
msgid "HSL timetables"
msgstr "HSL-aikataulut"
#: infoscreen/models.py:180
#: infoscreen/models.py:190
msgid "External image"
msgstr "Ulkoinen kuva"
#: infoscreen/templates/infoscreen_admin.html:23
#: members/templates/members_base.html:60
#: members/templates/members_base.html:51
msgid "Log out"
msgstr "Kirjaudu ulos"
@@ -85,7 +89,7 @@ msgstr "Lisää rotaatioon"
#: infoscreen/templates/infoscreen_admin.html:84
#: infoscreen/templates/infoscreen_admin.html:101
#: infoscreen/templates/infoscreen_admin.html:105
#: members/templates/member_list.html:63
#: members/templates/member_list.html:84
msgid "Delete"
msgstr "Poista"
@@ -148,117 +152,142 @@ msgstr "Dia"
msgid "Duration"
msgstr "Kesto"
#: members/templates/member_list.html:13 members/templates/member_list.html:45
msgid "Added"
msgstr "Lisätty"
#: members/templates/member_list.html:14
msgid "Added after"
msgstr "Lisätty jälkeen"
#: members/templates/member_list.html:15
msgid "Added before"
msgstr "Lisätty ennen"
#: members/templates/member_list.html:20 members/templates/member_list.html:46
msgid "Paid"
msgstr "Maksettu"
#: members/templates/member_list.html:21
msgid "Paid after"
msgstr "Maksettu jälkeen"
#: members/templates/member_list.html:22
msgid "Paid before"
msgstr "Maksettu ennen"
#: members/templates/member_list.html:27
msgid "Search"
msgstr "Haku"
#: members/templates/member_list.html:28
msgid "Filter"
msgstr "Suodata"
#: members/templates/member_list.html:29
msgid "Reset"
msgstr "Nollaa"
#: members/templates/member_list.html:32 members/templates/members_base.html:13
msgid "Member register"
msgstr "Jäsenrekisteri"
#: members/templates/member_list.html:33
msgid "Download CSV"
msgstr "Lataa CSV"
#: members/templates/member_list.html:39
msgid "Last name"
msgstr "Sukunimi"
#: members/templates/member_list.html:40
#: members/models.py:11 members/templates/member_list.html.py:57
msgid "First name"
msgstr "Etunimi"
#: members/templates/member_list.html:41
#: members/models.py:12 members/templates/member_list.html.py:56
msgid "Last name"
msgstr "Sukunimi"
#: members/models.py:13 members/templates/member_list.html.py:58
msgid "Email"
msgstr "Sähköposti"
#: members/templates/member_list.html:42
msgid "AYY member"
msgstr "AYY:n jäsen"
#: members/templates/member_list.html:43
msgid "JAS recipient"
msgstr "JAS-vastaanottaja"
#: members/templates/member_list.html:44
msgid "Residence"
#: members/models.py:14
msgid "Place of residence"
msgstr "Asuinpaikka"
#: members/templates/member_list.html:47
msgid "Member count"
msgstr "Lukumäärä"
#: members/models.py:15
msgid "AYY"
msgstr "AYY"
#: members/templates/member_list.html:61
msgid "Update payment"
msgstr "Päivitä maksu"
#: members/models.py:16
msgid "JAS"
msgstr "JAS"
#: members/templates/member_list.html:62
msgid "Edit"
msgstr "Muokkaa"
#: members/templates/member_list.html:63
msgid "Are you sure?"
msgstr "Oletko varma?"
#: members/templates/members_base.html:50
msgid "Member list"
msgstr "Jäsenlistaus"
#: members/templates/members_base.html:51
#: members/templates/add_member.html:8 members/templates/edit_member.html:8
#: members/templates/members_base.html:42
msgid "Add member"
msgstr "Lisää jäsen"
#: members/templates/members_base.html:52
#: members/templates/add_member.html:15 members/templates/edit_member.html:16
msgid "Save"
msgstr "Tallenna"
#: members/templates/delete_member_confirm.html:8
msgid "Are you sure you want to delete this member?"
msgstr "Oletko varma, että haluat poistaa tämän jäsenen?"
#: members/templates/delete_member_confirm.html:17
msgid "Yes, I'm sure"
msgstr "Kyllä, olen varma"
#: members/templates/member_list.html:9
msgid "Show filters"
msgstr "Näytä suodattimet"
#: members/templates/member_list.html:15
msgid "Search"
msgstr "Haku"
#: members/templates/member_list.html:20
msgid "Added after"
msgstr "Lisätty jälkeen"
#: members/templates/member_list.html:24
msgid "Added before"
msgstr "Lisätty ennen"
#: members/templates/member_list.html:30
msgid "Paid after"
msgstr "Maksettu jälkeen"
#: members/templates/member_list.html:34
msgid "Paid before"
msgstr "Maksettu ennen"
#: members/templates/member_list.html:40
msgid "Filter"
msgstr "Suodata"
#: members/templates/member_list.html:41
msgid "Reset"
msgstr "Nollaa"
#: members/templates/member_list.html:49 members/templates/members_base.html:15
msgid "Member register"
msgstr "Jäsenrekisteri"
#: members/templates/member_list.html:50
msgid "Download CSV"
msgstr "Lataa CSV"
#: members/templates/member_list.html:59
msgid "AYY member"
msgstr "AYY:n jäsen"
#: members/templates/member_list.html:60
msgid "JAS recipient"
msgstr "JAS-vastaanottaja"
#: members/templates/member_list.html:61
msgid "Residence"
msgstr "Asuinpaikka"
#: members/templates/member_list.html:62
msgid "Added"
msgstr "Lisätty"
#: members/templates/member_list.html:63
msgid "Paid"
msgstr "Maksettu"
#: members/templates/member_list.html:64
msgid "Member count"
msgstr "Lukumäärä"
#: members/templates/member_list.html:79
msgid "Update payment"
msgstr "Päivitä maksu"
#: members/templates/member_list.html:81
msgid "Edit"
msgstr "Muokkaa"
#: members/templates/members_base.html:41
msgid "Member list"
msgstr "Jäsenlistaus"
#: members/templates/members_base.html:43
msgid "Add multiple"
msgstr "Lisää useita"
#: members/templates/members_base.html:53
#: members/templates/members_base.html:44
msgid "Member application"
msgstr "Jäsenhakemus"
#: members/templates/members_base.html:69
#: members/templates/members_base.html:60
msgid "Member register of SIK ry"
msgstr "Aalto-yliopiston Sähköinsinöörikilta ry:n jäsenrekisteri"
#: sikweb/settings-docker-sample.py:170 sikweb/settings-sample.py:170
#: sikweb/settings.py:170
#: sikweb/settings-docker-sample.py:171 sikweb/settings-sample.py:171
#: sikweb/settings.py:171
msgid "English"
msgstr "englanti"
#: sikweb/settings-docker-sample.py:171 sikweb/settings-sample.py:171
#: sikweb/settings.py:171
#: sikweb/settings-docker-sample.py:172 sikweb/settings-sample.py:172
#: sikweb/settings.py:172
msgid "Finnish"
msgstr "suomi"
@@ -297,3 +326,6 @@ msgstr "Sössö"
#: webapp/templates/navigation.html:32
msgid "Contact"
msgstr "Yhteystiedot"
#~ msgid "Are you sure?"
#~ msgstr "Oletko varma?"
+8 -7
View File
@@ -1,9 +1,10 @@
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)
from members.models import Member
class MemberForm(forms.ModelForm):
class Meta:
model = Member
fields = ['first_name', 'last_name', 'email', 'AYY', 'jas', 'POR']
+8 -8
View File
@@ -1,19 +1,19 @@
from django.db import models
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from datetime import datetime
from io import StringIO
import csv
class BaseMember(models.Model):
'''
Base model for member.
'''
first_name = models.CharField(max_length=127)
last_name = models.CharField(max_length=127)
email = models.EmailField()
POR = models.CharField(default="ei_tiedossa", max_length=255) # place of residence
AYY = models.BooleanField(default=False)
jas = models.BooleanField(default=False)
first_name = models.CharField(_("First name"), max_length=127)
last_name = models.CharField(_("Last name"), max_length=127)
email = models.EmailField(_("Email"))
POR = models.CharField(_("Place of residence"), max_length=255) # place of residence
AYY = models.BooleanField(_("AYY"), default=False)
jas = models.BooleanField(_("JAS"), default=False)
class Meta:
abstract = True
+49 -12
View File
@@ -1,3 +1,11 @@
div {
padding: 0.5rem;
}
input {
padding: 0.5rem;
}
#download-csv {
margin-left: 20px;
}
@@ -13,11 +21,6 @@
float: left;
}
.filter-field {
margin-left: 5px;
margin-right: 5px;
}
.table-button {
margin-left: 5px;
margin-right: 5px;
@@ -28,18 +31,52 @@
text-align: right;
}
.filters {
text-align: right;
#filter-collapser {
float: right;
margin-bottom: 5px;
margin-left: 1rem;
}
.first-filter {
margin-top: 20px;
.filter-form {
}
.last-filter {
margin-bottom: 30px;
.filter-row {
float: right;
display: table;
background-color: rgba(122, 164, 232, 0.5);
}
.filter-group {
display: inline-block;
float: left;
height: 100%;
}
.filter-field {
display: table;
clear: both;
width: 100%;
margin-left: 0;
margin-right: 0;
}
.filter-field h5 {
display: inline;
}
.filter-field input[type="datetime-local"] {
display: inline;
width: 50%;
float: right;
}
.filter-button {
margin: 0.5rem;
display: block;
width: 100%;
}
.filter-field #search-filter {
width: 100%;
}
.inline-title {
+3 -28
View File
@@ -1,43 +1,18 @@
{% extends "members_base.html" %}
{% load bootstrap3 %}
{% load i18n %}
{% block content %}
<div>
<h3> Lisää jäsen </h3>
<h3>{% trans "Add member" %}</h3>
<div id="input_form">
<form name="memberForm" action="/members/submit_member" method="post" class="form">{% csrf_token %}
<!--
<div class="form-group">
<label>Etunimi: </label>
<input name="first_name" required type="text" placeholder="Sähkö" class="form-control">
</div>
<div class="form-group">
<label>Sukunimi: </label>
<input name="last_name" required type="text" placeholder="Insinööri" class="form-control">
</div>
<div class="form-group">
<label>Sähköposti: </label>
<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" name="is_AYY" value="0">
</div>
<div class="form-group">
<label>JAS-listaan: </label>
<input type="checkbox" name="is_JAS" value="0">
</div>
<div class="form-group">
<label>Asuinkunta: </label>
<input name="residence" required type="text" placeholder="Otaniemi" class="form-control">
</div>
-->
{% bootstrap_form form %}
{% buttons %}
<button type="submit" class="btn btn-primary">
Tallenna
{% trans "Save" %}
</button>
{% endbuttons %}
</form>
@@ -0,0 +1,22 @@
{% extends "members_base.html" %}
{% load i18n %}
{% load bootstrap3 %}
{% block content %}
<div>
<h3>{% trans "Are you sure you want to delete this member?" %}</h3>
<div id="input_form">
<table class="table" >
{{ form.as_table }}
</table>
<form name="memberForm" action="/members/delete_member" method="post" class="form">{% csrf_token %}
<input type="hidden" name="id" value="{{ member_id }}">
<button type="submit" class="btn btn-danger">
{% trans "Yes, I'm sure" %}
</button>
</form>
</div>
</div>
{% endblock content %}
+13 -32
View File
@@ -1,40 +1,21 @@
{% extends "members_base.html" %}
{% load i18n %}
{% load bootstrap3 %}
{% block content %}
<script>
var memberId = {{ member_id }};
</script>
<div ng-controller="editController">
<h1> Muokkaa jäsentietoja </h1>
<div>
<h3>{% trans "Add member" %}</h3>
<div id="input_form">
<form name="memberForm">
<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>
</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>
</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>
</div>
<div class="form-group">
<label>AYY jäsen: </label>
<input type="checkbox" id="AYY" ng-model="member.AYY"></input>
</div>
<div class="form-group">
<label>JAS-listaan: </label>
<input type="checkbox" id="jas" ng-model="member.jas"></input>
</div>
<div class="form-group">
<label>Asuinkunta: </label>
<input id="PORField" required type="text" placeholder="Otaniemi" class="form-control" ng-model="member.POR"></input>
</div>
<button class="btn btn-success" ng-click="memberForm.$valid && send()" type="submit" id="sendmember">Tallenna</button>
<button class="btn btn-warning" ng-click="cancel()" type="submit" id="sendmember">Peruuta</button>
<form name="memberForm" action="/members/update_member" method="post" class="form">{% csrf_token %}
<input type="hidden" name="id" value="{{ member_id }}">
{% bootstrap_form form %}
{% buttons %}
<button type="submit" class="btn btn-primary">
{% trans "Save" %}
</button>
{% endbuttons %}
</form>
</div>
</div>
+58 -35
View File
@@ -4,30 +4,47 @@
{% load i18n %}
{% block content %}
<link rel="stylesheet" href="{% static "css/jasenlista.css" %}">
<div ng-controller="getController">
<div class="row">
</div>
<div>
<a id="filter-collapser" href="#collapse-filters" data-toggle="collapse" class="btn btn-info">
{% trans "Show filters" %}
</a>
<form action="/members/list" method="POST" id="collapse-filters" class="collapse filter-form">
<div class="filter-row">
<div class="filter-group">
<div class="filter-field">
<input class="form-control" type="text" id="search-filter" placeholder="{% trans "Search" %}" >
</div>
</div>
<div class="filter-group">
<div class="filter-field">
<h5>{% trans "Added after" %}</h5>
<input type="datetime-local" id="addedAfterDatePicker">
</div>
<div class="filter-field">
<h5>{% trans "Added before" %}</h5>
<input type="datetime-local" class="filter-field" id="addedBeforeDatePicker">
</div>
</div>
<div class="filter-group">
<div class="filter-field">
<h5>{% trans "Paid after" %}</h5>
<input type="datetime-local" class="filter-field" id="paidAfterDatePicker">
</div>
<div class="filter-field">
<h5>{% trans "Paid before" %}</h5>
<input type="datetime-local" class="filter-field" id="paidBeforeDatePicker">
</div>
</div>
<div class="filter-group">
<div class="filter-field">
<input type="button" value="{% trans "Filter" %}" class="filter-button btn btn-success">
<input type="button" value="{% trans "Reset" %}" class="filter-button btn btn-warning">
</div>
</div>
</div>
</form>
<div class="row content-area">
<div class="form-inline col-md-12 first-filter">
<div class="form-group filters">
<label for="addedBeforeDatePicker"><h4>{% trans "Added" %}</h4></label>
<md-datepicker class="filter-field" id="addedAfterDatePicker" ng-model="addedAfterDatePicker" md-placeholder="{% trans "Added after" %}"></md-datepicker>
<md-datepicker class="filter-field" id="addedBeforeDatePicker" ng-model="addedBeforeDatePicker" md-placeholder="{% trans "Added before" %}"></md-datepicker>
</div>
</div>
<div class="form-inline col-md-12">
<div class="form-group filters">
<label for="paidBeforeDatePicker"><h4>{% trans "Paid" %}</h4></label>
<md-datepicker class="filter-field" id="paidAfterDatePicker" ng-model="paidAfterDatePicker" md-placeholder="{% trans "Paid after" %}"></md-datepicker>
<md-datepicker class="filter-field" id="paidBeforeDatePicker" ng-model="paidBeforeDatePicker" md-placeholder="{% trans "Paid before" %}"></md-datepicker>
</div>
</div>
<div class="form-inline col-md-12 last-filter">
<div class="form-group filters">
<input class="filter-field form-control" type="text" id="searchFilter" placeholder="{% trans "Search" %}" ng-keypress="pressKeyOnSearch($event)" ng-model="searchFilter"></input>
<input type="button" value="{% trans "Filter" %}" class="filter-field btn btn-success" ng-click="doFilter()" />
<input type="button" value="{% trans "Reset" %}" class="filter-field btn btn-warning" ng-click="clearFilter()" />
</div>
<div class="content-area-title form-group">
<h3 class="inline-title">{% trans "Member register" %}</h3>
<input type="button" value="{% trans "Download CSV" %}" id="download-csv" class="btn btn-info" ng-click="loadCSV()"/>
@@ -44,25 +61,31 @@
<th>{% trans "Residence" %}</th>
<th>{% trans "Added" %}</th>
<th>{% trans "Paid" %}</th>
<th class="table-button-column">{% trans "Member count" %}: {$ members.length $}</th>
<th class="table-button-column">{% trans "Member count" %}: {{ member_count }}</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="x in shown_members | orderBy: 'last_name'">
<td>{$ x.last_name $}</td>
<td>{$ x.first_name $}</td>
<td>{$ x.email $}</td>
<td>{$ x.AYY $}</td>
<td>{$ x.jas $}</td>
<td>{$ x.POR $}</td>
<td>{$ x.created $}</td>
<td>{$ x.paid $}</td>
{% for member in member_list %}
<tr>
<td>{{ member.last_name }}</td>
<td>{{ member.first_name }}</td>
<td>{{ member.email }}</td>
<td>{{ member.AYY }}</td>
<td>{{ member.jas }}</td>
<td>{{ member.POR }}</td>
<td>{{ member.created }}</td>
<td>{{ member.paid }}</td>
<td class="table-button-column">
<input type="button" value="{% trans "Update payment" %}" class="table-button btn btn-success" ng-click="updatePayment(x.id)" />
<a href="/members/edit/{$ x.id $}"<input type="button" value="{% trans "Edit" %}" class="table-button btn btn-info">{% trans "Edit" %}</input></a>
<input type="button" value="{% trans "Delete" %}" class="table-button btn btn-danger" confirmed-click="deleteMember(x.id)" ng-confirm-click="{% trans "Are you sure?" %}"/>
<input type="button" value="{% trans "Update payment" %}" class="table-button btn btn-success" />
<a href="/members/edit/{{ member.id }}">
<input type="button" value="{% trans "Edit" %}" class="table-button btn btn-info" value="{% trans "Edit" %}" />
</a>
<a href="/members/delete_member_confirm/{{ member.id }}">
<input type="button" value="{% trans "Delete" %}" class="table-button btn btn-danger" />
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<div class="row" id="tommy">
+6 -15
View File
@@ -1,7 +1,9 @@
<!DOCTYPE html>
{% load staticfiles %}
{% load static %}
{% load i18n %}
<!DOCTYPE html>
<html lang="en" ng-app="memberApp">
<head>
<base href="/">
@@ -11,31 +13,20 @@
<meta name="author" content="veedeeämkoo">
<title>{% trans "Member register" %}</title>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.css" rel = "stylesheet">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.js"></script>
<!-- Angular -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.6/angular.js"></script>
<!-- Angular routing -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-route.js"></script>
<!-- Underscore.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<!-- DatePicker -->
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/angular_material/1.0.0/angular-material.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/angular_material/1.0.0/angular-material.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-messages.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-animate.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-aria.min.js"></script>
<script src="/static/js/jquery.noty.packaged.js"></script>
<script src="/static/js/appconfig.js"></script>
<!--
<script src="/static/js/members_controllers.js"></script>
-->
<script src="/static/js/moment.js"></script>
<link href="/static/css/simple-sidebar.css" rel="stylesheet">
<link rel="stylesheet" href="{% static "css/base.css" %}">
+7
View File
@@ -15,6 +15,9 @@ 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
from members.views import update_member
from members.views import delete_member_confirm
from members.views import delete_member
# members API
from members.views import MembersList as memsListAPI
@@ -52,7 +55,11 @@ 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),
url(r'^update_member$', update_member),
url(r'^delete_member$', delete_member),
url(r'^delete_member_confirm/(?P<index>\d+)$', delete_member_confirm),
#application
url(r'^application/$', application_index),
+60 -7
View File
@@ -85,7 +85,11 @@ def send_mail_wrapper(subject, message):
@require_http_methods(["GET"])
@permission_required('members.change_member', login_url='/login')
def member_list(request, *args, **kwargs):
context = {}
members = Member.objects.all()
context = {
'member_list': members,
'member_count': len(members)
}
return render(request, 'member_list.html', context)
@ensure_csrf_cookie
@@ -95,6 +99,18 @@ def add_member(request, *args, **kwargs):
form = MemberForm()
return render(request, 'add_member.html', {'form': form})
@ensure_csrf_cookie
@require_http_methods(["GET"])
@permission_required('members.change_member', login_url='/login')
def delete_member_confirm(request, *args, **kwargs):
i = kwargs.pop('index', None)
if i is None:
return HttpResponse(status=500, error="{'error': 'No member id specified'}")
else:
member = Member.objects.get(id=i)
form = MemberForm(instance=member)
return render(request, 'delete_member_confirm.html', {'member_id': i, 'form': form})
@ensure_csrf_cookie
@require_http_methods(["GET"])
@permission_required('members.change_member', login_url='/login')
@@ -107,14 +123,49 @@ def add_many_members(request, *args, **kwargs):
def submit_member(request, *args, **kwargs):
form = MemberForm(request.POST)
if form.is_valid():
print(request.POST)
return HttpResponse('jee')
form.save()
logging.info("Saved new member to member register with the following info: {}".format(form))
return HttpResponseRedirect('/members')
else:
print(request.POST)
print(form.errors)
return HttpResponse('oh shit')
return HttpResponseRedirect('/members')
@ensure_csrf_cookie
@require_http_methods(["POST"])
@permission_required('members.change_member', login_url='/login')
def update_member(request, *args, **kwargs):
form = MemberForm(request.POST)
if form.is_valid():
id = request.POST['id']
member = Member.objects.get(id=id)
form = MemberForm(request.POST, instance=member)
form.save()
logging.info("Updated member in member register with the following info: {}".format(form))
return HttpResponseRedirect('/members')
else:
print(form.errors)
return HttpResponse('oh shit')
@ensure_csrf_cookie
@require_http_methods(["POST"])
@permission_required('members.change_member', login_url='/login')
def delete_member(request, *args, **kwargs):
try:
id = request.POST['id']
except KeyError:
return HttpResponse(401)
try:
member = Member.objects.get(id=id)
member.delete()
return HttpResponseRedirect('/members')
except:
resp = HttpResponse('{"error" : "could not delete object"}')
resp.status_code = 500
return resp
@ensure_csrf_cookie
@require_http_methods(["GET"])
@@ -132,11 +183,13 @@ def tommy_blooper(request, *args, **kwargs):
@require_http_methods(["GET"])
@permission_required('members.change_member', login_url='/login')
def edit_member(request, *args, **kwargs):
i = kwargs.pop('index', None);
i = kwargs.pop('index', None)
if i is None:
return HttpResponse(status=500, error="{'error': 'No member id specified'}")
else:
return render(request, 'edit_member.html', {'member_id' : i})
member = Member.objects.get(id=i)
form = MemberForm(instance=member)
return render(request, 'edit_member.html', {'member_id': i, 'form': form})
@ensure_csrf_cookie
@require_http_methods(["GET"])