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 "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -21,64 +21,66 @@ msgstr ""
msgid "ABB jobs" msgid "ABB jobs"
msgstr "ABB jobs" msgstr "ABB jobs"
#: infoscreen/models.py:85 #: infoscreen/models.py:84
#, fuzzy msgid "APY Item"
#| msgid "External image" msgstr "ÄPY Item"
msgid "External website"
msgstr "External image"
#: infoscreen/models.py:131 #: infoscreen/models.py:95
msgid "External website"
msgstr "External website"
#: infoscreen/models.py:141
msgid "Sössö articles" msgid "Sössö articles"
msgstr "Sössö articles" msgstr "Sössö articles"
#: infoscreen/models.py:140 #: infoscreen/models.py:150
msgid "Events" msgid "Events"
msgstr "" msgstr "Events"
#: infoscreen/models.py:152 #: infoscreen/models.py:162
msgid "Image" msgid "Image"
msgstr "" msgstr "Image"
#: infoscreen/models.py:170 #: infoscreen/models.py:180
msgid "HSL timetables" msgid "HSL timetables"
msgstr "HSL timetables" msgstr "HSL timetables"
#: infoscreen/models.py:180 #: infoscreen/models.py:190
msgid "External image" msgid "External image"
msgstr "External image" msgstr "External image"
#: infoscreen/templates/infoscreen_admin.html:23 #: infoscreen/templates/infoscreen_admin.html:23
#: members/templates/members_base.html:60 #: members/templates/members_base.html:51
msgid "Log out" msgid "Log out"
msgstr "" msgstr "Log out"
#: infoscreen/templates/infoscreen_admin.html:30 #: infoscreen/templates/infoscreen_admin.html:30
msgid "Infoscreen Admin Pane" msgid "Infoscreen Admin Pane"
msgstr "" msgstr "Infoscreen Admin Pane"
#: infoscreen/templates/infoscreen_admin.html:35 #: infoscreen/templates/infoscreen_admin.html:35
msgid "Info items" msgid "Info items"
msgstr "" msgstr "Info items"
#: infoscreen/templates/infoscreen_admin.html:36 #: infoscreen/templates/infoscreen_admin.html:36
msgid "Infoitems available for rotations" msgid "Infoitems available for rotations"
msgstr "" msgstr "Infoitems available for rotations"
#: infoscreen/templates/infoscreen_admin.html:39 #: infoscreen/templates/infoscreen_admin.html:39
msgid "Item" msgid "Item"
msgstr "" msgstr "Item"
#: infoscreen/templates/infoscreen_admin.html:40 #: infoscreen/templates/infoscreen_admin.html:40
msgid "Type" msgid "Type"
msgstr "" msgstr "Type"
#: infoscreen/templates/infoscreen_admin.html:41 #: infoscreen/templates/infoscreen_admin.html:41
msgid "Set duration" msgid "Set duration"
msgstr "" msgstr "Set duration"
#: infoscreen/templates/infoscreen_admin.html:42 #: infoscreen/templates/infoscreen_admin.html:42
msgid "Add to rotation" msgid "Add to rotation"
msgstr "" msgstr "Add to rotation"
#: infoscreen/templates/infoscreen_admin.html:43 #: infoscreen/templates/infoscreen_admin.html:43
#: infoscreen/templates/infoscreen_admin.html:50 #: infoscreen/templates/infoscreen_admin.html:50
@@ -86,221 +88,243 @@ msgstr ""
#: infoscreen/templates/infoscreen_admin.html:84 #: infoscreen/templates/infoscreen_admin.html:84
#: infoscreen/templates/infoscreen_admin.html:101 #: infoscreen/templates/infoscreen_admin.html:101
#: infoscreen/templates/infoscreen_admin.html:105 #: infoscreen/templates/infoscreen_admin.html:105
#: members/templates/member_list.html:63 #: members/templates/member_list.html:84
msgid "Delete" msgid "Delete"
msgstr "" msgstr "Delete"
#: infoscreen/templates/infoscreen_admin.html:49 #: infoscreen/templates/infoscreen_admin.html:49
msgid "Add" msgid "Add"
msgstr "" msgstr "Add"
#: infoscreen/templates/infoscreen_admin.html:53 #: infoscreen/templates/infoscreen_admin.html:53
msgid "Create new item" msgid "Create new item"
msgstr "" msgstr "Create new item"
#: infoscreen/templates/infoscreen_admin.html:56 #: infoscreen/templates/infoscreen_admin.html:56
msgid "Item type" msgid "Item type"
msgstr "" msgstr "Item type"
#: infoscreen/templates/infoscreen_admin.html:67 #: infoscreen/templates/infoscreen_admin.html:67
msgid "Rotations" msgid "Rotations"
msgstr "" msgstr "Rotations"
#: infoscreen/templates/infoscreen_admin.html:69 #: infoscreen/templates/infoscreen_admin.html:69
msgid "Select rotation to edit" msgid "Select rotation to edit"
msgstr "" msgstr "Select rotation to edit"
#: infoscreen/templates/infoscreen_admin.html:73 #: infoscreen/templates/infoscreen_admin.html:73
#: infoscreen/templates/infoscreen_admin.html:95 #: infoscreen/templates/infoscreen_admin.html:95
msgid "Rotation" msgid "Rotation"
msgstr "" msgstr "Rotation"
#: infoscreen/templates/infoscreen_admin.html:74 #: infoscreen/templates/infoscreen_admin.html:74
msgid "id" msgid "id"
msgstr "" msgstr "id"
#: infoscreen/templates/infoscreen_admin.html:75 #: infoscreen/templates/infoscreen_admin.html:75
#: infoscreen/templates/infoscreen_admin.html:82 #: infoscreen/templates/infoscreen_admin.html:82
msgid "Select" msgid "Select"
msgstr "" msgstr "Select"
#: infoscreen/templates/infoscreen_admin.html:76 #: infoscreen/templates/infoscreen_admin.html:76
#: infoscreen/templates/infoscreen_admin.html:83 #: infoscreen/templates/infoscreen_admin.html:83
msgid "Preview" msgid "Preview"
msgstr "" msgstr "Preview"
#: infoscreen/templates/infoscreen_admin.html:87 #: infoscreen/templates/infoscreen_admin.html:87
msgid "Name" msgid "Name"
msgstr "" msgstr "Name"
#: infoscreen/templates/infoscreen_admin.html:88 #: infoscreen/templates/infoscreen_admin.html:88
msgid "Create new" msgid "Create new"
msgstr "" msgstr "Create new"
#: infoscreen/templates/infoscreen_admin.html:96 #: infoscreen/templates/infoscreen_admin.html:96
msgid "Instances in currently selected rotation" msgid "Instances in currently selected rotation"
msgstr "" msgstr "Instances in currently selected rotation"
#: infoscreen/templates/infoscreen_admin.html:99 #: infoscreen/templates/infoscreen_admin.html:99
msgid "Instance" msgid "Instance"
msgstr "" msgstr "Instance"
#: infoscreen/templates/infoscreen_admin.html:100 #: infoscreen/templates/infoscreen_admin.html:100
msgid "Duration" 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 "" msgstr ""
#: members/templates/member_list.html:13 members/templates/member_list.html:45 #: members/templates/delete_member_confirm.html:8
msgid "Added" msgid "Are you sure you want to delete this member?"
msgstr "" msgstr "Are you sure you want to delete this member?"
#: members/templates/member_list.html:14 #: members/templates/delete_member_confirm.html:17
msgid "Added after" msgid "Yes, I'm sure"
msgstr "" msgstr "Yes, I'm sure"
#: members/templates/member_list.html:9
msgid "Show filters"
msgstr "Show filters"
#: members/templates/member_list.html:15 #: 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" msgid "Search"
msgstr "" msgstr "Search"
#: members/templates/member_list.html:28 #: members/templates/member_list.html:20
msgid "Filter" msgid "Added after"
msgstr "" msgstr "Added after"
#: members/templates/member_list.html:29 #: members/templates/member_list.html:24
msgid "Reset" msgid "Added before"
msgstr "" msgstr "Added before"
#: members/templates/member_list.html:32 members/templates/members_base.html:13 #: members/templates/member_list.html:30
msgid "Member register" msgid "Paid after"
msgstr "" msgstr "Paid after"
#: members/templates/member_list.html:33 #: members/templates/member_list.html:34
msgid "Download CSV" msgid "Paid before"
msgstr "" msgstr "Paid before"
#: members/templates/member_list.html:39
msgid "Last name"
msgstr ""
#: members/templates/member_list.html:40 #: members/templates/member_list.html:40
msgid "First name" msgid "Filter"
msgstr "" msgstr "Filter"
#: members/templates/member_list.html:41 #: members/templates/member_list.html:41
msgid "Email" msgid "Reset"
msgstr "" 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" msgid "AYY member"
msgstr "" msgstr "AYY member"
#: members/templates/member_list.html:43 #: members/templates/member_list.html:60
msgid "JAS recipient" msgid "JAS recipient"
msgstr "" msgstr "JAS recipient"
#: members/templates/member_list.html:44
msgid "Residence"
msgstr ""
#: members/templates/member_list.html:47
msgid "Member count"
msgstr ""
#: members/templates/member_list.html:61 #: members/templates/member_list.html:61
msgid "Update payment" msgid "Residence"
msgstr "" msgstr "Residence"
#: members/templates/member_list.html:62 #: members/templates/member_list.html:62
msgid "Edit" msgid "Added"
msgstr "" msgstr "Added"
#: members/templates/member_list.html:63 #: members/templates/member_list.html:63
msgid "Are you sure?" msgid "Paid"
msgstr "" 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" msgid "Member list"
msgstr "" msgstr "Member list"
#: members/templates/members_base.html:51 #: members/templates/members_base.html:43
msgid "Add member"
msgstr ""
#: members/templates/members_base.html:52
msgid "Add multiple" msgid "Add multiple"
msgstr "" msgstr "Add multiple"
#: members/templates/members_base.html:53 #: members/templates/members_base.html:44
msgid "Member application" 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" msgid "Member register of SIK ry"
msgstr "" msgstr "Member register of SIK ry"
#: sikweb/settings-docker-sample.py:170 sikweb/settings-sample.py:170
#: sikweb/settings.py:170
msgid "English"
msgstr ""
#: sikweb/settings-docker-sample.py:171 sikweb/settings-sample.py:171 #: sikweb/settings-docker-sample.py:171 sikweb/settings-sample.py:171
#: sikweb/settings.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" msgid "Finnish"
msgstr "" msgstr "Finnish"
#: templates/footer.html:11 #: templates/footer.html:11
msgid "Copyright Aalto-yliopiston Sähköinsinöörikilta ry" 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 #: webapp/templates/admin_index.html:6
msgid "SIK Admin" msgid "SIK Admin"
msgstr "" msgstr "SIK Admin"
#: webapp/templates/main_index.html:7 #: webapp/templates/main_index.html:7
msgid "Members" msgid "Members"
msgstr "" msgstr "Members"
#: webapp/templates/main_index.html:8 #: webapp/templates/main_index.html:8
msgid "Infoscreen" msgid "Infoscreen"
msgstr "" msgstr "Infoscreen"
#: webapp/templates/main_index.html:9 #: webapp/templates/main_index.html:9
msgid "Admin tools" msgid "Admin tools"
msgstr "" msgstr "Admin tools"
#: webapp/templates/navigation.html:29 #: webapp/templates/navigation.html:29
msgid "Event calendar" msgid "Event calendar"
msgstr "" msgstr "Event calendar"
#: webapp/templates/navigation.html:30 #: webapp/templates/navigation.html:30
msgid "International" msgid "International"
msgstr "" msgstr "International"
#: webapp/templates/navigation.html:31 #: webapp/templates/navigation.html:31
msgid "Sössö" msgid "Sössö"
msgstr "" msgstr "Sössö"
#: webapp/templates/navigation.html:32 #: webapp/templates/navigation.html:32
msgid "Contact" msgid "Contact"
msgstr "" msgstr "Contact"
#~ msgid "Coffee display" #~ msgid "Are you sure?"
#~ msgstr "Coffee display" #~ msgstr "Are you sure?"
#~ msgid "Image upload"
#~ msgstr "Image upload"
Binary file not shown.
+127 -95
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -22,32 +22,36 @@ msgstr ""
msgid "ABB jobs" msgid "ABB jobs"
msgstr "ABB-työpaikat" 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" msgid "External website"
msgstr "Ulkoinen verkkosivu" msgstr "Ulkoinen verkkosivu"
#: infoscreen/models.py:131 #: infoscreen/models.py:141
msgid "Sössö articles" msgid "Sössö articles"
msgstr "Sössön artikkelit" msgstr "Sössön artikkelit"
#: infoscreen/models.py:140 #: infoscreen/models.py:150
msgid "Events" msgid "Events"
msgstr "Tapahtumat" msgstr "Tapahtumat"
#: infoscreen/models.py:152 #: infoscreen/models.py:162
msgid "Image" msgid "Image"
msgstr "Kuva" msgstr "Kuva"
#: infoscreen/models.py:170 #: infoscreen/models.py:180
msgid "HSL timetables" msgid "HSL timetables"
msgstr "HSL-aikataulut" msgstr "HSL-aikataulut"
#: infoscreen/models.py:180 #: infoscreen/models.py:190
msgid "External image" msgid "External image"
msgstr "Ulkoinen kuva" msgstr "Ulkoinen kuva"
#: infoscreen/templates/infoscreen_admin.html:23 #: infoscreen/templates/infoscreen_admin.html:23
#: members/templates/members_base.html:60 #: members/templates/members_base.html:51
msgid "Log out" msgid "Log out"
msgstr "Kirjaudu ulos" msgstr "Kirjaudu ulos"
@@ -85,7 +89,7 @@ msgstr "Lisää rotaatioon"
#: infoscreen/templates/infoscreen_admin.html:84 #: infoscreen/templates/infoscreen_admin.html:84
#: infoscreen/templates/infoscreen_admin.html:101 #: infoscreen/templates/infoscreen_admin.html:101
#: infoscreen/templates/infoscreen_admin.html:105 #: infoscreen/templates/infoscreen_admin.html:105
#: members/templates/member_list.html:63 #: members/templates/member_list.html:84
msgid "Delete" msgid "Delete"
msgstr "Poista" msgstr "Poista"
@@ -148,117 +152,142 @@ msgstr "Dia"
msgid "Duration" msgid "Duration"
msgstr "Kesto" msgstr "Kesto"
#: members/templates/member_list.html:13 members/templates/member_list.html:45 #: members/models.py:11 members/templates/member_list.html.py:57
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
msgid "First name" msgid "First name"
msgstr "Etunimi" 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" msgid "Email"
msgstr "Sähköposti" msgstr "Sähköposti"
#: members/templates/member_list.html:42 #: members/models.py:14
msgid "AYY member" msgid "Place of residence"
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"
msgstr "Asuinpaikka" msgstr "Asuinpaikka"
#: members/templates/member_list.html:47 #: members/models.py:15
msgid "Member count" msgid "AYY"
msgstr "Lukumäärä" msgstr "AYY"
#: members/templates/member_list.html:61 #: members/models.py:16
msgid "Update payment" msgid "JAS"
msgstr "Päivitä maksu" msgstr "JAS"
#: members/templates/member_list.html:62 #: members/templates/add_member.html:8 members/templates/edit_member.html:8
msgid "Edit" #: members/templates/members_base.html:42
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
msgid "Add member" msgid "Add member"
msgstr "Lisää jäsen" 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" msgid "Add multiple"
msgstr "Lisää useita" msgstr "Lisää useita"
#: members/templates/members_base.html:53 #: members/templates/members_base.html:44
msgid "Member application" msgid "Member application"
msgstr "Jäsenhakemus" msgstr "Jäsenhakemus"
#: members/templates/members_base.html:69 #: members/templates/members_base.html:60
msgid "Member register of SIK ry" msgid "Member register of SIK ry"
msgstr "Aalto-yliopiston Sähköinsinöörikilta ry:n jäsenrekisteri" msgstr "Aalto-yliopiston Sähköinsinöörikilta ry:n jäsenrekisteri"
#: sikweb/settings-docker-sample.py:170 sikweb/settings-sample.py:170 #: sikweb/settings-docker-sample.py:171 sikweb/settings-sample.py:171
#: sikweb/settings.py:170 #: sikweb/settings.py:171
msgid "English" msgid "English"
msgstr "englanti" msgstr "englanti"
#: sikweb/settings-docker-sample.py:171 sikweb/settings-sample.py:171 #: sikweb/settings-docker-sample.py:172 sikweb/settings-sample.py:172
#: sikweb/settings.py:171 #: sikweb/settings.py:172
msgid "Finnish" msgid "Finnish"
msgstr "suomi" msgstr "suomi"
@@ -297,3 +326,6 @@ msgstr "Sössö"
#: webapp/templates/navigation.html:32 #: webapp/templates/navigation.html:32
msgid "Contact" msgid "Contact"
msgstr "Yhteystiedot" msgstr "Yhteystiedot"
#~ msgid "Are you sure?"
#~ msgstr "Oletko varma?"
+8 -7
View File
@@ -1,9 +1,10 @@
from django import forms from django import forms
class MemberForm(forms.Form): from members.models import Member
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) class MemberForm(forms.ModelForm):
is_AYY = forms.BooleanField(label="AYY", required=False, initial=True)
is_JAS = forms.BooleanField(label="JAS", required=False, initial=True) class Meta:
residence = forms.CharField(label="Place of residence", max_length=100) 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.db import models
from django.utils import timezone from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from datetime import datetime from datetime import datetime
from io import StringIO
import csv
class BaseMember(models.Model): class BaseMember(models.Model):
''' '''
Base model for member. Base model for member.
''' '''
first_name = models.CharField(max_length=127) first_name = models.CharField(_("First name"), max_length=127)
last_name = models.CharField(max_length=127) last_name = models.CharField(_("Last name"), max_length=127)
email = models.EmailField() email = models.EmailField(_("Email"))
POR = models.CharField(default="ei_tiedossa", max_length=255) # place of residence POR = models.CharField(_("Place of residence"), max_length=255) # place of residence
AYY = models.BooleanField(default=False) AYY = models.BooleanField(_("AYY"), default=False)
jas = models.BooleanField(default=False) jas = models.BooleanField(_("JAS"), default=False)
class Meta: class Meta:
abstract = True abstract = True
+49 -12
View File
@@ -1,3 +1,11 @@
div {
padding: 0.5rem;
}
input {
padding: 0.5rem;
}
#download-csv { #download-csv {
margin-left: 20px; margin-left: 20px;
} }
@@ -13,11 +21,6 @@
float: left; float: left;
} }
.filter-field {
margin-left: 5px;
margin-right: 5px;
}
.table-button { .table-button {
margin-left: 5px; margin-left: 5px;
margin-right: 5px; margin-right: 5px;
@@ -28,18 +31,52 @@
text-align: right; text-align: right;
} }
.filters { #filter-collapser {
text-align: right;
float: right; float: right;
margin-bottom: 5px; margin-left: 1rem;
} }
.first-filter { .filter-form {
margin-top: 20px;
} }
.last-filter { .filter-row {
margin-bottom: 30px; 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 { .inline-title {
+3 -28
View File
@@ -1,43 +1,18 @@
{% extends "members_base.html" %} {% extends "members_base.html" %}
{% load bootstrap3 %} {% load bootstrap3 %}
{% load i18n %}
{% block content %} {% block content %}
<div> <div>
<h3> Lisää jäsen </h3> <h3>{% trans "Add member" %}</h3>
<div id="input_form"> <div id="input_form">
<form name="memberForm" action="/members/submit_member" method="post" class="form">{% csrf_token %} <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 %} {% bootstrap_form form %}
{% buttons %} {% buttons %}
<button type="submit" class="btn btn-primary"> <button type="submit" class="btn btn-primary">
Tallenna {% trans "Save" %}
</button> </button>
{% endbuttons %} {% endbuttons %}
</form> </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" %} {% extends "members_base.html" %}
{% load i18n %}
{% load bootstrap3 %}
{% block content %} {% block content %}
<script> <div>
var memberId = {{ member_id }}; <h3>{% trans "Add member" %}</h3>
</script>
<div ng-controller="editController">
<h1> Muokkaa jäsentietoja </h1>
<div id="input_form"> <div id="input_form">
<form name="memberForm"> <form name="memberForm" action="/members/update_member" method="post" class="form">{% csrf_token %}
<div class="form-group"> <input type="hidden" name="id" value="{{ member_id }}">
<label>Etunimi: </label> {% bootstrap_form form %}
<input id="firstNameField" required type="text" placeholder="Sähkö" class="form-control" ng-model="member.first_name"></input> {% buttons %}
</div> <button type="submit" class="btn btn-primary">
<div class="form-group"> {% trans "Save" %}
<label>Sukunimi: </label> </button>
<input id="lastNameField" required type="text" placeholder="Insinööri" class="form-control" ng-model="member.last_name"></input> {% endbuttons %}
</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> </form>
</div> </div>
</div> </div>
+58 -35
View File
@@ -4,30 +4,47 @@
{% load i18n %} {% load i18n %}
{% block content %} {% block content %}
<link rel="stylesheet" href="{% static "css/jasenlista.css" %}"> <link rel="stylesheet" href="{% static "css/jasenlista.css" %}">
<div ng-controller="getController"> <div>
<div class="row"> <a id="filter-collapser" href="#collapse-filters" data-toggle="collapse" class="btn btn-info">
</div> {% 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="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-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"> <div class="content-area-title form-group">
<h3 class="inline-title">{% trans "Member register" %}</h3> <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()"/> <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 "Residence" %}</th>
<th>{% trans "Added" %}</th> <th>{% trans "Added" %}</th>
<th>{% trans "Paid" %}</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> </tr>
</thead> </thead>
<tbody> <tbody>
<tr ng-repeat="x in shown_members | orderBy: 'last_name'"> {% for member in member_list %}
<td>{$ x.last_name $}</td> <tr>
<td>{$ x.first_name $}</td> <td>{{ member.last_name }}</td>
<td>{$ x.email $}</td> <td>{{ member.first_name }}</td>
<td>{$ x.AYY $}</td> <td>{{ member.email }}</td>
<td>{$ x.jas $}</td> <td>{{ member.AYY }}</td>
<td>{$ x.POR $}</td> <td>{{ member.jas }}</td>
<td>{$ x.created $}</td> <td>{{ member.POR }}</td>
<td>{$ x.paid $}</td> <td>{{ member.created }}</td>
<td>{{ member.paid }}</td>
<td class="table-button-column"> <td class="table-button-column">
<input type="button" value="{% trans "Update payment" %}" class="table-button btn btn-success" ng-click="updatePayment(x.id)" /> <input type="button" value="{% trans "Update payment" %}" class="table-button btn btn-success" />
<a href="/members/edit/{$ x.id $}"<input type="button" value="{% trans "Edit" %}" class="table-button btn btn-info">{% trans "Edit" %}</input></a> <a href="/members/edit/{{ member.id }}">
<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 "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> </td>
</tr> </tr>
{% endfor %}
</tbody> </tbody>
</table> </table>
<div class="row" id="tommy"> <div class="row" id="tommy">
+6 -15
View File
@@ -1,7 +1,9 @@
<!DOCTYPE html>
{% load staticfiles %} {% load staticfiles %}
{% load static %} {% load static %}
{% load i18n %} {% load i18n %}
<!DOCTYPE html>
<html lang="en" ng-app="memberApp"> <html lang="en" ng-app="memberApp">
<head> <head>
<base href="/"> <base href="/">
@@ -11,31 +13,20 @@
<meta name="author" content="veedeeämkoo"> <meta name="author" content="veedeeämkoo">
<title>{% trans "Member register" %}</title> <title>{% trans "Member register" %}</title>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <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"> <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> <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 --> <!-- Underscore.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script> <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/jquery.noty.packaged.js"></script>
<script src="/static/js/appconfig.js"></script>
<!--
<script src="/static/js/members_controllers.js"></script> <script src="/static/js/members_controllers.js"></script>
-->
<script src="/static/js/moment.js"></script> <script src="/static/js/moment.js"></script>
<link href="/static/css/simple-sidebar.css" rel="stylesheet"> <link href="/static/css/simple-sidebar.css" rel="stylesheet">
<link rel="stylesheet" href="{% static "css/base.css" %}"> <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 export_csv as mem_csv_export
from members.views import tommy_blooper from members.views import tommy_blooper
from members.views import submit_member 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 # members API
from members.views import MembersList as memsListAPI 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/members/(?P<pk>\d+)/$', memDetailAPI.as_view()),
url(r'^rest/api/requests/$', reqListAPI.as_view()), url(r'^rest/api/requests/$', reqListAPI.as_view()),
url(r'^rest/api/requests/(?P<pk>\d+)/$', reqDetailAPI.as_view()), url(r'^rest/api/requests/(?P<pk>\d+)/$', reqDetailAPI.as_view()),
url(r'^submit_member$', submit_member), 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 #application
url(r'^application/$', application_index), url(r'^application/$', application_index),
+60 -7
View File
@@ -85,7 +85,11 @@ def send_mail_wrapper(subject, message):
@require_http_methods(["GET"]) @require_http_methods(["GET"])
@permission_required('members.change_member', login_url='/login') @permission_required('members.change_member', login_url='/login')
def member_list(request, *args, **kwargs): 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) return render(request, 'member_list.html', context)
@ensure_csrf_cookie @ensure_csrf_cookie
@@ -95,6 +99,18 @@ def add_member(request, *args, **kwargs):
form = MemberForm() form = MemberForm()
return render(request, 'add_member.html', {'form': form}) 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 @ensure_csrf_cookie
@require_http_methods(["GET"]) @require_http_methods(["GET"])
@permission_required('members.change_member', login_url='/login') @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): def submit_member(request, *args, **kwargs):
form = MemberForm(request.POST) form = MemberForm(request.POST)
if form.is_valid(): if form.is_valid():
print(request.POST) form.save()
return HttpResponse('jee') logging.info("Saved new member to member register with the following info: {}".format(form))
return HttpResponseRedirect('/members')
else: else:
print(request.POST)
print(form.errors) print(form.errors)
return HttpResponse('oh shit') 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 @ensure_csrf_cookie
@require_http_methods(["GET"]) @require_http_methods(["GET"])
@@ -132,11 +183,13 @@ def tommy_blooper(request, *args, **kwargs):
@require_http_methods(["GET"]) @require_http_methods(["GET"])
@permission_required('members.change_member', login_url='/login') @permission_required('members.change_member', login_url='/login')
def edit_member(request, *args, **kwargs): def edit_member(request, *args, **kwargs):
i = kwargs.pop('index', None); i = kwargs.pop('index', None)
if i is None: if i is None:
return HttpResponse(status=500, error="{'error': 'No member id specified'}") return HttpResponse(status=500, error="{'error': 'No member id specified'}")
else: 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 @ensure_csrf_cookie
@require_http_methods(["GET"]) @require_http_methods(["GET"])