Binary file not shown.
+149
-31
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-10-02 20:52+0300\n"
|
||||
"POT-Creation-Date: 2017-10-12 00:48+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"
|
||||
@@ -33,7 +33,7 @@ msgstr "External website"
|
||||
msgid "Sössö articles"
|
||||
msgstr "Sössö articles"
|
||||
|
||||
#: infoscreen/models.py:199 webapp/models.py:70
|
||||
#: infoscreen/models.py:199 webapp/models.py:72
|
||||
msgid "Events"
|
||||
msgstr "Events"
|
||||
|
||||
@@ -167,8 +167,8 @@ msgstr "Select rotation to edit"
|
||||
msgid "id"
|
||||
msgstr "id"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:141 webapp/models.py:91
|
||||
#: webapp/models.py:125 webapp/models.py:138
|
||||
#: infoscreen/templates/infoscreen_admin.html:141 webapp/models.py:93
|
||||
#: webapp/models.py:126 webapp/templates/kaehmy_list.html:40
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
@@ -192,7 +192,7 @@ msgid "English"
|
||||
msgstr "English"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:166
|
||||
#: members/templates/settings.html:23
|
||||
#: members/templates/settings.html:23 webapp/templates/kaehmy.html:19
|
||||
#, fuzzy
|
||||
#| msgid "Submitted"
|
||||
msgid "Submit"
|
||||
@@ -210,7 +210,8 @@ msgstr "First name"
|
||||
msgid "Last name"
|
||||
msgstr "Last name"
|
||||
|
||||
#: members/models.py:16 webapp/models.py:126 webapp/models.py:139
|
||||
#: members/models.py:16 webapp/models.py:127
|
||||
#: webapp/templates/kaehmy_list.html:44
|
||||
msgid "Email"
|
||||
msgstr "Email"
|
||||
|
||||
@@ -358,6 +359,7 @@ msgstr ""
|
||||
|
||||
#: members/templates/member_add_many.html:48
|
||||
#: members/templates/member_add_many_confirm.html:22
|
||||
#: webapp/templates/kaehmy_list.html:52
|
||||
msgid "Send"
|
||||
msgstr "Send"
|
||||
|
||||
@@ -536,7 +538,7 @@ msgstr "Successfully updated payment"
|
||||
msgid "Could not update payment object"
|
||||
msgstr "Could not update payment object"
|
||||
|
||||
#: members/views/utils.py:116
|
||||
#: members/views/utils.py:117
|
||||
msgid "Missing \"textfield\" POST request field"
|
||||
msgstr "Missing \"textfield\" POST request field"
|
||||
|
||||
@@ -548,63 +550,79 @@ msgstr ""
|
||||
msgid "Copyright Aalto-yliopiston Sähköinsinöörikilta ry"
|
||||
msgstr "Copyright Aalto-yliopiston Sähköinsinöörikilta ry"
|
||||
|
||||
#: webapp/models.py:15
|
||||
#: webapp/forms.py:28
|
||||
#, fuzzy
|
||||
#| msgid "Total challenges:"
|
||||
msgid "Custom roles"
|
||||
msgstr "Total challenges:"
|
||||
|
||||
#: webapp/forms.py:30
|
||||
#, fuzzy
|
||||
#| msgid "Total challenges:"
|
||||
msgid "Preset roles"
|
||||
msgstr "Total challenges:"
|
||||
|
||||
#: webapp/forms.py:40
|
||||
msgid "Invalid value"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:17
|
||||
msgid "Webapp"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:26
|
||||
#: webapp/models.py:28
|
||||
msgid "Tag"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:27
|
||||
#: webapp/models.py:29
|
||||
msgid "Tags"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:30
|
||||
#: webapp/models.py:32
|
||||
msgid "Tag: {}"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:50
|
||||
#: webapp/models.py:52
|
||||
msgid "Feed: {}"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:53
|
||||
#: webapp/models.py:55
|
||||
msgid "Feed"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:54
|
||||
#: webapp/models.py:56
|
||||
msgid "Feeds"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:66
|
||||
#: webapp/models.py:68
|
||||
#, fuzzy
|
||||
#| msgid "Events"
|
||||
msgid "Event: {}"
|
||||
msgstr "Events"
|
||||
|
||||
#: webapp/models.py:69
|
||||
#: webapp/models.py:71
|
||||
#, fuzzy
|
||||
#| msgid "Events"
|
||||
msgid "Event"
|
||||
msgstr "Events"
|
||||
|
||||
#: webapp/models.py:81
|
||||
#: webapp/models.py:83
|
||||
msgid "Registration: {}"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:84
|
||||
#: webapp/models.py:86
|
||||
#, fuzzy
|
||||
#| msgid "Rotation"
|
||||
msgid "Registration"
|
||||
msgstr "Rotation"
|
||||
|
||||
#: webapp/models.py:85
|
||||
#: webapp/models.py:87
|
||||
#, fuzzy
|
||||
#| msgid "Rotations"
|
||||
msgid "Registrations"
|
||||
msgstr "Rotations"
|
||||
|
||||
#: webapp/models.py:92
|
||||
#: webapp/models.py:94 webapp/models.py:166
|
||||
#, fuzzy
|
||||
#| msgid "Add member"
|
||||
msgid "Board member"
|
||||
@@ -612,42 +630,90 @@ msgstr "Add member"
|
||||
|
||||
#: webapp/models.py:98
|
||||
#, fuzzy
|
||||
#| msgid "Add member"
|
||||
msgid "board member"
|
||||
msgstr "Add member"
|
||||
|
||||
#: webapp/models.py:104
|
||||
#, fuzzy
|
||||
#| msgid "Duration"
|
||||
msgid "Description"
|
||||
msgstr "Duration"
|
||||
|
||||
#: webapp/models.py:99
|
||||
#: webapp/models.py:105
|
||||
msgid "Summary"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:127
|
||||
#: webapp/models.py:112
|
||||
#, fuzzy
|
||||
#| msgid "Total challenges:"
|
||||
msgid "Preset kaehmy role"
|
||||
msgstr "Total challenges:"
|
||||
|
||||
#: webapp/models.py:113
|
||||
#, fuzzy
|
||||
#| msgid "Total challenges:"
|
||||
msgid "Preset kaehmy roles"
|
||||
msgstr "Total challenges:"
|
||||
|
||||
#: webapp/models.py:120
|
||||
#, fuzzy
|
||||
#| msgid "Total challenges:"
|
||||
msgid "Custom kaehmy role"
|
||||
msgstr "Total challenges:"
|
||||
|
||||
#: webapp/models.py:121
|
||||
#, fuzzy
|
||||
#| msgid "Total challenges:"
|
||||
msgid "Custom kaehmy roles"
|
||||
msgstr "Total challenges:"
|
||||
|
||||
#: webapp/models.py:140
|
||||
msgid "Message"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:140
|
||||
#: webapp/models.py:142
|
||||
msgid "Timestamp"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:160 webapp/models.py:224
|
||||
msgid "Phone number"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:161
|
||||
msgid "Year"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:154
|
||||
#: webapp/models.py:162
|
||||
msgid "Text"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:164
|
||||
msgid "Custom role name"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:174
|
||||
#, fuzzy
|
||||
#| msgid "Member applications"
|
||||
msgid "Kaehmy application: {}"
|
||||
msgstr "Member applications"
|
||||
|
||||
#: webapp/models.py:209
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:156
|
||||
#: webapp/models.py:211
|
||||
msgid "Start date"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:157
|
||||
#: webapp/models.py:212
|
||||
msgid "End date"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:167
|
||||
#: webapp/models.py:222
|
||||
msgid "Official"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:169
|
||||
msgid "Phone number"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/templates/admin_index.html:6
|
||||
msgid "SIK Admin"
|
||||
msgstr "SIK Admin"
|
||||
@@ -680,6 +746,58 @@ msgstr "International"
|
||||
msgid "Jobs"
|
||||
msgstr "Jobs"
|
||||
|
||||
#: webapp/templates/kaehmy.html:12
|
||||
msgid "Kaehmy"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/templates/kaehmy_list.html:24
|
||||
msgid "All kaehmys"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/templates/kaehmy_list.html:28
|
||||
#: webapp/templates/kaehmy_statistics.html:14
|
||||
#, fuzzy
|
||||
#| msgid "Total challenges:"
|
||||
msgid "Total kaehmys:"
|
||||
msgstr "Total challenges:"
|
||||
|
||||
#: webapp/templates/kaehmy_list.html:36
|
||||
msgid "Commenting on post by "
|
||||
msgstr ""
|
||||
|
||||
#: webapp/templates/kaehmy_list.html:48
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/templates/kaehmy_list.html:69
|
||||
msgid "Show comments"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/templates/kaehmy_list.html:75
|
||||
#, fuzzy
|
||||
#| msgid "Add payment"
|
||||
msgid "Add comment"
|
||||
msgstr "Add payment"
|
||||
|
||||
#: webapp/templates/kaehmy_message.html:11
|
||||
msgid "Reply"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/templates/kaehmy_navigation.html:10
|
||||
#, fuzzy
|
||||
#| msgid "Total challenges:"
|
||||
msgid "List kaehmys"
|
||||
msgstr "Total challenges:"
|
||||
|
||||
#: webapp/templates/kaehmy_navigation.html:11
|
||||
msgid "New kaehmy"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/templates/kaehmy_navigation.html:12
|
||||
#: webapp/templates/kaehmy_statistics.html:12
|
||||
msgid "Statistics"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/templates/login.html:25 webapp/templates/login.html:27
|
||||
msgid "Username"
|
||||
msgstr "Username"
|
||||
|
||||
Binary file not shown.
+134
-33
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-10-02 20:52+0300\n"
|
||||
"POT-Creation-Date: 2017-10-12 00:48+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"
|
||||
@@ -34,7 +34,7 @@ msgstr "Ulkoinen verkkosivu"
|
||||
msgid "Sössö articles"
|
||||
msgstr "Sössön artikkelit"
|
||||
|
||||
#: infoscreen/models.py:199 webapp/models.py:70
|
||||
#: infoscreen/models.py:199 webapp/models.py:72
|
||||
msgid "Events"
|
||||
msgstr "Tapahtumat"
|
||||
|
||||
@@ -168,8 +168,8 @@ msgstr "Valitse muokattava rotaatio"
|
||||
msgid "id"
|
||||
msgstr "id"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:141 webapp/models.py:91
|
||||
#: webapp/models.py:125 webapp/models.py:138
|
||||
#: infoscreen/templates/infoscreen_admin.html:141 webapp/models.py:93
|
||||
#: webapp/models.py:126 webapp/templates/kaehmy_list.html:40
|
||||
msgid "Name"
|
||||
msgstr "Nimi"
|
||||
|
||||
@@ -193,7 +193,7 @@ msgid "English"
|
||||
msgstr "englanti"
|
||||
|
||||
#: infoscreen/templates/infoscreen_admin.html:166
|
||||
#: members/templates/settings.html:23
|
||||
#: members/templates/settings.html:23 webapp/templates/kaehmy.html:19
|
||||
msgid "Submit"
|
||||
msgstr "Lisää"
|
||||
|
||||
@@ -209,7 +209,8 @@ msgstr "Etunimi"
|
||||
msgid "Last name"
|
||||
msgstr "Sukunimi"
|
||||
|
||||
#: members/models.py:16 webapp/models.py:126 webapp/models.py:139
|
||||
#: members/models.py:16 webapp/models.py:127
|
||||
#: webapp/templates/kaehmy_list.html:44
|
||||
msgid "Email"
|
||||
msgstr "Sähköposti"
|
||||
|
||||
@@ -351,11 +352,11 @@ msgid ""
|
||||
"The symbol that is used to separate items in one line. Defaults to "
|
||||
"';' (semicolon)."
|
||||
msgstr ""
|
||||
"Merkki, jota käytetään rivin osien erottamiseen. Oletuksena "
|
||||
"';' (puolipiste)."
|
||||
"Merkki, jota käytetään rivin osien erottamiseen. Oletuksena ';' (puolipiste)."
|
||||
|
||||
#: members/templates/member_add_many.html:48
|
||||
#: members/templates/member_add_many_confirm.html:22
|
||||
#: webapp/templates/kaehmy_list.html:52
|
||||
msgid "Send"
|
||||
msgstr "Lähetä"
|
||||
|
||||
@@ -530,7 +531,7 @@ msgstr "Onnistuneesti päivitettiin maksutapahtuma"
|
||||
msgid "Could not update payment object"
|
||||
msgstr "Maksutapahtumaobjektia ei voitu päivittää"
|
||||
|
||||
#: members/views/utils.py:116
|
||||
#: members/views/utils.py:117
|
||||
msgid "Missing \"textfield\" POST request field"
|
||||
msgstr "Puuttuva \"textfield\" POST-kenttä"
|
||||
|
||||
@@ -542,94 +543,142 @@ msgstr "Vaihda"
|
||||
msgid "Copyright Aalto-yliopiston Sähköinsinöörikilta ry"
|
||||
msgstr "Copyright Aalto-yliopiston Sähköinsinöörikilta ry"
|
||||
|
||||
#: webapp/models.py:15
|
||||
#: webapp/forms.py:28
|
||||
msgid "Custom roles"
|
||||
msgstr "Uudet virat"
|
||||
|
||||
#: webapp/forms.py:30
|
||||
msgid "Preset roles"
|
||||
msgstr "Kaehmyvirat"
|
||||
|
||||
#: webapp/forms.py:40
|
||||
msgid "Invalid value"
|
||||
msgstr "Epäkelpo arvo"
|
||||
|
||||
#: webapp/models.py:17
|
||||
msgid "Webapp"
|
||||
msgstr "Nettisivut"
|
||||
|
||||
#: webapp/models.py:26
|
||||
#: webapp/models.py:28
|
||||
msgid "Tag"
|
||||
msgstr "Tunniste"
|
||||
|
||||
#: webapp/models.py:27
|
||||
#: webapp/models.py:29
|
||||
msgid "Tags"
|
||||
msgstr "Tunnisteet"
|
||||
|
||||
#: webapp/models.py:30
|
||||
#: webapp/models.py:32
|
||||
msgid "Tag: {}"
|
||||
msgstr "Tunniste: {}"
|
||||
|
||||
#: webapp/models.py:50
|
||||
#: webapp/models.py:52
|
||||
msgid "Feed: {}"
|
||||
msgstr "Uutinen: {}"
|
||||
|
||||
#: webapp/models.py:53
|
||||
#: webapp/models.py:55
|
||||
msgid "Feed"
|
||||
msgstr "Uutinen"
|
||||
|
||||
#: webapp/models.py:54
|
||||
#: webapp/models.py:56
|
||||
msgid "Feeds"
|
||||
msgstr "Uutiset"
|
||||
|
||||
#: webapp/models.py:66
|
||||
#: webapp/models.py:68
|
||||
msgid "Event: {}"
|
||||
msgstr "Tapahtuma: {}"
|
||||
|
||||
#: webapp/models.py:69
|
||||
#: webapp/models.py:71
|
||||
msgid "Event"
|
||||
msgstr "Tapahtuma"
|
||||
|
||||
#: webapp/models.py:81
|
||||
#: webapp/models.py:83
|
||||
msgid "Registration: {}"
|
||||
msgstr "Registration: {}"
|
||||
|
||||
#: webapp/models.py:84
|
||||
#: webapp/models.py:86
|
||||
msgid "Registration"
|
||||
msgstr "Ilmoittautuminen"
|
||||
|
||||
#: webapp/models.py:85
|
||||
#: webapp/models.py:87
|
||||
msgid "Registrations"
|
||||
msgstr "Ilmoittautumiset"
|
||||
|
||||
#: webapp/models.py:92
|
||||
#: webapp/models.py:94 webapp/models.py:166
|
||||
msgid "Board member"
|
||||
msgstr "Hallituksen jäsen"
|
||||
|
||||
#: webapp/models.py:98
|
||||
msgid "board member"
|
||||
msgstr "Hallituksen jäsen"
|
||||
|
||||
#: webapp/models.py:104
|
||||
msgid "Description"
|
||||
msgstr "Kuvaus"
|
||||
|
||||
#: webapp/models.py:99
|
||||
#: webapp/models.py:105
|
||||
msgid "Summary"
|
||||
msgstr "Tiivistelmä"
|
||||
|
||||
#: webapp/models.py:127
|
||||
#: webapp/models.py:112
|
||||
msgid "Preset kaehmy role"
|
||||
msgstr "Kaehmyvirka"
|
||||
|
||||
#: webapp/models.py:113
|
||||
msgid "Preset kaehmy roles"
|
||||
msgstr "Kaehmyvirat"
|
||||
|
||||
#: webapp/models.py:120
|
||||
msgid "Custom kaehmy role"
|
||||
msgstr "Uusi virka"
|
||||
|
||||
#: webapp/models.py:121
|
||||
msgid "Custom kaehmy roles"
|
||||
msgstr "Uudet kaehmyvirat"
|
||||
|
||||
#: webapp/models.py:140
|
||||
msgid "Message"
|
||||
msgstr "Viesti"
|
||||
|
||||
#: webapp/models.py:140
|
||||
#: webapp/models.py:142
|
||||
msgid "Timestamp"
|
||||
msgstr "Aikaleima"
|
||||
|
||||
#: webapp/models.py:160 webapp/models.py:224
|
||||
msgid "Phone number"
|
||||
msgstr "Puhelinnumero"
|
||||
|
||||
#: webapp/models.py:161
|
||||
msgid "Year"
|
||||
msgstr "Vuosi"
|
||||
|
||||
#: webapp/models.py:154
|
||||
#: webapp/models.py:162
|
||||
msgid "Text"
|
||||
msgstr "Teksti"
|
||||
|
||||
#: webapp/models.py:164
|
||||
msgid "Custom role name"
|
||||
msgstr "Uusi virka"
|
||||
|
||||
#: webapp/models.py:174
|
||||
msgid "Kaehmy application: {}"
|
||||
msgstr "Kaehmy: {}"
|
||||
|
||||
#: webapp/models.py:209
|
||||
msgid "Role"
|
||||
msgstr "Rooli"
|
||||
|
||||
#: webapp/models.py:156
|
||||
#: webapp/models.py:211
|
||||
msgid "Start date"
|
||||
msgstr "Alkupäivämäärä"
|
||||
|
||||
#: webapp/models.py:157
|
||||
#: webapp/models.py:212
|
||||
msgid "End date"
|
||||
msgstr "Loppupäivämäärä"
|
||||
|
||||
#: webapp/models.py:167
|
||||
#: webapp/models.py:222
|
||||
msgid "Official"
|
||||
msgstr "Toimihenkilö"
|
||||
|
||||
#: webapp/models.py:169
|
||||
msgid "Phone number"
|
||||
msgstr "Puhelinnumero"
|
||||
|
||||
#: webapp/templates/admin_index.html:6
|
||||
msgid "SIK Admin"
|
||||
msgstr "SIK Hallintapaneeli"
|
||||
@@ -662,6 +711,52 @@ msgstr "International"
|
||||
msgid "Jobs"
|
||||
msgstr "Työpaikat"
|
||||
|
||||
#: webapp/templates/kaehmy.html:12
|
||||
msgid "Kaehmy"
|
||||
msgstr "Kaehmy"
|
||||
|
||||
#: webapp/templates/kaehmy_list.html:24
|
||||
msgid "All kaehmys"
|
||||
msgstr "Kaikki kaehmyt"
|
||||
|
||||
#: webapp/templates/kaehmy_list.html:28
|
||||
#: webapp/templates/kaehmy_statistics.html:14
|
||||
msgid "Total kaehmys:"
|
||||
msgstr "Kaehmyjä yhteensä:"
|
||||
|
||||
#: webapp/templates/kaehmy_list.html:36
|
||||
msgid "Commenting on post by "
|
||||
msgstr "Kommentoidaan viestiin lähettäjältä"
|
||||
|
||||
#: webapp/templates/kaehmy_list.html:48
|
||||
msgid "Comment"
|
||||
msgstr "Kommentti"
|
||||
|
||||
#: webapp/templates/kaehmy_list.html:69
|
||||
msgid "Show comments"
|
||||
msgstr "Näytä kommentit"
|
||||
|
||||
#: webapp/templates/kaehmy_list.html:75
|
||||
msgid "Add comment"
|
||||
msgstr "Kommentoi"
|
||||
|
||||
#: webapp/templates/kaehmy_message.html:11
|
||||
msgid "Reply"
|
||||
msgstr "Vastaa"
|
||||
|
||||
#: webapp/templates/kaehmy_navigation.html:10
|
||||
msgid "List kaehmys"
|
||||
msgstr "Kaikki kaehmyt"
|
||||
|
||||
#: webapp/templates/kaehmy_navigation.html:11
|
||||
msgid "New kaehmy"
|
||||
msgstr "Uusi kaehmy"
|
||||
|
||||
#: webapp/templates/kaehmy_navigation.html:12
|
||||
#: webapp/templates/kaehmy_statistics.html:12
|
||||
msgid "Statistics"
|
||||
msgstr "Kaehmytilastot"
|
||||
|
||||
#: webapp/templates/login.html:25 webapp/templates/login.html:27
|
||||
msgid "Username"
|
||||
msgstr "Käyttäjänimi"
|
||||
@@ -710,5 +805,11 @@ msgstr "Kaikki haasteet"
|
||||
msgid "Total challenges:"
|
||||
msgstr "Haasteita yhteensä:"
|
||||
|
||||
#~ msgid "Roles"
|
||||
#~ msgstr "Roolit"
|
||||
|
||||
#~ msgid "Apply"
|
||||
#~ msgstr "Hakulomake"
|
||||
|
||||
#~ msgid "language"
|
||||
#~ msgstr "Kieli"
|
||||
|
||||
+50
-2
@@ -1,11 +1,59 @@
|
||||
"""File containing webapp forms."""
|
||||
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.core.exceptions import ValidationError
|
||||
|
||||
from webapp.models import OhlhafvChallenge
|
||||
from webapp.models import CustomKaehmyRole, PresetKaehmyRole
|
||||
from webapp.models import OhlhafvChallenge, KaehmyForm, KaehmyMessage
|
||||
|
||||
|
||||
class KaehmyForm_Form(forms.ModelForm):
|
||||
"""Class representing Kaehmy form."""
|
||||
|
||||
class Meta:
|
||||
"""Meta for class KaehmyForm."""
|
||||
|
||||
model = KaehmyForm
|
||||
fields = ['name', 'email', 'phone_number', 'year',
|
||||
'preset_roles', 'custom_roles', 'custom_role_name',
|
||||
'custom_role_is_board', 'text']
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(KaehmyForm_Form, self).__init__(*args, **kwargs)
|
||||
|
||||
custom_roles_exist = CustomKaehmyRole.objects.all().exists()
|
||||
self.fields["custom_roles"].widget = forms.widgets.CheckboxSelectMultiple() if custom_roles_exist else forms.HiddenInput()
|
||||
self.fields["custom_roles"].help_text = ""
|
||||
self.fields["custom_roles"].label = _('Custom roles')
|
||||
self.fields["custom_roles"].queryset = CustomKaehmyRole.objects.all()
|
||||
self.fields["preset_roles"].widget = forms.widgets.CheckboxSelectMultiple(attrs={'title': _('Preset roles')})
|
||||
self.fields["preset_roles"].help_text = ""
|
||||
self.fields["preset_roles"].queryset = PresetKaehmyRole.objects.all()
|
||||
self.fields["preset_roles"].label = _('Preset roles')
|
||||
|
||||
def clean_phone_number(self):
|
||||
"""Clean phone number field."""
|
||||
number = self.cleaned_data.get('phone_number')
|
||||
if number.isdigit():
|
||||
return number
|
||||
else:
|
||||
raise ValidationError(_('Invalid value'))
|
||||
|
||||
|
||||
class KaehmyCommentForm(forms.ModelForm):
|
||||
|
||||
class Meta:
|
||||
model = KaehmyMessage
|
||||
fields = ['name', 'email', 'message', 'parent']
|
||||
|
||||
|
||||
class OhlhafvForm(forms.ModelForm):
|
||||
"""Class representing Ohlhafv form."""
|
||||
|
||||
class Meta:
|
||||
"""Meta class for Ohlhafv form."""
|
||||
|
||||
model = OhlhafvChallenge
|
||||
fields = ['challenger', 'challenger_email', 'victim', 'victim_email', 'series', 'message']
|
||||
fields = ['challenger', 'challenger_email',
|
||||
'victim', 'victim_email', 'series', 'message']
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11 on 2017-10-11 15:28
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('webapp', '0015_auto_20170928_2331'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='KaehmyFormSelectedRole',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
],
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='customkaehmyrole',
|
||||
name='form',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='presetkaehmyrole',
|
||||
name='form',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='kaehmyform',
|
||||
name='custom_roles',
|
||||
field=models.ManyToManyField(blank=True, related_name='forms', to='webapp.CustomKaehmyRole'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='kaehmyform',
|
||||
name='preset_roles',
|
||||
field=models.ManyToManyField(blank=True, related_name='forms', to='webapp.PresetKaehmyRole'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11 on 2017-10-11 15:45
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('webapp', '0016_auto_20171011_1828'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='kaehmyform',
|
||||
name='text',
|
||||
field=models.TextField(default='', max_length=300, verbose_name='Text'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11 on 2017-10-11 15:56
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('webapp', '0017_kaehmyform_text'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='kaehmyform',
|
||||
name='year',
|
||||
field=models.IntegerField(choices=[(1, '1'), (2, '2'), (3, '3'), (4, '4'), (5, 'N')], verbose_name='Year'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,21 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11 on 2017-10-11 16:22
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('webapp', '0018_auto_20171011_1856'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='kaehmymessage',
|
||||
name='timestamp',
|
||||
field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='Timestamp'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,25 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11 on 2017-10-11 17:20
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('webapp', '0019_kaehmymessage_timestamp'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='kaehmyform',
|
||||
name='custom_role_is_board',
|
||||
field=models.BooleanField(default=False, verbose_name='Board member'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='kaehmyform',
|
||||
name='custom_role_name',
|
||||
field=models.CharField(default='', max_length=255, verbose_name='Custom role name'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,22 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11 on 2017-10-11 16:59
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
import phonenumber_field.modelfields
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('webapp', '0019_kaehmymessage_timestamp'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='kaehmyform',
|
||||
name='phone_number',
|
||||
field=phonenumber_field.modelfields.PhoneNumberField(default='', max_length=128, verbose_name='Phone number'),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,16 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11 on 2017-10-11 17:33
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('webapp', '0020_kaehmyform_phone_number'),
|
||||
('webapp', '0020_auto_20171011_2020'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
]
|
||||
@@ -0,0 +1,25 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11 on 2017-10-11 17:50
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('webapp', '0021_merge_20171011_2033'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='kaehmyform',
|
||||
name='custom_role_is_board',
|
||||
field=models.BooleanField(verbose_name='Board member'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='kaehmyform',
|
||||
name='custom_role_name',
|
||||
field=models.CharField(blank=True, max_length=255, verbose_name='Custom role name'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,19 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11 on 2017-10-11 18:02
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('webapp', '0022_auto_20171011_2050'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='kaehmyform',
|
||||
name='phone_number',
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11 on 2017-10-11 18:12
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('webapp', '0023_remove_kaehmyform_phone_number'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='kaehmyform',
|
||||
name='phone_number',
|
||||
field=models.CharField(default='', max_length=10, verbose_name='Phone number'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,41 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11 on 2017-10-11 19:35
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('webapp', '0024_kaehmyform_phone_number'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='kaehmyform',
|
||||
name='email',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='kaehmyform',
|
||||
name='name',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='kaehmymessage',
|
||||
name='email',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='kaehmymessage',
|
||||
name='name',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='messageparent',
|
||||
name='email',
|
||||
field=models.EmailField(default='not@valid.email', max_length=254, verbose_name='Email'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='messageparent',
|
||||
name='name',
|
||||
field=models.CharField(default='Anonymous', max_length=255, verbose_name='Name'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,25 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11 on 2017-10-11 19:36
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('webapp', '0025_auto_20171011_2235'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='messageparent',
|
||||
name='email',
|
||||
field=models.EmailField(default='', max_length=254, verbose_name='Email'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='messageparent',
|
||||
name='name',
|
||||
field=models.CharField(default='', max_length=255, verbose_name='Name'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,26 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11 on 2017-10-11 21:37
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('webapp', '0026_auto_20171011_2236'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.DeleteModel(
|
||||
name='KaehmyFormSelectedRole',
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='customkaehmyrole',
|
||||
options={'verbose_name': 'Custom kaehmy role', 'verbose_name_plural': 'Custom kaehmy roles'},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='presetkaehmyrole',
|
||||
options={'verbose_name': 'Preset kaehmy role', 'verbose_name_plural': 'Preset kaehmy roles'},
|
||||
),
|
||||
]
|
||||
+63
-8
@@ -11,6 +11,8 @@ from auditlog.registry import auditlog
|
||||
from phonenumber_field.modelfields import PhoneNumberField
|
||||
from django.contrib.postgres.fields import JSONField
|
||||
|
||||
import logging
|
||||
|
||||
|
||||
VERBOSE_NAME = _('Webapp')
|
||||
|
||||
@@ -91,6 +93,10 @@ class BaseRole(models.Model):
|
||||
name = models.CharField(_('Name'), max_length=255)
|
||||
is_board = models.BooleanField(_('Board member'))
|
||||
|
||||
def __str__(self):
|
||||
n = self.name.capitalize()
|
||||
return '{} ({})'.format(n, _('board member')) if self.is_board else n
|
||||
|
||||
|
||||
class PresetRole(BaseRole):
|
||||
"""Model representing a preset occupation in the guild."""
|
||||
@@ -102,17 +108,26 @@ class PresetRole(BaseRole):
|
||||
class PresetKaehmyRole(PresetRole):
|
||||
"""Model for kaehmy role."""
|
||||
|
||||
form = models.ForeignKey('KaehmyForm', related_name='preset_roles')
|
||||
class Meta:
|
||||
verbose_name = _('Preset kaehmy role')
|
||||
verbose_name_plural = _('Preset kaehmy roles')
|
||||
|
||||
|
||||
class CustomKaehmyRole(BaseRole):
|
||||
"""Model representing a user-specified custom occupation."""
|
||||
|
||||
form = models.ForeignKey('KaehmyForm', related_name='custom_roles')
|
||||
class Meta:
|
||||
verbose_name = _('Custom kaehmy role')
|
||||
verbose_name_plural = _('Custom kaehmy roles')
|
||||
|
||||
|
||||
class MessageParent(models.Model):
|
||||
pass
|
||||
|
||||
name = models.CharField(_('Name'), max_length=255, default='')
|
||||
email = models.EmailField(_('Email'), default='')
|
||||
|
||||
def __str__(self):
|
||||
return 'Message parent #{}'.format(self.id)
|
||||
|
||||
|
||||
class KaehmyMessage(MessageParent):
|
||||
@@ -122,10 +137,9 @@ class KaehmyMessage(MessageParent):
|
||||
Every message relates to certain kaehmyform or parent message.
|
||||
"""
|
||||
|
||||
name = models.CharField(_('Name'), max_length=255)
|
||||
email = models.EmailField(_('Email'))
|
||||
message = models.TextField(_('Message'))
|
||||
parent = models.ForeignKey('MessageParent', related_name='messages')
|
||||
timestamp = models.DateTimeField(_('Timestamp'), default=timezone.now)
|
||||
|
||||
|
||||
class KaehmyForm(MessageParent):
|
||||
@@ -134,10 +148,51 @@ class KaehmyForm(MessageParent):
|
||||
|
||||
Allows user to choose from existing roles or to create custom ones.
|
||||
"""
|
||||
YEAR_CHOICES = (
|
||||
(1, '1'),
|
||||
(2, '2'),
|
||||
(3, '3'),
|
||||
(4, '4'),
|
||||
(5, 'N'),
|
||||
)
|
||||
|
||||
name = models.CharField(_('Name'), max_length=255)
|
||||
email = models.EmailField(_('Email'))
|
||||
year = models.IntegerField(_('Year'))
|
||||
phone_number = models.CharField(
|
||||
_('Phone number'), max_length=10, default="")
|
||||
year = models.IntegerField(_('Year'), choices=YEAR_CHOICES)
|
||||
text = models.TextField(_('Text'), default="", max_length=300)
|
||||
custom_role_name = models.CharField(
|
||||
_('Custom role name'), max_length=255, blank=True)
|
||||
custom_role_is_board = models.BooleanField(
|
||||
_('Board member'), blank=True)
|
||||
custom_roles = models.ManyToManyField(
|
||||
'CustomKaehmyRole', related_name='forms', blank=True)
|
||||
preset_roles = models.ManyToManyField(
|
||||
'PresetKaehmyRole', related_name='forms', blank=True)
|
||||
|
||||
def __str__(self):
|
||||
"""Return model info."""
|
||||
return _('Kaehmy application: {}').format(self.name)
|
||||
|
||||
def comment_count(self):
|
||||
"""Count comments for kaehmy."""
|
||||
total = 0
|
||||
|
||||
def recurse(message):
|
||||
count = 0
|
||||
for msg in message.messages.all():
|
||||
count += recurse(msg)
|
||||
|
||||
return count + 1
|
||||
|
||||
for message in self.messages.all():
|
||||
total += recurse(message)
|
||||
|
||||
return total
|
||||
|
||||
def all_roles(self):
|
||||
presets = [r.name.capitalize() for r in self.preset_roles.all()]
|
||||
customs = [r.name.capitalize() for r in self.custom_roles.all()]
|
||||
return ', '.join(presets + customs)
|
||||
|
||||
|
||||
class Role(PresetRole):
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
.kaehmy_navigation {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
@@ -6,7 +6,7 @@
|
||||
}
|
||||
|
||||
body {
|
||||
max-width: 700px;
|
||||
max-width: 1000px;
|
||||
margin-left: auto !important;
|
||||
margin-right: auto !important;
|
||||
}
|
||||
|
||||
@@ -16,17 +16,23 @@
|
||||
|
||||
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
|
||||
<script src="{% static "js/lib/jquery-3.1.0.min.js" %}"></script>
|
||||
<script src="{% static "js/lib/bootstrap.min.js" %}"></script>
|
||||
<link rel="stylesheet" href="{% static "css/lib/bootstrap.min.css" %}">
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" integrity="sha384-y3tfxAZXuh4HwSYylfB+J125MxIs6mR5FOHamPBG064zB+AFeWH94NdvaCBm8qnd" crossorigin="anonymous">
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
|
||||
<script src="{% static "js/lib/underscore-min.js" %}"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
{% block header %}
|
||||
<div class="header">
|
||||
{% include "sik_header.html" %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
<div class="page-content">
|
||||
{% include "navigation.html" %}
|
||||
{% block navigation %}
|
||||
{% include "navigation.html" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block navigation %}
|
||||
{% endblock navigation %}
|
||||
|
||||
{% block content %}
|
||||
<div class="alert alert-danger" role="alert">
|
||||
{{ errors|safe }}
|
||||
</div>
|
||||
{% endblock content %}
|
||||
@@ -0,0 +1,25 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block navigation %}
|
||||
{% include "kaehmy_navigation.html" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div>
|
||||
<h3 style="padding-top: 1rem">{% trans "Kaehmy" %}</h3>
|
||||
|
||||
<div id="input_form">
|
||||
<form name="kaehmyForm" action="/kaehmy/submit/" method="post" class="form">{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">
|
||||
{% trans "Submit" %}
|
||||
</button>
|
||||
{% endbuttons %}
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock content %}
|
||||
@@ -0,0 +1,89 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load static %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block navigation %}
|
||||
{% include "kaehmy_navigation.html" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<script>
|
||||
function commentOn(id, op) {
|
||||
setTimeout(function() {
|
||||
document.getElementById("commentNameField").focus();
|
||||
}, 50);
|
||||
|
||||
document.getElementById("collapse_add_comment").scrollIntoView();
|
||||
document.getElementById("commentOP").innerHTML = op;
|
||||
document.getElementById("commentId").value = id;
|
||||
}
|
||||
</script>
|
||||
<div>
|
||||
<div>
|
||||
<h2 style="padding-top: 1rem">{% trans "All kaehmys" %}</h2>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h6 style="padding-bottom: 1rem">{% trans "Total kaehmys:" %} {{ application_count }}</h6>
|
||||
</div>
|
||||
|
||||
<div class="collapse" id="collapse_add_comment">
|
||||
<div class="card">
|
||||
<div class="card-block">
|
||||
<form method="POST" action="/kaehmy/add_comment" class="form">{% csrf_token %}
|
||||
<div class="form-group">
|
||||
{% trans "Commenting on post by " %} <span id="commentOP"></span>
|
||||
<input type="hidden" name="parent" id="commentId">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{% trans "Name" %}</label>
|
||||
<input id="commentNameField" name="name" type="text" class="form-control" placeholder="Teemu Teekkari">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{% trans "Email" %}</label>
|
||||
<input name="email" type="email" class="form-control" placeholder="teemu@teekka.ri">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{% trans "Comment" %}</label>
|
||||
<textarea name="message" class="form-control" rows=3 placeholder="Hei!"></textarea>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input type="submit" class="btn btn-primary" value={% trans "Send" %}>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% for application in applications %}
|
||||
<div class="card">
|
||||
<h4 class="card-header">{{ application.name }}</h4>
|
||||
<div class="card-block">
|
||||
<h5 style="padding-bottom: 1rem" class="card-subtitle mb-2 text-muted">{{ application.all_roles }}</h5>
|
||||
|
||||
<p class="card-text">{{ application.text }}</p>
|
||||
|
||||
{% if application.comment_count > 0 %}
|
||||
<a type="button" style="cursor: pointer" data-toggle="collapse" data-target="#collapse_{{ application.id }}" aria-expanded="false" aria-controls="collapse_{{ application.id }}">
|
||||
{% trans "Show comments" %} ({{ application.comment_count }})
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
<div>
|
||||
<a type="button" onclick="commentOn({{ application.id }}, '{{ application.name }}')" style="cursor: pointer" data-toggle="collapse" data-target="#collapse_add_comment" aria-expanded="false" aria-controls="collapse_add_comment">
|
||||
{% trans "Add comment" %}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="collapse" id="collapse_{{ application.id }}">
|
||||
{% for message in application.messages.all %}
|
||||
{% include "kaehmy_message.html" with messages=message.messages.all %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
{% endblock content %}
|
||||
@@ -0,0 +1,21 @@
|
||||
{% load i18n %}
|
||||
|
||||
<div class="card" style="margin-top: 0.5rem; margin-bottom: 0">
|
||||
<div class="card-block">
|
||||
<h4>{{ message.name }}</h4>
|
||||
<p>{{ message.message }}</p>
|
||||
|
||||
<h6 class="card-subtitle mb-2 text-muted">{{ message.timestamp }}</h6>
|
||||
<div>
|
||||
<a type="button" onclick="commentOn({{ message.id }}, '{{ message.name }}')" style="cursor: pointer" data-toggle="collapse" data-target="#collapse_add_comment" aria-expanded="false" aria-controls="collapse_add_comment">
|
||||
{% trans "Reply" %}
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
{% for message in messages %}
|
||||
{% include "kaehmy_message.html" with messages=message.messages.all %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,16 @@
|
||||
{% load i18n %}
|
||||
<link rel="stylesheet" href="/static/css/kaehmy_nav.css">
|
||||
<div class="kaehmy_navigation">
|
||||
<nav style="border-bottom: 2px solid #282b3b" class="navbar navbar-toggleable-md navbar-light bg-faded">
|
||||
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#kaehmy_nav" aria-controls="kaehmy_nav" aria-expanded="false" aria-label="Toggle navigation">
|
||||
Menu<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="kaehmy_nav">
|
||||
<div class="navbar-nav">
|
||||
<a class="nav-item nav-link" href="/kaehmy">{% trans "List kaehmys" %}</a>
|
||||
<a class="nav-item nav-link" href="/kaehmy/new">{% trans "New kaehmy" %} <span class="sr-only">(current)</span></a>
|
||||
<a class="nav-item nav-link" href="/kaehmy/statistics">{% trans "Statistics" %}</a>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
@@ -0,0 +1,23 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block navigation %}
|
||||
{% include "kaehmy_navigation.html" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div>
|
||||
<h3>{% trans "Statistics" %}</h3>
|
||||
<div>
|
||||
<h6>{% trans "Total kaehmys:" %} {{ application_count }}</h6>
|
||||
</div>
|
||||
|
||||
{% for role in role_list %}
|
||||
<div>
|
||||
<p>{{ role.0 }} ({{ role.1 }})</p>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endblock content %}
|
||||
@@ -12,7 +12,7 @@
|
||||
</div>
|
||||
|
||||
<div class="ohlhafv_count">
|
||||
<span>{% trans "Total challenges:" %} {{ challenge_count }}</span>
|
||||
<span>{% trans "Total challenges:" %}{{ application_count }}</span>
|
||||
</div>
|
||||
|
||||
{{ table|safe }}
|
||||
|
||||
@@ -3,6 +3,6 @@
|
||||
|
||||
<div class="header-content">
|
||||
<div class="logo">
|
||||
<a href="/"><img src="/static/img/logo_header.png" alt="Shiit ei kuvaa"></a>
|
||||
<a href="/kaehmy"><img src="/static/img/logo_header.png" alt="Aalto-yliopiston Sähköinsinöörikilta ry"></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+15
-1
@@ -18,6 +18,11 @@ from webapp.views import event_calendar_view
|
||||
from webapp.views import international_view
|
||||
from webapp.views import sosso_view
|
||||
from webapp.views import contact_view
|
||||
from webapp.views import kaehmy_view
|
||||
from webapp.views import kaehmy_list_view
|
||||
from webapp.views import kaehmy_submit
|
||||
from webapp.views import kaehmy_comment
|
||||
from webapp.views import kaehmy_statistics_view
|
||||
|
||||
urlpatterns = [
|
||||
# main
|
||||
@@ -30,6 +35,8 @@ urlpatterns = [
|
||||
|
||||
# git revision
|
||||
url(r'^about', about_view),
|
||||
|
||||
# pages
|
||||
url(r'^guild', guild_view),
|
||||
url(r'^freshmen', freshmen_view),
|
||||
url(r'^event_calendar', event_calendar_view),
|
||||
@@ -40,8 +47,15 @@ urlpatterns = [
|
||||
# corporate
|
||||
url(r'^jobs', jobs_view),
|
||||
|
||||
# kaehmy
|
||||
url(r'^kaehmy/new', kaehmy_view),
|
||||
url(r'^kaehmy/submit', kaehmy_submit),
|
||||
url(r'^kaehmy/add_comment', kaehmy_comment),
|
||||
url(r'^kaehmy/statistics', kaehmy_statistics_view),
|
||||
url(r'^kaehmy', kaehmy_list_view),
|
||||
|
||||
# ohlhafv
|
||||
url(r'^ohlhafv$', ohlhafv_view),
|
||||
url(r'^ohlhafv/submit', ohlhafv_submit),
|
||||
url(r'^ohlhafv/list', ohlhafv_list),
|
||||
url(r'^ohlhafv', ohlhafv_view),
|
||||
]
|
||||
|
||||
+123
-2
@@ -8,10 +8,27 @@ from django.http import HttpResponse, HttpResponseRedirect
|
||||
from django.contrib.auth.decorators import permission_required, login_required
|
||||
from django.conf import settings
|
||||
import logging
|
||||
from webapp.models import OhlhafvChallenge
|
||||
from webapp.forms import OhlhafvForm
|
||||
from webapp.models import PresetKaehmyRole, CustomKaehmyRole
|
||||
from webapp.models import OhlhafvChallenge, KaehmyForm
|
||||
from webapp.forms import OhlhafvForm, KaehmyForm_Form, KaehmyCommentForm
|
||||
from webapp.tables import OhlhafvTable
|
||||
|
||||
from django.core.mail import send_mail
|
||||
from django.conf import settings
|
||||
|
||||
|
||||
def send_email(to, subject, body):
|
||||
success = send_mail(
|
||||
subject,
|
||||
body,
|
||||
settings.DEFAULT_EMAIL_FROM,
|
||||
[to],
|
||||
fail_silently=False,
|
||||
)
|
||||
|
||||
if success == 0:
|
||||
raise Exception('Failed to send email!')
|
||||
|
||||
|
||||
@require_http_methods(["GET"])
|
||||
def main_index(request, *args, **kwargs):
|
||||
@@ -106,6 +123,46 @@ def contact_view(request, *args, **kwargs):
|
||||
return render(request, "contact.html", {})
|
||||
|
||||
|
||||
@require_http_methods(["GET"])
|
||||
def kaehmy_view(request, *args, **kwargs):
|
||||
"""Render Kaehmy form page."""
|
||||
form = KaehmyForm_Form()
|
||||
return render(request, 'kaehmy.html', {'form': form})
|
||||
|
||||
|
||||
@ensure_csrf_cookie
|
||||
@require_http_methods(["POST"])
|
||||
def kaehmy_submit(request, *args, **kwargs):
|
||||
"""Submit Kaehmy form."""
|
||||
form = KaehmyForm_Form(request.POST)
|
||||
if form.is_valid():
|
||||
application = form.save()
|
||||
custom_name = form.cleaned_data.get('custom_role_name')
|
||||
custom_is_board = form.cleaned_data.get('custom_role_is_board')
|
||||
|
||||
if len(custom_name) > 0:
|
||||
custom_role = CustomKaehmyRole(
|
||||
name=custom_name, is_board=custom_is_board)
|
||||
custom_role.save()
|
||||
application.custom_roles.add(custom_role)
|
||||
|
||||
email = form.cleaned_data.get('email', '')
|
||||
name = form.cleaned_data.get('name', 'Anonymous')
|
||||
subject = 'Arwokas kirjattu kirje mahdolliselle tulewalle kiltahenkilölle'
|
||||
body = ('Moikka {}!\r\n\r\nHienoa, että kilta kiinnostaa! Kaehmysi on vastaanotettu.\r\n'
|
||||
'Mahdollisista kommenteista tulee ilmoitus sähköpostitse.\r\n\r\n'
|
||||
'Käy katsomassa kaehmytilanne osoitteessa http://sika.sahkoinsinoorikilta.fi/kaehmy').format(name)
|
||||
|
||||
send_email(email, subject, body)
|
||||
logging.debug('Sent kaehmy email to recipient <{}>'.format(email))
|
||||
else:
|
||||
context = {
|
||||
'errors': form.errors
|
||||
}
|
||||
return render(request, 'error.html', context)
|
||||
return HttpResponseRedirect('/kaehmy')
|
||||
|
||||
|
||||
@require_http_methods(["GET"])
|
||||
def ohlhafv_view(request, *args, **kwargs):
|
||||
"""Render Ohlhafv form page."""
|
||||
@@ -146,3 +203,67 @@ def ohlhafv_list(request, *args, **kwargs):
|
||||
'challenge_count': len(challenges),
|
||||
}
|
||||
return render(request, 'ohlhafv_list.html', context)
|
||||
|
||||
|
||||
@ensure_csrf_cookie
|
||||
@require_http_methods(["GET"])
|
||||
def kaehmy_list_view(request, *args, **kwargs):
|
||||
"""Kaehmy application list"""
|
||||
|
||||
applications = KaehmyForm.objects.all()
|
||||
|
||||
context = {
|
||||
'applications': applications,
|
||||
'application_count': len(applications)
|
||||
}
|
||||
return render(request, 'kaehmy_list.html', context)
|
||||
|
||||
|
||||
@ensure_csrf_cookie
|
||||
@require_http_methods(["POST"])
|
||||
def kaehmy_comment(request, *args, **kwargs):
|
||||
"""POST endpoint for commenting"""
|
||||
|
||||
form = KaehmyCommentForm(request.POST)
|
||||
if form.is_valid():
|
||||
comment = form.save()
|
||||
email = comment.parent.email
|
||||
name = comment.name
|
||||
|
||||
subject = 'Kaehmyysi tai kommenttiisi on vastattu!'
|
||||
body = ('{} on vastannut kaehmyhakemukseesi tai kommenttiisi kaehmypalvelussa.\r\n\r\n'
|
||||
'Käy lukemassa viesti osoitteessa http://sika.sahkoinsinoorikilta.fi/kaehmy').format(name.capitalize())
|
||||
|
||||
send_email(email, subject, body)
|
||||
logging.debug('Sent kaehmy comment email to recipient <{}>'.format(email))
|
||||
|
||||
return redirect('/kaehmy')
|
||||
else:
|
||||
print(form)
|
||||
context = {
|
||||
'errors': form.errors
|
||||
}
|
||||
return render(request, 'error.html', context)
|
||||
|
||||
|
||||
@require_http_methods(["GET"])
|
||||
def kaehmy_statistics_view(request, *args, **kwargs):
|
||||
"""Kaehmys roles listed by applications"""
|
||||
|
||||
applications = KaehmyForm.objects.all()
|
||||
role_list = []
|
||||
|
||||
preset_roles = PresetKaehmyRole.objects.all()
|
||||
custom_roles = CustomKaehmyRole.objects.all()
|
||||
|
||||
for preset in preset_roles:
|
||||
role_list.append((preset.name, preset.forms.all().count()))
|
||||
for custom in custom_roles:
|
||||
role_list.append((custom.name, custom.forms.all().count()))
|
||||
|
||||
context = {
|
||||
'applications': applications,
|
||||
'application_count': len(applications),
|
||||
'role_list': role_list
|
||||
}
|
||||
return render(request, 'kaehmy_statistics.html', context)
|
||||
|
||||
Reference in New Issue
Block a user