Merge branch 'develop' into 'master'
HSL fix to master See merge request !30
This commit is contained in:
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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')
|
||||
@@ -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
@@ -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:
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
from rest_framework.throttling import UserRateThrottle
|
||||
|
||||
|
||||
class BurstRateThrottle(UserRateThrottle):
|
||||
scope = 'burst'
|
||||
|
||||
|
||||
class SustainedRateThrottle(UserRateThrottle):
|
||||
scope = 'sustained'
|
||||
@@ -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),
|
||||
|
||||
]
|
||||
|
||||
@@ -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, )
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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')),
|
||||
|
||||
Reference in New Issue
Block a user