Merge branch 'develop' into 'master'

HSL fix to master

See merge request !30
This commit is contained in:
Jan Tuomi
2017-05-27 12:40:35 +03:00
18 changed files with 426 additions and 174 deletions
+1 -1
View File
@@ -29,7 +29,7 @@ class HSLFetcher:
arr = []
time = datetime.now() + timedelta(minute=settings.HSL_DEPARTURE_THRESHOLD)
time = datetime.now() + timedelta(minutes=settings.HSL_DEPARTURE_THRESHOLD)
time = "{0:02d}{0:02d}".format(time.hour, time.minute)
for element in data:
src = urllib.request.urlopen(
Binary file not shown.
+115 -81
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-18 13:30+0300\n"
"POT-Creation-Date: 2017-05-26 19:53+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"
@@ -17,137 +17,137 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: infoscreen/models.py:75
#: infoscreen/models.py:77
msgid "ABB jobs"
msgstr "ABB jobs"
#: infoscreen/models.py:84
#: infoscreen/models.py:88
msgid "APY Item"
msgstr "ÄPY Item"
#: infoscreen/models.py:95
#: infoscreen/models.py:99
msgid "External website"
msgstr "External website"
#: infoscreen/models.py:141
#: infoscreen/models.py:147
msgid "Sössö articles"
msgstr "Sössö articles"
#: infoscreen/models.py:150
#: infoscreen/models.py:158
msgid "Events"
msgstr "Events"
#: infoscreen/models.py:162
#: infoscreen/models.py:169
msgid "Image"
msgstr "Image"
#: infoscreen/models.py:180
#: infoscreen/models.py:204
msgid "HSL timetables"
msgstr "HSL timetables"
#: infoscreen/models.py:190
#: infoscreen/models.py:215
msgid "External image"
msgstr "External image"
#: infoscreen/templates/infoscreen_admin.html:23
#: members/templates/members_base.html:75
#: infoscreen/templates/infoscreen_admin.html:24
#: members/templates/members_base.html:69
msgid "Log out"
msgstr "Log out"
#: infoscreen/templates/infoscreen_admin.html:30
#: infoscreen/templates/infoscreen_admin.html:31
msgid "Infoscreen Admin Pane"
msgstr "Infoscreen Admin Pane"
#: infoscreen/templates/infoscreen_admin.html:35
#: infoscreen/templates/infoscreen_admin.html:36
msgid "Info items"
msgstr "Info items"
#: infoscreen/templates/infoscreen_admin.html:36
#: infoscreen/templates/infoscreen_admin.html:37
msgid "Infoitems available for rotations"
msgstr "Infoitems available for rotations"
#: infoscreen/templates/infoscreen_admin.html:39
#: infoscreen/templates/infoscreen_admin.html:40
msgid "Item"
msgstr "Item"
#: infoscreen/templates/infoscreen_admin.html:40
#: infoscreen/templates/infoscreen_admin.html:41
msgid "Type"
msgstr "Type"
#: infoscreen/templates/infoscreen_admin.html:41
#: infoscreen/templates/infoscreen_admin.html:42
msgid "Set duration"
msgstr "Set duration"
#: infoscreen/templates/infoscreen_admin.html:42
#: infoscreen/templates/infoscreen_admin.html:43
msgid "Add to rotation"
msgstr "Add to rotation"
#: infoscreen/templates/infoscreen_admin.html:43
#: infoscreen/templates/infoscreen_admin.html:50
#: infoscreen/templates/infoscreen_admin.html:77
#: infoscreen/templates/infoscreen_admin.html:84
#: infoscreen/templates/infoscreen_admin.html:101
#: infoscreen/templates/infoscreen_admin.html:105
#: infoscreen/templates/infoscreen_admin.html:44
#: infoscreen/templates/infoscreen_admin.html:51
#: infoscreen/templates/infoscreen_admin.html:78
#: infoscreen/templates/infoscreen_admin.html:85
#: infoscreen/templates/infoscreen_admin.html:102
#: infoscreen/templates/infoscreen_admin.html:106
#: members/templates/member_edit.html:20 members/templates/payment_edit.html:20
msgid "Delete"
msgstr "Delete"
#: infoscreen/templates/infoscreen_admin.html:49
#: infoscreen/templates/infoscreen_admin.html:50
msgid "Add"
msgstr "Add"
#: infoscreen/templates/infoscreen_admin.html:53
#: infoscreen/templates/infoscreen_admin.html:54
msgid "Create new item"
msgstr "Create new item"
#: infoscreen/templates/infoscreen_admin.html:56
#: infoscreen/templates/infoscreen_admin.html:57
msgid "Item type"
msgstr "Item type"
#: infoscreen/templates/infoscreen_admin.html:67
#: infoscreen/templates/infoscreen_admin.html:68
msgid "Rotations"
msgstr "Rotations"
#: infoscreen/templates/infoscreen_admin.html:69
#: infoscreen/templates/infoscreen_admin.html:70
msgid "Select rotation to edit"
msgstr "Select rotation to edit"
#: infoscreen/templates/infoscreen_admin.html:73
#: infoscreen/templates/infoscreen_admin.html:95
#: infoscreen/templates/infoscreen_admin.html:74
#: infoscreen/templates/infoscreen_admin.html:96
msgid "Rotation"
msgstr "Rotation"
#: infoscreen/templates/infoscreen_admin.html:74
#: infoscreen/templates/infoscreen_admin.html:75
msgid "id"
msgstr "id"
#: infoscreen/templates/infoscreen_admin.html:75
#: infoscreen/templates/infoscreen_admin.html:82
#: infoscreen/templates/infoscreen_admin.html:76
#: infoscreen/templates/infoscreen_admin.html:83
msgid "Select"
msgstr "Select"
#: infoscreen/templates/infoscreen_admin.html:76
#: infoscreen/templates/infoscreen_admin.html:83
#: infoscreen/templates/infoscreen_admin.html:77
#: infoscreen/templates/infoscreen_admin.html:84
msgid "Preview"
msgstr "Preview"
#: infoscreen/templates/infoscreen_admin.html:87
#: infoscreen/templates/infoscreen_admin.html:88
msgid "Name"
msgstr "Name"
#: infoscreen/templates/infoscreen_admin.html:88
#: infoscreen/templates/infoscreen_admin.html:89
msgid "Create new"
msgstr "Create new"
#: infoscreen/templates/infoscreen_admin.html:96
#: infoscreen/templates/infoscreen_admin.html:97
msgid "Instances in currently selected rotation"
msgstr "Instances in currently selected rotation"
#: infoscreen/templates/infoscreen_admin.html:99
#: infoscreen/templates/infoscreen_admin.html:100
msgid "Instance"
msgstr "Instance"
#: infoscreen/templates/infoscreen_admin.html:100
#: infoscreen/templates/infoscreen_admin.html:101
msgid "Duration"
msgstr "Duration"
@@ -175,6 +175,18 @@ msgstr "AYY"
msgid "JAS"
msgstr "JAS"
#: members/models.py:69
msgid "Submitted"
msgstr "Submitted"
#: members/models.py:81
msgid "Date"
msgstr "Date"
#: members/models.py:82
msgid "Source"
msgstr "Source"
#: members/models.py:84
msgid "Cash"
msgstr "Cash"
@@ -183,10 +195,26 @@ msgstr "Cash"
msgid "Bank transfer"
msgstr "Bank transfer"
#: members/tables.py:11 members/tables.py:23 members/tables.py:35
#: members/models.py:98
msgid "Created"
msgstr "Created"
#: members/tables.py:9
msgid "Last paid"
msgstr "Last paid"
#: members/tables.py:13 members/tables.py:28 members/tables.py:41
msgid "Edit"
msgstr "Edit"
#: members/tables.py:15 members/tables.py:30 members/tables.py:43
msgid "Options"
msgstr "Options"
#: members/tables.py:24
msgid "Member"
msgstr "Member"
#: members/templates/application_edit.html:9
msgid "Edit application"
msgstr "Edit application"
@@ -211,7 +239,7 @@ msgstr "Error"
msgid "Back"
msgstr "Back"
#: members/templates/member_add.html:8 members/templates/members_base.html:51
#: members/templates/member_add.html:8 members/templates/members_base.html:45
msgid "Add member"
msgstr "Add member"
@@ -273,47 +301,47 @@ msgstr "Member register"
msgid "Download CSV"
msgstr "Download CSV"
#: members/templates/members_base.html:39
#: members/templates/members_base.html:33
msgid "Member register of SIK ry"
msgstr "Member register of SIK ry"
#: members/templates/members_base.html:48 webapp/templates/main_index.html:7
#: members/templates/members_base.html:42 webapp/templates/main_index.html:7
msgid "Members"
msgstr "Members"
#: members/templates/members_base.html:50
#: members/templates/members_base.html:44
msgid "List members"
msgstr "List members"
#: members/templates/members_base.html:52
#: members/templates/members_base.html:46
msgid "Add multiple"
msgstr "Add multiple"
#: members/templates/members_base.html:56
#: members/templates/members_base.html:50
msgid "Payments"
msgstr "Payments"
#: members/templates/members_base.html:58
#: members/templates/members_base.html:52
msgid "List payments"
msgstr "List payments"
#: members/templates/members_base.html:59 members/templates/payment_add.html:8
#: members/templates/members_base.html:53 members/templates/payment_add.html:8
msgid "Add payment"
msgstr "Add payment"
#: members/templates/members_base.html:63
#: members/templates/members_base.html:57
msgid "Applications"
msgstr "Applications"
#: members/templates/members_base.html:65
#: members/templates/members_base.html:59
msgid "List applications"
msgstr "List applications"
#: members/templates/members_base.html:66
#: members/templates/members_base.html:60
msgid "Application form"
msgstr "Application form"
#: members/templates/members_base.html:71 members/templates/settings.html:11
#: members/templates/members_base.html:65 members/templates/settings.html:11
msgid "Settings"
msgstr "Settings"
@@ -321,6 +349,10 @@ msgstr "Settings"
msgid "Are you sure you want to delete this payment?"
msgstr "Are you sure you want to delete this payment?"
#: members/templates/payment_edit.html:9
msgid "Edit payment"
msgstr "Edit payment"
#: members/templates/payment_list.html:8
msgid "Payment events"
msgstr "Payment events"
@@ -329,95 +361,93 @@ msgstr "Payment events"
msgid "Language"
msgstr "Language"
#: members/templates/settings.html:20 sikweb/ci-settings.py:170
#: sikweb/settings-docker-sample.py:174 sikweb/settings-sample.py:173
#: sikweb/settings.py:173
#: members/templates/settings.html:20 sikweb/settings-sample.py:177
#: sikweb/settings.py:177
msgid "Finnish"
msgstr "Finnish"
#: members/templates/settings.html:21 sikweb/ci-settings.py:169
#: sikweb/settings-docker-sample.py:173 sikweb/settings-sample.py:172
#: sikweb/settings.py:172
#: members/templates/settings.html:21 sikweb/settings-sample.py:176
#: sikweb/settings.py:176
msgid "English"
msgstr "English"
#: members/views.py:116 members/views.py:173 members/views.py:192
#: members/views.py:114 members/views.py:171 members/views.py:190
msgid "No member id specified"
msgstr ""
msgstr "No member id specified"
#: members/views.py:138
#: members/views.py:136
msgid "Successfully added member"
msgstr "Successfully added member"
#: members/views.py:159
#: members/views.py:157
msgid "Successfully updated member"
msgstr "Successfully updated member"
#: members/views.py:163
#: members/views.py:161
msgid "Could not update member object"
msgstr "Could not update member object"
#: members/views.py:177
#: members/views.py:175
msgid "Successfully deleted member"
msgstr "Successfully deleted member"
#: members/views.py:183
#: members/views.py:181
msgid "Could not delete member object"
msgstr "Could not delete member object"
#: members/views.py:226 members/views.py:260 members/views.py:278
#: members/views.py:224 members/views.py:258 members/views.py:276
msgid "No application id specified"
msgstr "No application id specified"
#: members/views.py:247
#: members/views.py:245
msgid "Successfully accepted application"
msgstr "Successfully accepted application"
#: members/views.py:250
#: members/views.py:248
msgid "Could not accept application object"
msgstr "Could not accept application object"
#: members/views.py:264
#: members/views.py:262
msgid "Successfully deleted application"
msgstr "Successfully deleted application"
#: members/views.py:269
#: members/views.py:267
msgid "Could not delete application object"
msgstr "Could not delete application object"
#: members/views.py:333
#: members/views.py:331
msgid "Successfully added payment for member"
msgstr "Successfully added payment for member"
#: members/views.py:346 members/views.py:359 members/views.py:373
#: members/views.py:344 members/views.py:357 members/views.py:371
msgid "No payment id specified"
msgstr "No payment id specified"
#: members/views.py:377
#: members/views.py:375
msgid "Successfully deleted payment"
msgstr "Successfully deleted payment"
#: members/views.py:382
#: members/views.py:380
msgid "Could not delete payment object"
msgstr "Could not delete payment object"
#: members/views.py:397
#: members/views.py:395
msgid "Successfully updated payment"
msgstr "Successfully updated payment"
#: members/views.py:400
#: members/views.py:398
msgid "Could not update payment object"
msgstr "Could not update payment object"
#: members/views.py:417
#: members/views.py:415
msgid "Missing \"textfield\" POST request field"
msgstr "Missing \"textfield\" POST request field"
#: members/views.py:422
#: members/views.py:420
msgid "Successfully imported multiple members"
msgstr "Successfully imported multiple members"
#: members/views.py:425
#: members/views.py:423
msgid "Failed to import members"
msgstr "Failed to import members"
@@ -429,6 +459,10 @@ msgstr "Copyright Aalto-yliopiston Sähköinsinöörikilta ry"
msgid "SIK Admin"
msgstr "SIK Admin"
#: webapp/templates/base.html:15
msgid "Aalto-yliopiston Sähköinsinöörikilta ry"
msgstr "Aalto-yliopiston Sähköinsinöörikilta ry"
#: webapp/templates/main_index.html:8
msgid "Infoscreen"
msgstr "Infoscreen"
Binary file not shown.
+110 -80
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-18 13:42+0300\n"
"POT-Creation-Date: 2017-05-26 19:53+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"
@@ -18,137 +18,137 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: infoscreen/models.py:75
#: infoscreen/models.py:77
msgid "ABB jobs"
msgstr "ABB-työpaikat"
#: infoscreen/models.py:84
#: infoscreen/models.py:88
msgid "APY Item"
msgstr "ÄPY-tilastot"
#: infoscreen/models.py:95
#: infoscreen/models.py:99
msgid "External website"
msgstr "Ulkoinen verkkosivu"
#: infoscreen/models.py:141
#: infoscreen/models.py:147
msgid "Sössö articles"
msgstr "Sössön artikkelit"
#: infoscreen/models.py:150
#: infoscreen/models.py:158
msgid "Events"
msgstr "Tapahtumat"
#: infoscreen/models.py:162
#: infoscreen/models.py:169
msgid "Image"
msgstr "Kuva"
#: infoscreen/models.py:180
#: infoscreen/models.py:204
msgid "HSL timetables"
msgstr "HSL-aikataulut"
#: infoscreen/models.py:190
#: infoscreen/models.py:215
msgid "External image"
msgstr "Ulkoinen kuva"
#: infoscreen/templates/infoscreen_admin.html:23
#: members/templates/members_base.html:75
#: infoscreen/templates/infoscreen_admin.html:24
#: members/templates/members_base.html:69
msgid "Log out"
msgstr "Kirjaudu ulos"
#: infoscreen/templates/infoscreen_admin.html:30
#: infoscreen/templates/infoscreen_admin.html:31
msgid "Infoscreen Admin Pane"
msgstr "Infonäyttöjen hallintapaneeli"
#: infoscreen/templates/infoscreen_admin.html:35
#: infoscreen/templates/infoscreen_admin.html:36
msgid "Info items"
msgstr "Diat"
#: infoscreen/templates/infoscreen_admin.html:36
#: infoscreen/templates/infoscreen_admin.html:37
msgid "Infoitems available for rotations"
msgstr "Rotaatioon lisättävät diat"
#: infoscreen/templates/infoscreen_admin.html:39
#: infoscreen/templates/infoscreen_admin.html:40
msgid "Item"
msgstr "Dia"
#: infoscreen/templates/infoscreen_admin.html:40
#: infoscreen/templates/infoscreen_admin.html:41
msgid "Type"
msgstr "Tyyppi"
#: infoscreen/templates/infoscreen_admin.html:41
#: infoscreen/templates/infoscreen_admin.html:42
msgid "Set duration"
msgstr "Aseta kesto"
#: infoscreen/templates/infoscreen_admin.html:42
#: infoscreen/templates/infoscreen_admin.html:43
msgid "Add to rotation"
msgstr "Lisää rotaatioon"
#: infoscreen/templates/infoscreen_admin.html:43
#: infoscreen/templates/infoscreen_admin.html:50
#: infoscreen/templates/infoscreen_admin.html:77
#: infoscreen/templates/infoscreen_admin.html:84
#: infoscreen/templates/infoscreen_admin.html:101
#: infoscreen/templates/infoscreen_admin.html:105
#: infoscreen/templates/infoscreen_admin.html:44
#: infoscreen/templates/infoscreen_admin.html:51
#: infoscreen/templates/infoscreen_admin.html:78
#: infoscreen/templates/infoscreen_admin.html:85
#: infoscreen/templates/infoscreen_admin.html:102
#: infoscreen/templates/infoscreen_admin.html:106
#: members/templates/member_edit.html:20 members/templates/payment_edit.html:20
msgid "Delete"
msgstr "Poista"
#: infoscreen/templates/infoscreen_admin.html:49
#: infoscreen/templates/infoscreen_admin.html:50
msgid "Add"
msgstr "Lisää"
#: infoscreen/templates/infoscreen_admin.html:53
#: infoscreen/templates/infoscreen_admin.html:54
msgid "Create new item"
msgstr "Luo uusi dia"
#: infoscreen/templates/infoscreen_admin.html:56
#: infoscreen/templates/infoscreen_admin.html:57
msgid "Item type"
msgstr "Diatyyppi"
#: infoscreen/templates/infoscreen_admin.html:67
#: infoscreen/templates/infoscreen_admin.html:68
msgid "Rotations"
msgstr "Rotaatiot"
#: infoscreen/templates/infoscreen_admin.html:69
#: infoscreen/templates/infoscreen_admin.html:70
msgid "Select rotation to edit"
msgstr "Valitse muokattava rotaatio"
#: infoscreen/templates/infoscreen_admin.html:73
#: infoscreen/templates/infoscreen_admin.html:95
#: infoscreen/templates/infoscreen_admin.html:74
#: infoscreen/templates/infoscreen_admin.html:96
msgid "Rotation"
msgstr "Rotaatio"
#: infoscreen/templates/infoscreen_admin.html:74
#: infoscreen/templates/infoscreen_admin.html:75
msgid "id"
msgstr "id"
#: infoscreen/templates/infoscreen_admin.html:75
#: infoscreen/templates/infoscreen_admin.html:82
#: infoscreen/templates/infoscreen_admin.html:76
#: infoscreen/templates/infoscreen_admin.html:83
msgid "Select"
msgstr "Valitse"
#: infoscreen/templates/infoscreen_admin.html:76
#: infoscreen/templates/infoscreen_admin.html:83
#: infoscreen/templates/infoscreen_admin.html:77
#: infoscreen/templates/infoscreen_admin.html:84
msgid "Preview"
msgstr "Esikatsele"
#: infoscreen/templates/infoscreen_admin.html:87
#: infoscreen/templates/infoscreen_admin.html:88
msgid "Name"
msgstr "Nimi"
#: infoscreen/templates/infoscreen_admin.html:88
#: infoscreen/templates/infoscreen_admin.html:89
msgid "Create new"
msgstr "Luo uusi"
#: infoscreen/templates/infoscreen_admin.html:96
#: infoscreen/templates/infoscreen_admin.html:97
msgid "Instances in currently selected rotation"
msgstr "Nykyisen rotaation diat"
#: infoscreen/templates/infoscreen_admin.html:99
#: infoscreen/templates/infoscreen_admin.html:100
msgid "Instance"
msgstr "Dia"
#: infoscreen/templates/infoscreen_admin.html:100
#: infoscreen/templates/infoscreen_admin.html:101
msgid "Duration"
msgstr "Kesto"
@@ -176,6 +176,18 @@ msgstr "AYY"
msgid "JAS"
msgstr "JAS"
#: members/models.py:69
msgid "Submitted"
msgstr "Lisätty"
#: members/models.py:81
msgid "Date"
msgstr "Päivämäärä"
#: members/models.py:82
msgid "Source"
msgstr "Lähde"
#: members/models.py:84
msgid "Cash"
msgstr "Käteinen"
@@ -184,10 +196,26 @@ msgstr "Käteinen"
msgid "Bank transfer"
msgstr "Tilisiirto"
#: members/tables.py:11 members/tables.py:23 members/tables.py:35
#: members/models.py:98
msgid "Created"
msgstr "Lisätty"
#: members/tables.py:9
msgid "Last paid"
msgstr "Viimeksi maksettu"
#: members/tables.py:13 members/tables.py:28 members/tables.py:41
msgid "Edit"
msgstr "Muokkaa"
#: members/tables.py:15 members/tables.py:30 members/tables.py:43
msgid "Options"
msgstr "Asetukset"
#: members/tables.py:24
msgid "Member"
msgstr "Jäsen"
#: members/templates/application_edit.html:9
msgid "Edit application"
msgstr "Muokkaa hakemusta"
@@ -212,7 +240,7 @@ msgstr "Virhe"
msgid "Back"
msgstr "Takaisin"
#: members/templates/member_add.html:8 members/templates/members_base.html:51
#: members/templates/member_add.html:8 members/templates/members_base.html:45
msgid "Add member"
msgstr "Lisää jäsen"
@@ -277,47 +305,47 @@ msgstr "Jäsenrekisteri"
msgid "Download CSV"
msgstr "Lataa CSV"
#: members/templates/members_base.html:39
#: members/templates/members_base.html:33
msgid "Member register of SIK ry"
msgstr "Aalto-yliopiston Sähköinsinöörikilta ry:n jäsenrekisteri"
#: members/templates/members_base.html:48 webapp/templates/main_index.html:7
#: members/templates/members_base.html:42 webapp/templates/main_index.html:7
msgid "Members"
msgstr "Jäsenet"
#: members/templates/members_base.html:50
#: members/templates/members_base.html:44
msgid "List members"
msgstr "Jäsenlistaus"
#: members/templates/members_base.html:52
#: members/templates/members_base.html:46
msgid "Add multiple"
msgstr "Lisää useita"
#: members/templates/members_base.html:56
#: members/templates/members_base.html:50
msgid "Payments"
msgstr "Maksutapahtumat"
#: members/templates/members_base.html:58
#: members/templates/members_base.html:52
msgid "List payments"
msgstr "Maksulistaus"
#: members/templates/members_base.html:59 members/templates/payment_add.html:8
#: members/templates/members_base.html:53 members/templates/payment_add.html:8
msgid "Add payment"
msgstr "Lisää maksu"
#: members/templates/members_base.html:63
#: members/templates/members_base.html:57
msgid "Applications"
msgstr "Jäsenhakemukset"
#: members/templates/members_base.html:65
#: members/templates/members_base.html:59
msgid "List applications"
msgstr "Hakemuslistaus"
#: members/templates/members_base.html:66
#: members/templates/members_base.html:60
msgid "Application form"
msgstr "Jäsenhakemuslomake"
#: members/templates/members_base.html:71 members/templates/settings.html:11
#: members/templates/members_base.html:65 members/templates/settings.html:11
msgid "Settings"
msgstr "Asetukset"
@@ -337,95 +365,93 @@ msgstr "Maksutapahtumat"
msgid "Language"
msgstr "Kieli"
#: members/templates/settings.html:20 sikweb/ci-settings.py:170
#: sikweb/settings-docker-sample.py:174 sikweb/settings-sample.py:173
#: sikweb/settings.py:173
#: members/templates/settings.html:20 sikweb/settings-sample.py:177
#: sikweb/settings.py:177
msgid "Finnish"
msgstr "suomi"
#: members/templates/settings.html:21 sikweb/ci-settings.py:169
#: sikweb/settings-docker-sample.py:173 sikweb/settings-sample.py:172
#: sikweb/settings.py:172
#: members/templates/settings.html:21 sikweb/settings-sample.py:176
#: sikweb/settings.py:176
msgid "English"
msgstr "englanti"
#: members/views.py:116 members/views.py:173 members/views.py:192
#: members/views.py:114 members/views.py:171 members/views.py:190
msgid "No member id specified"
msgstr "Jäsenen ID ei määritelty"
#: members/views.py:138
#: members/views.py:136
msgid "Successfully added member"
msgstr "Onnistuneesti lisättiin jäsen"
#: members/views.py:159
#: members/views.py:157
msgid "Successfully updated member"
msgstr "Onnistuneesti päivitettiin jäsen"
#: members/views.py:163
#: members/views.py:161
msgid "Could not update member object"
msgstr "Jäsenobjektia ei voitu päivittää"
#: members/views.py:177
#: members/views.py:175
msgid "Successfully deleted member"
msgstr "Onnistuneesti poistettiin jäsen"
#: members/views.py:183
#: members/views.py:181
msgid "Could not delete member object"
msgstr "Jäsenobjektia ei voitu poistaa"
#: members/views.py:226 members/views.py:260 members/views.py:278
#: members/views.py:224 members/views.py:258 members/views.py:276
msgid "No application id specified"
msgstr "Hakemuksen ID ei määritelty"
#: members/views.py:247
#: members/views.py:245
msgid "Successfully accepted application"
msgstr "Onnistuneesti hyväksyttiin hakemus"
#: members/views.py:250
#: members/views.py:248
msgid "Could not accept application object"
msgstr "Hakemusobjektia ei voitu hyväksyä"
#: members/views.py:264
#: members/views.py:262
msgid "Successfully deleted application"
msgstr "Onnistuneesti poistettiin hakemus"
#: members/views.py:269
#: members/views.py:267
msgid "Could not delete application object"
msgstr "Hakemusobjektia ei voitu poistaa"
#: members/views.py:333
#: members/views.py:331
msgid "Successfully added payment for member"
msgstr "Onnistuneesti lisättiin maksutapahtuma jäsenelle"
#: members/views.py:346 members/views.py:359 members/views.py:373
#: members/views.py:344 members/views.py:357 members/views.py:371
msgid "No payment id specified"
msgstr "Maksutapahtuman ID ei määritelty"
#: members/views.py:377
#: members/views.py:375
msgid "Successfully deleted payment"
msgstr "Onnistuneesti poistettiin maksutapahtuma"
#: members/views.py:382
#: members/views.py:380
msgid "Could not delete payment object"
msgstr "Maksutapahtumaobjektia ei voitu poistaa"
#: members/views.py:397
#: members/views.py:395
msgid "Successfully updated payment"
msgstr "Onnistuneesti päivitettiin maksutapahtuma"
#: members/views.py:400
#: members/views.py:398
msgid "Could not update payment object"
msgstr "Maksutapahtumaobjektia ei voitu päivittää"
#: members/views.py:417
#: members/views.py:415
msgid "Missing \"textfield\" POST request field"
msgstr "Puuttuva \"textfield\" POST-kenttä"
#: members/views.py:422
#: members/views.py:420
msgid "Successfully imported multiple members"
msgstr "Onnistuneesti tuotu useita jäseniä"
#: members/views.py:425
#: members/views.py:423
msgid "Failed to import members"
msgstr "Jäsenten tuonti epäonnistui"
@@ -437,6 +463,10 @@ msgstr "Copyright Aalto-yliopiston Sähköinsinöörikilta ry"
msgid "SIK Admin"
msgstr "SIK Hallintapaneeli"
#: webapp/templates/base.html:15
msgid "Aalto-yliopiston Sähköinsinöörikilta ry"
msgstr "Aalto-yliopiston Sähköinsinöörikilta ry"
#: webapp/templates/main_index.html:8
msgid "Infoscreen"
msgstr "Infonäyttö"
@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11 on 2017-05-26 16:03
from __future__ import unicode_literals
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('members', '0008_auto_20170518_1540'),
]
operations = [
migrations.AlterField(
model_name='member',
name='created',
field=models.DateTimeField(default=datetime.datetime.now, verbose_name='Created'),
),
]
@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11 on 2017-05-26 16:10
from __future__ import unicode_literals
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('members', '0009_auto_20170526_1903'),
]
operations = [
migrations.AlterField(
model_name='payment',
name='date',
field=models.DateTimeField(default=datetime.datetime.now, verbose_name='Date'),
),
migrations.AlterField(
model_name='payment',
name='source',
field=models.CharField(choices=[('AYY', 'AYY'), ('cash', 'Cash'), ('bank_transfer', 'Bank transfer')], max_length=255, verbose_name='Source'),
),
]
@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11 on 2017-05-26 17:13
from __future__ import unicode_literals
from django.db import migrations, models
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('members', '0010_auto_20170526_1910'),
]
operations = [
migrations.AlterField(
model_name='request',
name='submitted',
field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='Submitted'),
),
]
+5 -5
View File
@@ -66,7 +66,7 @@ class Request(BaseMember):
'''
Member request model represents one member request.
'''
submitted = models.DateTimeField(default=timezone.now)
submitted = models.DateTimeField(_('Submitted'), default=timezone.now)
def to_member(self):
member = Member.from_array(self.as_array())
@@ -78,8 +78,8 @@ class Payment(models.Model):
'''
Payment model representing one payment event
'''
date = models.DateTimeField(default=datetime.now)
source = models.CharField(choices=[
date = models.DateTimeField(_('Date'), default=datetime.now)
source = models.CharField(_('Source'), choices=[
('AYY', _('AYY')),
('cash', _('Cash')),
('bank_transfer', _('Bank transfer')),
@@ -95,7 +95,7 @@ class Member(BaseMember):
'''
Member model represets one member on the registry.
'''
created = models.DateTimeField(default=datetime.now)
created = models.DateTimeField(_('Created'), default=datetime.now)
def last_paid(self):
try:
@@ -103,7 +103,7 @@ class Member(BaseMember):
latest = payments.latest('date')
date = latest.date
return date
except DoesNotExist:
except Payment.DoesNotExist:
return None
@staticmethod
+10
View File
@@ -0,0 +1,10 @@
from rest_framework import serializers
from members.models import Member
class MemberSerializer(serializers.ModelSerializer):
paid = serializers.DateTimeField(source='last_paid')
class Meta:
model = Member
fields = ('id', 'first_name', 'last_name', 'email', 'POR', 'AYY', 'jas', 'created', 'paid')
+25 -1
View File
@@ -13,6 +13,10 @@ input {
margin-bottom: 0.5rem;
}
#header {
display: block;
}
#wrapper {
padding-right: 0;
padding-top: 0;
@@ -24,6 +28,10 @@ input {
background: #202020;
top: 0;
padding: 0;
-webkit-transition: width 0.01s height 0.01s linear;
-moz-transition: width 0.01s height 0.01s linear;
-o-transition: width 0.01s height 0.01s linear;
transition: width 0.01s, height 0.01s, transform 0.01s;
}
@@ -45,6 +53,10 @@ input {
cursor: default;
}
#sidebar-collapse {
display: none;
}
@media (max-width: 767px) {
table {
@@ -62,6 +74,18 @@ input {
text-align: center;
}
#header {
display: none;
}
.sidebar-nav {
display: none;
}
#sidebar-collapse {
display: block;
}
.logout-container {
position: initial;
margin-bottom: 1rem;
@@ -212,4 +236,4 @@ input {
width: 100%;
max-width: 100%;
height: 10rem !important;
}
}
+9 -4
View File
@@ -6,12 +6,13 @@ from members.models import Member, Payment, Request
class MemberTable(tables.Table):
last_paid = tables.DateTimeColumn(accessor='last_paid', verbose_name='Last paid')
last_paid = tables.DateTimeColumn(accessor='last_paid', verbose_name=_('Last paid'))
options = tables.TemplateColumn(
'<a class="data-table-button btn btn-primary" href="/members/edit/{{ record.id }}">' +
_('Edit') +
'</a>'
'</a>',
verbose_name=_('Options')
)
class Meta:
@@ -20,10 +21,13 @@ class MemberTable(tables.Table):
class PaymentTable(tables.Table):
member = tables.Column(accessor='member', verbose_name=_('Member'))
options = tables.TemplateColumn(
'<a class="data-table-button btn btn-primary" href="/members/edit_payment/{{ record.id }}">' +
_('Edit') +
'</a>'
'</a>',
verbose_name=_('Options')
)
class Meta:
@@ -35,7 +39,8 @@ class RequestTable(tables.Table):
options = tables.TemplateColumn(
'<a class="data-table-button btn btn-primary" href="/members/edit_application/{{ record.id }}">' +
_('Edit') +
'</a>'
'</a>',
verbose_name=_('Options')
)
class Meta:
+10
View File
@@ -37,6 +37,16 @@
<!-- Sidebar -->
<div id="sidebar-wrapper">
<nav class="navbar navbar-inverse" id="sidebar-collapse">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".sidebar-nav">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<span class="navbar-brand hidden-lg hidden-md">{% trans "Member register of SIK ry" %}</span>
</div>
</nav>
<ul class="sidebar-nav">
<li>
<span class="text-primary">{% trans "Members" %}</span>
+9
View File
@@ -0,0 +1,9 @@
from rest_framework.throttling import UserRateThrottle
class BurstRateThrottle(UserRateThrottle):
scope = 'burst'
class SustainedRateThrottle(UserRateThrottle):
scope = 'sustained'
+16
View File
@@ -17,12 +17,19 @@ from members.views import member_delete_confirm
from members.views import member_delete
from members.views import payment_list
# rest api
from members.views import MemberDetail
# application
from members.views import application_form
from members.views import application_list
from members.views import application_edit
from members.views import application_form_success
# email validation
# from members.views import validateEmail, validate_success, validate_fail
favicon_view = RedirectView.as_view(url='static/img/favicon.ico', permanent=True)
urlpatterns = [
@@ -91,4 +98,13 @@ urlpatterns = [
# favourite icon
url(r'^favicon\.ico$', favicon_view),
# rest api url
url(r'^api/members/(?P<pk>\d+)$', MemberDetail.as_view()),
# email validation
# url(r'^validate/(?P<uidb64>[0-9A-Za-z_\-\']+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', validateEmail, name='user-activation-link'),
# url(r'^validate/success/$', validate_success),
# url(r'^validate/failure/$', validate_fail),
]
+45
View File
@@ -7,6 +7,19 @@ from django.core.mail import send_mail
from django.conf import settings
from django.utils.translation import ugettext as _
# Email validation
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.utils.http import urlsafe_base64_encode
from django.utils.encoding import force_bytes
from django.core.mail import send_mail
# REST framework
from members.serializers import MemberSerializer
from rest_framework import generics
from rest_framework import permissions
from rest_framework.throttling import UserRateThrottle, AnonRateThrottle
import json
import requests
import logging
@@ -440,3 +453,35 @@ def export_csv(request, *args, **kwargs):
writer.writerow(field_list)
return response
def send_mail_wrapper(subject, message, email_to):
send_mail(subject,
message,
settings.DEFAULT_EMAIL_FROM,
[email_to],
fail_silently=False)
@receiver(post_save, sender=Request)
def email_on_request(sender, instance, created, **kwargs):
if created:
subject = 'Test1'
message = 'Please validate your email address\r\n'
send_mail_wrapper(subject, message, instance.email)
@receiver(post_save, sender=Member)
def email_on_accept(sender, instance, created, **kwargs):
if created:
subject = 'Test2'
message = 'Jäsenhakemuksesi on hyväksytty!!!\r\n'
send_mail_wrapper(subject, message, instance.email)
# Can be used to retrieve single member information via REST API
class MemberDetail(generics.RetrieveAPIView):
queryset = Member.objects.all()
serializer_class = MemberSerializer
permission_classes = (permissions.IsAdminUser, )
throttle_classes = (UserRateThrottle, AnonRateThrottle, )
+3 -1
View File
@@ -1,3 +1,4 @@
"""
Django settings for sikweb project.
@@ -137,6 +138,7 @@ REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
'rest_framework.permissions.DjangoModelPermissions',
'rest_framework.permissions.IsAdminUser',
),
'DEFAULT_THROTTLE_CLASSES': (
'members.throttles.BurstRateThrottle',
@@ -155,7 +157,7 @@ EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = '<gmailtunnarisi>@gmail.com'
EMAIL_HOST_PASSWORD = '<gmail_passu>'
DEFAULT_FROM_EMAIL = 'SIK Viestintä <sikviestinta@gmail.com>'
DEFAULT_EMAIL_FROM = 'SIK Viestintä <sikviestinta@gmail.com>'
# ReCaptcha
-1
View File
@@ -26,7 +26,6 @@ import webapp.urls
import infoscreen.urls
import members.urls
urlpatterns = [
url(r'', include('webapp.urls')),
url(r'^members/', include('members.urls')),