Merge branch 'develop' into 'master'
Prod deploy * Soft deletes * sahkoinsinoorikilta.fi domain See merge request sahkoinsinoorikilta/vtmk/web2.0-backend!34
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
HOST=web.sik.party
|
HOST=api.dev.sahkoinsinoorikilta.fi
|
||||||
DEBUG=True
|
DEBUG=True
|
||||||
SECRET_KEY=7p$85^4ibb^p4-=vs44b7!y0e-zemugze18@a#30&71=a8)dp(
|
SECRET_KEY=7p$85^4ibb^p4-=vs44b7!y0e-zemugze18@a#30&71=a8)dp(
|
||||||
TG_BOT_TOKEN=
|
TG_BOT_TOKEN=
|
||||||
|
|||||||
+2
-2
@@ -78,7 +78,7 @@ deploy:dev:
|
|||||||
- develop
|
- develop
|
||||||
environment:
|
environment:
|
||||||
name: dev
|
name: dev
|
||||||
url: http://api.dev.sik.party
|
url: http://api.dev.sahkoinsinoorikilta.fi
|
||||||
variables:
|
variables:
|
||||||
DOCKER_HOST: $DEV_CI_DOCKER_HOST
|
DOCKER_HOST: $DEV_CI_DOCKER_HOST
|
||||||
DOCKER_TLS_VERIFY: 1
|
DOCKER_TLS_VERIFY: 1
|
||||||
@@ -100,7 +100,7 @@ deploy:production:
|
|||||||
- master
|
- master
|
||||||
environment:
|
environment:
|
||||||
name: production
|
name: production
|
||||||
url: api.sika.sik.party
|
url: api.sahkoinsinoorikilta.fi
|
||||||
when: manual
|
when: manual
|
||||||
variables:
|
variables:
|
||||||
DOCKER_HOST: $CI_DOCKER_HOST
|
DOCKER_HOST: $CI_DOCKER_HOST
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
{% blocktrans %}Kaehmykoneella voit ilmaista kiinnostuksesi toimia killassa ensi vuonna.
|
{% blocktrans %}Kaehmykoneella voit ilmaista kiinnostuksesi toimia killassa ensi vuonna.
|
||||||
Listassa on vastuualueittain sekä hallitus- että toimihenkilövirkoja.
|
Listassa on vastuualueittain sekä hallitus- että toimihenkilövirkoja.
|
||||||
Koska lista ei ole koskaan täydellinen, voit myös ehdottaa ihan uutta toimenkuvaa.
|
Koska lista ei ole koskaan täydellinen, voit myös ehdottaa ihan uutta toimenkuvaa.
|
||||||
Jos sinulla on kysyttävää mistä tahansa virasta, kannattaa konsultoida <a href="https://static.sika.sik.party/uus_webi/kahmyopas.pdf">kaehmyopasta</a>
|
Jos sinulla on kysyttävää mistä tahansa virasta, kannattaa konsultoida <a href="https://static.sahkoinsinoorikilta.fi/uus_webi/kahmyopas.pdf">kaehmyopasta</a>
|
||||||
tai olla yhteydessä kyseistä virkaa tänä vuonna toimittavaan henkilöön.{% endblocktrans %}
|
tai olla yhteydessä kyseistä virkaa tänä vuonna toimittavaan henkilöön.{% endblocktrans %}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
Binary file not shown.
+72
-118
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2020-11-07 17:05+0200\n"
|
"POT-Creation-Date: 2021-01-18 21:36+0200\n"
|
||||||
"PO-Revision-Date: 2017-11-02 23:09+0200\n"
|
"PO-Revision-Date: 2017-11-02 23:09+0200\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
@@ -37,7 +37,7 @@ msgstr "Sössö articles"
|
|||||||
msgid "Today's lunch"
|
msgid "Today's lunch"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: infoscreen/models.py:212 webapp/models.py:68
|
#: infoscreen/models.py:212 webapp/models.py:70
|
||||||
msgid "Events"
|
msgid "Events"
|
||||||
msgstr "Events"
|
msgstr "Events"
|
||||||
|
|
||||||
@@ -112,9 +112,8 @@ msgstr "Preview"
|
|||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Delete"
|
msgstr "Delete"
|
||||||
|
|
||||||
#: infoscreen/templates/tabs/add_remove.html:23 kaehmy/models.py:56
|
#: infoscreen/templates/tabs/add_remove.html:23 kaehmy/models.py:62
|
||||||
#: kaehmy/templates/list.html:36 webapp/models.py:138 webapp/models.py:166
|
#: kaehmy/templates/list.html:36 webapp/models.py:144 webapp/models.py:173
|
||||||
#: webapp/models.py:192
|
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Name"
|
msgstr "Name"
|
||||||
|
|
||||||
@@ -202,157 +201,157 @@ msgstr "Invalid phone number"
|
|||||||
msgid "Custom role with the same name already exists."
|
msgid "Custom role with the same name already exists."
|
||||||
msgstr "Custom role with the same name already exists."
|
msgstr "Custom role with the same name already exists."
|
||||||
|
|
||||||
#: kaehmy/models.py:13
|
#: kaehmy/models.py:18
|
||||||
msgid "Kaehmy"
|
msgid "Kaehmy"
|
||||||
msgstr "Kaehmy"
|
msgstr "Kaehmy"
|
||||||
|
|
||||||
#: kaehmy/models.py:19
|
#: kaehmy/models.py:25
|
||||||
msgid "Corporate affairs"
|
msgid "Corporate affairs"
|
||||||
msgstr "Corporate affairs"
|
msgstr "Corporate affairs"
|
||||||
|
|
||||||
#: kaehmy/models.py:20 webapp/templates/freshmen.html:10
|
#: kaehmy/models.py:26 webapp/templates/freshmen.html:10
|
||||||
#: webapp/templates/navigation.html:8
|
#: webapp/templates/navigation.html:8
|
||||||
msgid "Freshmen"
|
msgid "Freshmen"
|
||||||
msgstr "Freshmen"
|
msgstr "Freshmen"
|
||||||
|
|
||||||
#: kaehmy/models.py:21 webapp/templates/international.html:10
|
#: kaehmy/models.py:27 webapp/templates/international.html:10
|
||||||
#: webapp/templates/navigation.html:14
|
#: webapp/templates/navigation.html:14
|
||||||
msgid "International"
|
msgid "International"
|
||||||
msgstr "International"
|
msgstr "International"
|
||||||
|
|
||||||
#: kaehmy/models.py:22
|
#: kaehmy/models.py:28
|
||||||
msgid "External affairs"
|
msgid "External affairs"
|
||||||
msgstr "External affairs"
|
msgstr "External affairs"
|
||||||
|
|
||||||
#: kaehmy/models.py:23
|
#: kaehmy/models.py:29
|
||||||
msgid "Media"
|
msgid "Media"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: kaehmy/models.py:24
|
#: kaehmy/models.py:30
|
||||||
msgid "Technology"
|
msgid "Technology"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: kaehmy/models.py:25
|
#: kaehmy/models.py:31
|
||||||
msgid "Wellbeing"
|
msgid "Wellbeing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: kaehmy/models.py:26
|
#: kaehmy/models.py:32
|
||||||
msgid "Elepaja"
|
msgid "Elepaja"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: kaehmy/models.py:27
|
#: kaehmy/models.py:33
|
||||||
msgid "Ceremonies"
|
msgid "Ceremonies"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: kaehmy/models.py:28
|
#: kaehmy/models.py:34
|
||||||
msgid "Studies"
|
msgid "Studies"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: kaehmy/models.py:29
|
#: kaehmy/models.py:35
|
||||||
msgid "Sössö magazine"
|
msgid "Sössö magazine"
|
||||||
msgstr "Sössö magazine"
|
msgstr "Sössö magazine"
|
||||||
|
|
||||||
#: kaehmy/models.py:30
|
#: kaehmy/models.py:36
|
||||||
msgid "Alumni relations"
|
msgid "Alumni relations"
|
||||||
msgstr "Alumni relations"
|
msgstr "Alumni relations"
|
||||||
|
|
||||||
#: kaehmy/models.py:31
|
#: kaehmy/models.py:37
|
||||||
msgid "Others"
|
msgid "Others"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: kaehmy/models.py:33
|
#: kaehmy/models.py:39
|
||||||
msgid "Category"
|
msgid "Category"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: kaehmy/models.py:39 webapp/models.py:176
|
#: kaehmy/models.py:45
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr "Description"
|
msgstr "Description"
|
||||||
|
|
||||||
#: kaehmy/models.py:42
|
#: kaehmy/models.py:48
|
||||||
msgid "Preset kaehmy role"
|
msgid "Preset kaehmy role"
|
||||||
msgstr "Preset kaehmy role"
|
msgstr "Preset kaehmy role"
|
||||||
|
|
||||||
#: kaehmy/models.py:43
|
#: kaehmy/models.py:49
|
||||||
msgid "Preset kaehmy roles"
|
msgid "Preset kaehmy roles"
|
||||||
msgstr "Preset kaehmy roles"
|
msgstr "Preset kaehmy roles"
|
||||||
|
|
||||||
#: kaehmy/models.py:50
|
#: kaehmy/models.py:56
|
||||||
msgid "Custom kaehmy role"
|
msgid "Custom kaehmy role"
|
||||||
msgstr "Custom kaehmy role"
|
msgstr "Custom kaehmy role"
|
||||||
|
|
||||||
#: kaehmy/models.py:51
|
#: kaehmy/models.py:57
|
||||||
msgid "Custom kaehmy roles"
|
msgid "Custom kaehmy roles"
|
||||||
msgstr "Custom kaehmy roles"
|
msgstr "Custom kaehmy roles"
|
||||||
|
|
||||||
#: kaehmy/models.py:57 kaehmy/templates/list.html:40 members/models.py:14
|
#: kaehmy/models.py:63 kaehmy/templates/list.html:40 members/models.py:14
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
#: kaehmy/models.py:58
|
#: kaehmy/models.py:64
|
||||||
msgid "Timestamp"
|
msgid "Timestamp"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: kaehmy/models.py:72
|
#: kaehmy/models.py:78
|
||||||
msgid "Kaehmykommentti"
|
msgid "Kaehmykommentti"
|
||||||
msgstr "Kaehmy comment"
|
msgstr "Kaehmy comment"
|
||||||
|
|
||||||
#: kaehmy/models.py:73
|
#: kaehmy/models.py:79
|
||||||
msgid "Kaehmykommentit"
|
msgid "Kaehmykommentit"
|
||||||
msgstr "Kaehmy comments"
|
msgstr "Kaehmy comments"
|
||||||
|
|
||||||
#: kaehmy/models.py:75 ohlhafv/models.py:36
|
#: kaehmy/models.py:81 ohlhafv/models.py:36
|
||||||
msgid "Message"
|
msgid "Message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: kaehmy/models.py:94 kaehmy/templates/kaehmy.html:12
|
#: kaehmy/models.py:100 kaehmy/templates/kaehmy.html:12
|
||||||
msgid "Kaehmylomake"
|
msgid "Kaehmylomake"
|
||||||
msgstr "Kaehmy application"
|
msgstr "Kaehmy application"
|
||||||
|
|
||||||
#: kaehmy/models.py:95
|
#: kaehmy/models.py:101
|
||||||
msgid "Kaehmylomakkeet"
|
msgid "Kaehmylomakkeet"
|
||||||
msgstr "Kaehmy applications"
|
msgstr "Kaehmy applications"
|
||||||
|
|
||||||
#: kaehmy/models.py:98 webapp/models.py:252
|
#: kaehmy/models.py:104
|
||||||
msgid "Phone number"
|
msgid "Phone number"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: kaehmy/models.py:99
|
#: kaehmy/models.py:105
|
||||||
msgid "Year"
|
msgid "Year"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: kaehmy/models.py:100
|
#: kaehmy/models.py:106
|
||||||
msgid "Text"
|
msgid "Text"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: kaehmy/models.py:102
|
#: kaehmy/models.py:108
|
||||||
msgid "Custom role name"
|
msgid "Custom role name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: kaehmy/models.py:104 webapp/models.py:167
|
#: kaehmy/models.py:110 webapp/models.py:174
|
||||||
msgid "Board member"
|
msgid "Board member"
|
||||||
msgstr "Board member"
|
msgstr "Board member"
|
||||||
|
|
||||||
#: kaehmy/models.py:112
|
#: kaehmy/models.py:118
|
||||||
msgid "Kaehmy application: {}"
|
msgid "Kaehmy application: {}"
|
||||||
msgstr "Kaehmy application: {}"
|
msgstr "Kaehmy application: {}"
|
||||||
|
|
||||||
#: kaehmy/models.py:134
|
#: kaehmy/models.py:140
|
||||||
msgid "Board: {}"
|
msgid "Board: {}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: kaehmy/models.py:140
|
#: kaehmy/models.py:146
|
||||||
msgid "Official: {}"
|
msgid "Official: {}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: kaehmy/models.py:157
|
#: kaehmy/models.py:163
|
||||||
msgid "Telegram channel"
|
msgid "Telegram channel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: kaehmy/models.py:158
|
#: kaehmy/models.py:164
|
||||||
msgid "Telegram channels"
|
msgid "Telegram channels"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: kaehmy/tables.py:13 webapp/models.py:207
|
#: kaehmy/tables.py:13
|
||||||
msgid "Roles"
|
msgid "Roles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -393,8 +392,8 @@ msgid ""
|
|||||||
" Koska lista ei ole koskaan täydellinen, voit myös ehdottaa ihan "
|
" Koska lista ei ole koskaan täydellinen, voit myös ehdottaa ihan "
|
||||||
"uutta toimenkuvaa.\n"
|
"uutta toimenkuvaa.\n"
|
||||||
" Jos sinulla on kysyttävää mistä tahansa virasta, kannattaa "
|
" Jos sinulla on kysyttävää mistä tahansa virasta, kannattaa "
|
||||||
"konsultoida <a href=\"https://static.sika.sik.party/uus_webi/kahmyopas.pdf"
|
"konsultoida <a href=\"https://static.sahkoinsinoorikilta.fi/uus_webi/"
|
||||||
"\">kaehmyopasta</a>\n"
|
"kahmyopas.pdf\">kaehmyopasta</a>\n"
|
||||||
" tai olla yhteydessä kyseistä virkaa tänä vuonna toimittavaan "
|
" tai olla yhteydessä kyseistä virkaa tänä vuonna toimittavaan "
|
||||||
"henkilöön."
|
"henkilöön."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -410,7 +409,9 @@ msgstr ""
|
|||||||
msgid ""
|
msgid ""
|
||||||
"(HUOM! Kaehmytekstin maksimipituus on 300 merkkiä. Tarvittaessa voit "
|
"(HUOM! Kaehmytekstin maksimipituus on 300 merkkiä. Tarvittaessa voit "
|
||||||
"kirjoittaa lisätietoja kommenteihin.)"
|
"kirjoittaa lisätietoja kommenteihin.)"
|
||||||
msgstr "(NOTE! The application text is limited to 300 characters. You can use the comment section for additional info.)"
|
msgstr ""
|
||||||
|
"(NOTE! The application text is limited to 300 characters. You can use the "
|
||||||
|
"comment section for additional info.)"
|
||||||
|
|
||||||
#: kaehmy/templates/kaehmy.html:26
|
#: kaehmy/templates/kaehmy.html:26
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -528,11 +529,11 @@ msgstr "I'm a member of AYY"
|
|||||||
msgid "I want to receive a weekly newsletter"
|
msgid "I want to receive a weekly newsletter"
|
||||||
msgstr "I want to receive a weekly newsletter"
|
msgstr "I want to receive a weekly newsletter"
|
||||||
|
|
||||||
#: members/models.py:12 webapp/models.py:249
|
#: members/models.py:12
|
||||||
msgid "First name"
|
msgid "First name"
|
||||||
msgstr "First name"
|
msgstr "First name"
|
||||||
|
|
||||||
#: members/models.py:13 webapp/models.py:250
|
#: members/models.py:13
|
||||||
msgid "Last name"
|
msgid "Last name"
|
||||||
msgstr "Last name"
|
msgstr "Last name"
|
||||||
|
|
||||||
@@ -1135,111 +1136,64 @@ msgstr ""
|
|||||||
msgid "Feeds"
|
msgid "Feeds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: webapp/models.py:60
|
#: webapp/models.py:61 webapp/models.py:80 webapp/models.py:119
|
||||||
msgid "Feed: {}"
|
#: webapp/models.py:152 webapp/models.py:198
|
||||||
msgstr "Feed: {}"
|
msgid "Deleted: "
|
||||||
|
msgstr "Deleted: "
|
||||||
|
|
||||||
#: webapp/models.py:67
|
#: webapp/models.py:62
|
||||||
|
msgid "{}Feed: {}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: webapp/models.py:69
|
||||||
msgid "Event"
|
msgid "Event"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: webapp/models.py:77
|
#: webapp/models.py:81
|
||||||
msgid "Event: {}"
|
msgid "{}Event: {}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: webapp/models.py:87
|
#: webapp/models.py:91
|
||||||
msgid "Template question"
|
msgid "Template question"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: webapp/models.py:88
|
#: webapp/models.py:92
|
||||||
msgid "Template questions"
|
msgid "Template questions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: webapp/models.py:94
|
#: webapp/models.py:98
|
||||||
msgid "Template questions: {}"
|
msgid "Template questions: {}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: webapp/models.py:101
|
#: webapp/models.py:105
|
||||||
msgid "Signup form"
|
msgid "Signup form"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: webapp/models.py:102
|
#: webapp/models.py:106
|
||||||
msgid "Signup forms"
|
msgid "Signup forms"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: webapp/models.py:114
|
#: webapp/models.py:120
|
||||||
msgid "#{} {}"
|
msgid "#{} {}{}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: webapp/models.py:132
|
#: webapp/models.py:138
|
||||||
msgid "Sign-up"
|
msgid "Sign-up"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: webapp/models.py:133
|
#: webapp/models.py:139
|
||||||
msgid "Sign-ups"
|
msgid "Sign-ups"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: webapp/models.py:171
|
#: webapp/models.py:178
|
||||||
msgid "board member"
|
msgid "board member"
|
||||||
msgstr "board member"
|
msgstr "board member"
|
||||||
|
|
||||||
#: webapp/models.py:186
|
#: webapp/models.py:185
|
||||||
msgid "Committee"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: webapp/models.py:187
|
|
||||||
msgid "Committees"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: webapp/models.py:190
|
|
||||||
msgid "Committee: {}"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: webapp/models.py:206
|
|
||||||
msgid "Role"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: webapp/models.py:212
|
|
||||||
msgid "Yes"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: webapp/models.py:212
|
|
||||||
msgid "No"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: webapp/models.py:223
|
|
||||||
msgid "Occupation"
|
|
||||||
msgstr "Occupation"
|
|
||||||
|
|
||||||
#: webapp/models.py:224
|
|
||||||
msgid "Occupations"
|
|
||||||
msgstr "Occupations"
|
|
||||||
|
|
||||||
#: webapp/models.py:226
|
|
||||||
msgid "Start date"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: webapp/models.py:227
|
|
||||||
msgid "End date"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: webapp/models.py:244
|
|
||||||
msgid "Official"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: webapp/models.py:245
|
|
||||||
msgid "Officials"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: webapp/models.py:251
|
|
||||||
msgid "Email address"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: webapp/models.py:277
|
|
||||||
msgid "JobAd"
|
msgid "JobAd"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: webapp/models.py:278
|
#: webapp/models.py:186
|
||||||
msgid "JobAds"
|
msgid "JobAds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
+71
-119
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2020-11-07 17:05+0200\n"
|
"POT-Creation-Date: 2021-01-18 21:36+0200\n"
|
||||||
"PO-Revision-Date: 2017-11-02 23:04+0200\n"
|
"PO-Revision-Date: 2017-11-02 23:04+0200\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
@@ -38,7 +38,7 @@ msgstr "Sössön artikkelit"
|
|||||||
msgid "Today's lunch"
|
msgid "Today's lunch"
|
||||||
msgstr "Päivän lounas"
|
msgstr "Päivän lounas"
|
||||||
|
|
||||||
#: infoscreen/models.py:212 webapp/models.py:68
|
#: infoscreen/models.py:212 webapp/models.py:70
|
||||||
msgid "Events"
|
msgid "Events"
|
||||||
msgstr "Tapahtumat"
|
msgstr "Tapahtumat"
|
||||||
|
|
||||||
@@ -113,9 +113,8 @@ msgstr "Esikatsele"
|
|||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Poista"
|
msgstr "Poista"
|
||||||
|
|
||||||
#: infoscreen/templates/tabs/add_remove.html:23 kaehmy/models.py:56
|
#: infoscreen/templates/tabs/add_remove.html:23 kaehmy/models.py:62
|
||||||
#: kaehmy/templates/list.html:36 webapp/models.py:138 webapp/models.py:166
|
#: kaehmy/templates/list.html:36 webapp/models.py:144 webapp/models.py:173
|
||||||
#: webapp/models.py:192
|
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nimi"
|
msgstr "Nimi"
|
||||||
|
|
||||||
@@ -203,157 +202,157 @@ msgstr "Virheellinen puhelinnumero"
|
|||||||
msgid "Custom role with the same name already exists."
|
msgid "Custom role with the same name already exists."
|
||||||
msgstr "Samanniminen virka on jo olemassa."
|
msgstr "Samanniminen virka on jo olemassa."
|
||||||
|
|
||||||
#: kaehmy/models.py:13
|
#: kaehmy/models.py:18
|
||||||
msgid "Kaehmy"
|
msgid "Kaehmy"
|
||||||
msgstr "Kaehmy"
|
msgstr "Kaehmy"
|
||||||
|
|
||||||
#: kaehmy/models.py:19
|
#: kaehmy/models.py:25
|
||||||
msgid "Corporate affairs"
|
msgid "Corporate affairs"
|
||||||
msgstr "Yrityssuhteet"
|
msgstr "Yrityssuhteet"
|
||||||
|
|
||||||
#: kaehmy/models.py:20 webapp/templates/freshmen.html:10
|
#: kaehmy/models.py:26 webapp/templates/freshmen.html:10
|
||||||
#: webapp/templates/navigation.html:8
|
#: webapp/templates/navigation.html:8
|
||||||
msgid "Freshmen"
|
msgid "Freshmen"
|
||||||
msgstr "Fuksit"
|
msgstr "Fuksit"
|
||||||
|
|
||||||
#: kaehmy/models.py:21 webapp/templates/international.html:10
|
#: kaehmy/models.py:27 webapp/templates/international.html:10
|
||||||
#: webapp/templates/navigation.html:14
|
#: webapp/templates/navigation.html:14
|
||||||
msgid "International"
|
msgid "International"
|
||||||
msgstr "International"
|
msgstr "International"
|
||||||
|
|
||||||
#: kaehmy/models.py:22
|
#: kaehmy/models.py:28
|
||||||
msgid "External affairs"
|
msgid "External affairs"
|
||||||
msgstr "Ulkosuhteet"
|
msgstr "Ulkosuhteet"
|
||||||
|
|
||||||
#: kaehmy/models.py:23
|
#: kaehmy/models.py:29
|
||||||
msgid "Media"
|
msgid "Media"
|
||||||
msgstr "Media"
|
msgstr "Media"
|
||||||
|
|
||||||
#: kaehmy/models.py:24
|
#: kaehmy/models.py:30
|
||||||
msgid "Technology"
|
msgid "Technology"
|
||||||
msgstr "Teknologia"
|
msgstr "Teknologia"
|
||||||
|
|
||||||
#: kaehmy/models.py:25
|
#: kaehmy/models.py:31
|
||||||
msgid "Wellbeing"
|
msgid "Wellbeing"
|
||||||
msgstr "Hyvinvointi"
|
msgstr "Hyvinvointi"
|
||||||
|
|
||||||
#: kaehmy/models.py:26
|
#: kaehmy/models.py:32
|
||||||
msgid "Elepaja"
|
msgid "Elepaja"
|
||||||
msgstr "Elepaja"
|
msgstr "Elepaja"
|
||||||
|
|
||||||
#: kaehmy/models.py:27
|
#: kaehmy/models.py:33
|
||||||
msgid "Ceremonies"
|
msgid "Ceremonies"
|
||||||
msgstr "Hupitapahtumat"
|
msgstr "Hupitapahtumat"
|
||||||
|
|
||||||
#: kaehmy/models.py:28
|
#: kaehmy/models.py:34
|
||||||
msgid "Studies"
|
msgid "Studies"
|
||||||
msgstr "Opinnot"
|
msgstr "Opinnot"
|
||||||
|
|
||||||
#: kaehmy/models.py:29
|
#: kaehmy/models.py:35
|
||||||
msgid "Sössö magazine"
|
msgid "Sössö magazine"
|
||||||
msgstr "Kiltalehti Sössö"
|
msgstr "Kiltalehti Sössö"
|
||||||
|
|
||||||
#: kaehmy/models.py:30
|
#: kaehmy/models.py:36
|
||||||
msgid "Alumni relations"
|
msgid "Alumni relations"
|
||||||
msgstr "Alumnisuhteet"
|
msgstr "Alumnisuhteet"
|
||||||
|
|
||||||
#: kaehmy/models.py:31
|
#: kaehmy/models.py:37
|
||||||
msgid "Others"
|
msgid "Others"
|
||||||
msgstr "Muut"
|
msgstr "Muut"
|
||||||
|
|
||||||
#: kaehmy/models.py:33
|
#: kaehmy/models.py:39
|
||||||
msgid "Category"
|
msgid "Category"
|
||||||
msgstr "Kategoria"
|
msgstr "Kategoria"
|
||||||
|
|
||||||
#: kaehmy/models.py:39 webapp/models.py:176
|
#: kaehmy/models.py:45
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr "Kuvaus"
|
msgstr "Kuvaus"
|
||||||
|
|
||||||
#: kaehmy/models.py:42
|
#: kaehmy/models.py:48
|
||||||
msgid "Preset kaehmy role"
|
msgid "Preset kaehmy role"
|
||||||
msgstr "Kaehmyvirka"
|
msgstr "Kaehmyvirka"
|
||||||
|
|
||||||
#: kaehmy/models.py:43
|
#: kaehmy/models.py:49
|
||||||
msgid "Preset kaehmy roles"
|
msgid "Preset kaehmy roles"
|
||||||
msgstr "Kaehmyvirat"
|
msgstr "Kaehmyvirat"
|
||||||
|
|
||||||
#: kaehmy/models.py:50
|
#: kaehmy/models.py:56
|
||||||
msgid "Custom kaehmy role"
|
msgid "Custom kaehmy role"
|
||||||
msgstr "Uusi virka"
|
msgstr "Uusi virka"
|
||||||
|
|
||||||
#: kaehmy/models.py:51
|
#: kaehmy/models.py:57
|
||||||
msgid "Custom kaehmy roles"
|
msgid "Custom kaehmy roles"
|
||||||
msgstr "Uudet kaehmyvirat"
|
msgstr "Uudet kaehmyvirat"
|
||||||
|
|
||||||
#: kaehmy/models.py:57 kaehmy/templates/list.html:40 members/models.py:14
|
#: kaehmy/models.py:63 kaehmy/templates/list.html:40 members/models.py:14
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Sähköposti"
|
msgstr "Sähköposti"
|
||||||
|
|
||||||
#: kaehmy/models.py:58
|
#: kaehmy/models.py:64
|
||||||
msgid "Timestamp"
|
msgid "Timestamp"
|
||||||
msgstr "Aikaleima"
|
msgstr "Aikaleima"
|
||||||
|
|
||||||
#: kaehmy/models.py:72
|
#: kaehmy/models.py:78
|
||||||
msgid "Kaehmykommentti"
|
msgid "Kaehmykommentti"
|
||||||
msgstr "Kaehmykommentti"
|
msgstr "Kaehmykommentti"
|
||||||
|
|
||||||
#: kaehmy/models.py:73
|
#: kaehmy/models.py:79
|
||||||
msgid "Kaehmykommentit"
|
msgid "Kaehmykommentit"
|
||||||
msgstr "Kaehmykommentit"
|
msgstr "Kaehmykommentit"
|
||||||
|
|
||||||
#: kaehmy/models.py:75 ohlhafv/models.py:36
|
#: kaehmy/models.py:81 ohlhafv/models.py:36
|
||||||
msgid "Message"
|
msgid "Message"
|
||||||
msgstr "Viesti"
|
msgstr "Viesti"
|
||||||
|
|
||||||
#: kaehmy/models.py:94 kaehmy/templates/kaehmy.html:12
|
#: kaehmy/models.py:100 kaehmy/templates/kaehmy.html:12
|
||||||
msgid "Kaehmylomake"
|
msgid "Kaehmylomake"
|
||||||
msgstr "Kaehmylomake"
|
msgstr "Kaehmylomake"
|
||||||
|
|
||||||
#: kaehmy/models.py:95
|
#: kaehmy/models.py:101
|
||||||
msgid "Kaehmylomakkeet"
|
msgid "Kaehmylomakkeet"
|
||||||
msgstr "Kaehmylomakkeet"
|
msgstr "Kaehmylomakkeet"
|
||||||
|
|
||||||
#: kaehmy/models.py:98 webapp/models.py:252
|
#: kaehmy/models.py:104
|
||||||
msgid "Phone number"
|
msgid "Phone number"
|
||||||
msgstr "Puhelinnumero"
|
msgstr "Puhelinnumero"
|
||||||
|
|
||||||
#: kaehmy/models.py:99
|
#: kaehmy/models.py:105
|
||||||
msgid "Year"
|
msgid "Year"
|
||||||
msgstr "Vuosi"
|
msgstr "Vuosi"
|
||||||
|
|
||||||
#: kaehmy/models.py:100
|
#: kaehmy/models.py:106
|
||||||
msgid "Text"
|
msgid "Text"
|
||||||
msgstr "Teksti"
|
msgstr "Teksti"
|
||||||
|
|
||||||
#: kaehmy/models.py:102
|
#: kaehmy/models.py:108
|
||||||
msgid "Custom role name"
|
msgid "Custom role name"
|
||||||
msgstr "Uusi virka"
|
msgstr "Uusi virka"
|
||||||
|
|
||||||
#: kaehmy/models.py:104 webapp/models.py:167
|
#: kaehmy/models.py:110 webapp/models.py:174
|
||||||
msgid "Board member"
|
msgid "Board member"
|
||||||
msgstr "Hallituksen jäsen"
|
msgstr "Hallituksen jäsen"
|
||||||
|
|
||||||
#: kaehmy/models.py:112
|
#: kaehmy/models.py:118
|
||||||
msgid "Kaehmy application: {}"
|
msgid "Kaehmy application: {}"
|
||||||
msgstr "Kaehmy: {}"
|
msgstr "Kaehmy: {}"
|
||||||
|
|
||||||
#: kaehmy/models.py:134
|
#: kaehmy/models.py:140
|
||||||
msgid "Board: {}"
|
msgid "Board: {}"
|
||||||
msgstr "Hallitus: {}"
|
msgstr "Hallitus: {}"
|
||||||
|
|
||||||
#: kaehmy/models.py:140
|
#: kaehmy/models.py:146
|
||||||
msgid "Official: {}"
|
msgid "Official: {}"
|
||||||
msgstr "Toimari: {}"
|
msgstr "Toimari: {}"
|
||||||
|
|
||||||
#: kaehmy/models.py:157
|
#: kaehmy/models.py:163
|
||||||
msgid "Telegram channel"
|
msgid "Telegram channel"
|
||||||
msgstr "Telegram-kanava"
|
msgstr "Telegram-kanava"
|
||||||
|
|
||||||
#: kaehmy/models.py:158
|
#: kaehmy/models.py:164
|
||||||
msgid "Telegram channels"
|
msgid "Telegram channels"
|
||||||
msgstr "Telegram-kanavat"
|
msgstr "Telegram-kanavat"
|
||||||
|
|
||||||
#: kaehmy/tables.py:13 webapp/models.py:207
|
#: kaehmy/tables.py:13
|
||||||
msgid "Roles"
|
msgid "Roles"
|
||||||
msgstr "Roolit"
|
msgstr "Roolit"
|
||||||
|
|
||||||
@@ -394,8 +393,8 @@ msgid ""
|
|||||||
" Koska lista ei ole koskaan täydellinen, voit myös ehdottaa ihan "
|
" Koska lista ei ole koskaan täydellinen, voit myös ehdottaa ihan "
|
||||||
"uutta toimenkuvaa.\n"
|
"uutta toimenkuvaa.\n"
|
||||||
" Jos sinulla on kysyttävää mistä tahansa virasta, kannattaa "
|
" Jos sinulla on kysyttävää mistä tahansa virasta, kannattaa "
|
||||||
"konsultoida <a href=\"https://static.sika.sik.party/uus_webi/kahmyopas.pdf"
|
"konsultoida <a href=\"https://static.sahkoinsinoorikilta.fi/uus_webi/"
|
||||||
"\">kaehmyopasta</a>\n"
|
"kahmyopas.pdf\">kaehmyopasta</a>\n"
|
||||||
" tai olla yhteydessä kyseistä virkaa tänä vuonna toimittavaan "
|
" tai olla yhteydessä kyseistä virkaa tänä vuonna toimittavaan "
|
||||||
"henkilöön."
|
"henkilöön."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -405,7 +404,7 @@ msgstr ""
|
|||||||
" Koska lista ei ole koskaan täydellinen, voit myös ehdottaa ihan "
|
" Koska lista ei ole koskaan täydellinen, voit myös ehdottaa ihan "
|
||||||
"uutta toimenkuvaa.\n"
|
"uutta toimenkuvaa.\n"
|
||||||
" Jos sinulla on kysyttävää mistä tahansa virasta, kannattaa "
|
" Jos sinulla on kysyttävää mistä tahansa virasta, kannattaa "
|
||||||
"konsultoida <a href=\"https://static.sika.sik.party/uus_webi/kahmyopas.pdf"
|
"konsultoida <a href=\"https://static.sahkoinsinoorikilta.fi/uus_webi/kahmyopas.pdf"
|
||||||
"\">kaehmyopasta</a> \n"
|
"\">kaehmyopasta</a> \n"
|
||||||
" tai olla yhteydessä kyseistä virkaa tänä vuonna toimittavaan "
|
" tai olla yhteydessä kyseistä virkaa tänä vuonna toimittavaan "
|
||||||
"henkilöön."
|
"henkilöön."
|
||||||
@@ -527,11 +526,11 @@ msgstr "Olen AYY:n jäsen"
|
|||||||
msgid "I want to receive a weekly newsletter"
|
msgid "I want to receive a weekly newsletter"
|
||||||
msgstr "Haluan saada viikottaisen jäsentiedotteen"
|
msgstr "Haluan saada viikottaisen jäsentiedotteen"
|
||||||
|
|
||||||
#: members/models.py:12 webapp/models.py:249
|
#: members/models.py:12
|
||||||
msgid "First name"
|
msgid "First name"
|
||||||
msgstr "Etunimi"
|
msgstr "Etunimi"
|
||||||
|
|
||||||
#: members/models.py:13 webapp/models.py:250
|
#: members/models.py:13
|
||||||
msgid "Last name"
|
msgid "Last name"
|
||||||
msgstr "Sukunimi"
|
msgstr "Sukunimi"
|
||||||
|
|
||||||
@@ -1126,111 +1125,64 @@ msgstr "Uutinen"
|
|||||||
msgid "Feeds"
|
msgid "Feeds"
|
||||||
msgstr "Uutiset"
|
msgstr "Uutiset"
|
||||||
|
|
||||||
#: webapp/models.py:60
|
#: webapp/models.py:61 webapp/models.py:80 webapp/models.py:119
|
||||||
msgid "Feed: {}"
|
#: webapp/models.py:152 webapp/models.py:198
|
||||||
msgstr "Uutinen: {}"
|
msgid "Deleted: "
|
||||||
|
msgstr "Poistettu: "
|
||||||
|
|
||||||
#: webapp/models.py:67
|
#: webapp/models.py:62
|
||||||
|
msgid "{}Feed: {}"
|
||||||
|
msgstr "{}Uutinen: {}"
|
||||||
|
|
||||||
|
#: webapp/models.py:69
|
||||||
msgid "Event"
|
msgid "Event"
|
||||||
msgstr "Tapahtuma"
|
msgstr "Tapahtuma"
|
||||||
|
|
||||||
#: webapp/models.py:77
|
#: webapp/models.py:81
|
||||||
msgid "Event: {}"
|
msgid "{}Event: {}"
|
||||||
msgstr "Tapahtuma: {}"
|
msgstr "{}Tapahtuma: {}"
|
||||||
|
|
||||||
#: webapp/models.py:87
|
#: webapp/models.py:91
|
||||||
msgid "Template question"
|
msgid "Template question"
|
||||||
msgstr "Vakiokysymys"
|
msgstr "Vakiokysymys"
|
||||||
|
|
||||||
#: webapp/models.py:88
|
#: webapp/models.py:92
|
||||||
msgid "Template questions"
|
msgid "Template questions"
|
||||||
msgstr "Vakiokysymykset"
|
msgstr "Vakiokysymykset"
|
||||||
|
|
||||||
#: webapp/models.py:94
|
#: webapp/models.py:98
|
||||||
msgid "Template questions: {}"
|
msgid "Template questions: {}"
|
||||||
msgstr "Vakiokysymykset: {}"
|
msgstr "Vakiokysymykset: {}"
|
||||||
|
|
||||||
#: webapp/models.py:101
|
#: webapp/models.py:105
|
||||||
msgid "Signup form"
|
msgid "Signup form"
|
||||||
msgstr "Ilmoittautumislomake"
|
msgstr "Ilmoittautumislomake"
|
||||||
|
|
||||||
#: webapp/models.py:102
|
#: webapp/models.py:106
|
||||||
msgid "Signup forms"
|
msgid "Signup forms"
|
||||||
msgstr "Ilmoittautumislomakkeet"
|
msgstr "Ilmoittautumislomakkeet"
|
||||||
|
|
||||||
#: webapp/models.py:114
|
#: webapp/models.py:120
|
||||||
msgid "#{} {}"
|
msgid "#{} {}{}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: webapp/models.py:132
|
#: webapp/models.py:138
|
||||||
msgid "Sign-up"
|
msgid "Sign-up"
|
||||||
msgstr "Ilmoittautuminen"
|
msgstr "Ilmoittautuminen"
|
||||||
|
|
||||||
#: webapp/models.py:133
|
#: webapp/models.py:139
|
||||||
msgid "Sign-ups"
|
msgid "Sign-ups"
|
||||||
msgstr "Ilmoittautumiset"
|
msgstr "Ilmoittautumiset"
|
||||||
|
|
||||||
#: webapp/models.py:171
|
#: webapp/models.py:178
|
||||||
msgid "board member"
|
msgid "board member"
|
||||||
msgstr "hallituksen jäsen"
|
msgstr "hallituksen jäsen"
|
||||||
|
|
||||||
#: webapp/models.py:186
|
#: webapp/models.py:185
|
||||||
msgid "Committee"
|
|
||||||
msgstr "Toimikunta"
|
|
||||||
|
|
||||||
#: webapp/models.py:187
|
|
||||||
msgid "Committees"
|
|
||||||
msgstr "Toimikunnat"
|
|
||||||
|
|
||||||
#: webapp/models.py:190
|
|
||||||
msgid "Committee: {}"
|
|
||||||
msgstr "Toimikunta: {}"
|
|
||||||
|
|
||||||
#: webapp/models.py:206
|
|
||||||
msgid "Role"
|
|
||||||
msgstr "Rooli"
|
|
||||||
|
|
||||||
#: webapp/models.py:212
|
|
||||||
msgid "Yes"
|
|
||||||
msgstr "Kyllä"
|
|
||||||
|
|
||||||
#: webapp/models.py:212
|
|
||||||
msgid "No"
|
|
||||||
msgstr "Ei"
|
|
||||||
|
|
||||||
#: webapp/models.py:223
|
|
||||||
msgid "Occupation"
|
|
||||||
msgstr "Virka"
|
|
||||||
|
|
||||||
#: webapp/models.py:224
|
|
||||||
msgid "Occupations"
|
|
||||||
msgstr "Virat"
|
|
||||||
|
|
||||||
#: webapp/models.py:226
|
|
||||||
msgid "Start date"
|
|
||||||
msgstr "Alkupäivämäärä"
|
|
||||||
|
|
||||||
#: webapp/models.py:227
|
|
||||||
msgid "End date"
|
|
||||||
msgstr "Loppupäivämäärä"
|
|
||||||
|
|
||||||
#: webapp/models.py:244
|
|
||||||
msgid "Official"
|
|
||||||
msgstr "Toimihenkilö"
|
|
||||||
|
|
||||||
#: webapp/models.py:245
|
|
||||||
msgid "Officials"
|
|
||||||
msgstr "Toimihenkilöt"
|
|
||||||
|
|
||||||
#: webapp/models.py:251
|
|
||||||
msgid "Email address"
|
|
||||||
msgstr "Sähköposti"
|
|
||||||
|
|
||||||
#: webapp/models.py:277
|
|
||||||
msgid "JobAd"
|
msgid "JobAd"
|
||||||
msgstr "Työpaikkailmoitus"
|
msgstr "Työpaikkailmoitus"
|
||||||
|
|
||||||
#: webapp/models.py:278
|
#: webapp/models.py:186
|
||||||
msgid "JobAds"
|
msgid "JobAds"
|
||||||
msgstr "Työpaikkailmoitukset"
|
msgstr "Työpaikkailmoitukset"
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -16,8 +16,8 @@ from sikweb.base import *
|
|||||||
# SECURITY WARNING: don't run with debug turned on in production!
|
# SECURITY WARNING: don't run with debug turned on in production!
|
||||||
DEBUG = os.getenv('DEBUG', False) == 'True'
|
DEBUG = os.getenv('DEBUG', False) == 'True'
|
||||||
|
|
||||||
URL = os.getenv("HOST", "api.sika.sik.party")
|
URL = os.getenv("HOST", "api.sahkoinsinoorikilta.fi")
|
||||||
FRONTEND_URL = os.getenv("FRONTEND_URL", "sika.sik.party")
|
FRONTEND_URL = os.getenv("FRONTEND_URL", "prod.sahkoinsinoorikilta.fi")
|
||||||
ALLOWED_HOSTS = ["localhost", "127.0.0.1", FRONTEND_URL, URL]
|
ALLOWED_HOSTS = ["localhost", "127.0.0.1", FRONTEND_URL, URL]
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
ALLOWED_HOSTS = ["*"]
|
ALLOWED_HOSTS = ["*"]
|
||||||
|
|||||||
@@ -27,8 +27,8 @@ services:
|
|||||||
- 8000:8000
|
- 8000:8000
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
- HOST=api.dev.sik.party
|
- HOST=api.dev.sahkoinsinoorikilta.fi
|
||||||
- FRONTEND_URL=dev.sik.party
|
- FRONTEND_URL=dev.sahkoinsinoorikilta.fi
|
||||||
- DEBUG=True
|
- DEBUG=True
|
||||||
- EMAIL_API_KEY_FILE=/run/secrets/DJANGO_EMAIL_API_KEY
|
- EMAIL_API_KEY_FILE=/run/secrets/DJANGO_EMAIL_API_KEY
|
||||||
- EMAIL_API_SECRET_FILE=/run/secrets/DJANGO_EMAIL_API_SECRET
|
- EMAIL_API_SECRET_FILE=/run/secrets/DJANGO_EMAIL_API_SECRET
|
||||||
|
|||||||
+2
-2
@@ -46,8 +46,8 @@ services:
|
|||||||
- TG_BOT_TOKEN_FILE=/run/secrets/BACKEND_TG_BOT_TOKEN
|
- TG_BOT_TOKEN_FILE=/run/secrets/BACKEND_TG_BOT_TOKEN
|
||||||
- DB_USER_FILE=/run/secrets/BACKEND_DB_USER
|
- DB_USER_FILE=/run/secrets/BACKEND_DB_USER
|
||||||
- DB_PASSWD_FILE=/run/secrets/BACKEND_DB_PASSWD
|
- DB_PASSWD_FILE=/run/secrets/BACKEND_DB_PASSWD
|
||||||
- HOST=api.sika.sik.party
|
- HOST=api.sahkoinsinoorikilta.fi
|
||||||
- FRONTEND_URL=sika.sik.party
|
- FRONTEND_URL=prod.sahkoinsinoorikilta.fi
|
||||||
- DB_HOST=db
|
- DB_HOST=db
|
||||||
- DB_PORT=5432
|
- DB_PORT=5432
|
||||||
- EMAIL_API_KEY_FILE=/run/secrets/BACKEND_EMAIL_API_KEY
|
- EMAIL_API_KEY_FILE=/run/secrets/BACKEND_EMAIL_API_KEY
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# Generated by Django 2.1.5 on 2021-01-14 19:55
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('webapp', '0074_signup_deleted'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='event',
|
||||||
|
name='deleted',
|
||||||
|
field=models.BooleanField(default=False),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='feed',
|
||||||
|
name='deleted',
|
||||||
|
field=models.BooleanField(default=False),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='jobad',
|
||||||
|
name='deleted',
|
||||||
|
field=models.BooleanField(default=False),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='signupform',
|
||||||
|
name='deleted',
|
||||||
|
field=models.BooleanField(default=False),
|
||||||
|
),
|
||||||
|
]
|
||||||
+16
-4
@@ -55,9 +55,11 @@ class Feed(BaseFeed):
|
|||||||
publish_time = models.DateTimeField(default=timezone.now)
|
publish_time = models.DateTimeField(default=timezone.now)
|
||||||
autohide = models.DateTimeField(default=month_from_now)
|
autohide = models.DateTimeField(default=month_from_now)
|
||||||
autohide_enabled = models.BooleanField(default=False)
|
autohide_enabled = models.BooleanField(default=False)
|
||||||
|
deleted = models.BooleanField(default=False)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return _('Feed: {}').format(self.title)
|
delete_str = _("Deleted: ") if self.deleted else ""
|
||||||
|
return _('{}Feed: {}').format(delete_str, self.title)
|
||||||
|
|
||||||
|
|
||||||
class Event(BaseFeed):
|
class Event(BaseFeed):
|
||||||
@@ -72,9 +74,11 @@ class Event(BaseFeed):
|
|||||||
signupForm = models.ManyToManyField(
|
signupForm = models.ManyToManyField(
|
||||||
'SignupForm', blank=True, related_name="event")
|
'SignupForm', blank=True, related_name="event")
|
||||||
location = models.CharField(max_length=255, blank=True)
|
location = models.CharField(max_length=255, blank=True)
|
||||||
|
deleted = models.BooleanField(default=False)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return _('Event: {}').format(self.title)
|
delete_str = _("Deleted: ") if self.deleted else ""
|
||||||
|
return _('{}Event: {}').format(delete_str, self.title)
|
||||||
|
|
||||||
|
|
||||||
class TemplateQuestion(models.Model):
|
class TemplateQuestion(models.Model):
|
||||||
@@ -109,9 +113,11 @@ class SignupForm(models.Model):
|
|||||||
visible = models.BooleanField(default=True)
|
visible = models.BooleanField(default=True)
|
||||||
quota = models.PositiveIntegerField(blank=True, null=True)
|
quota = models.PositiveIntegerField(blank=True, null=True)
|
||||||
email_content = models.TextField(blank=True)
|
email_content = models.TextField(blank=True)
|
||||||
|
deleted = models.BooleanField(default=False)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return _('#{} {}').format(self.id, self.title)
|
delete_str = _("Deleted: ") if self.deleted else ""
|
||||||
|
return _('#{} {}{}').format(self.id, delete_str, self.title)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def signups(self):
|
def signups(self):
|
||||||
@@ -143,7 +149,8 @@ class Signup(models.Model):
|
|||||||
deleted = models.BooleanField(default=False)
|
deleted = models.BooleanField(default=False)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"{self.signupForm}: {self.list_name} ({self.pk})"
|
delete_str = _("Deleted: ") if self.deleted else ""
|
||||||
|
return f"{self.signupForm}: {delete_str}{self.list_name} ({self.pk})"
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_save, sender=Signup)
|
@receiver(post_save, sender=Signup)
|
||||||
@@ -185,6 +192,11 @@ class JobAd(models.Model):
|
|||||||
created_at = models.DateTimeField(default=timezone.now)
|
created_at = models.DateTimeField(default=timezone.now)
|
||||||
autohide_at = models.DateTimeField(default=month_from_now)
|
autohide_at = models.DateTimeField(default=month_from_now)
|
||||||
autohide_enabled = models.BooleanField(default=False)
|
autohide_enabled = models.BooleanField(default=False)
|
||||||
|
deleted = models.BooleanField(default=False)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
delete_str = _("Deleted: ") if self.deleted else ""
|
||||||
|
return f'{delete_str}{self.title}'
|
||||||
|
|
||||||
|
|
||||||
auditlog.register(Tag)
|
auditlog.register(Tag)
|
||||||
|
|||||||
@@ -171,5 +171,7 @@ class EventTestCase(APITestCase):
|
|||||||
# Authenticate
|
# Authenticate
|
||||||
self.client.force_authenticate(user=self.authClient)
|
self.client.force_authenticate(user=self.authClient)
|
||||||
response = self.client.delete(f"{URL}{self.testEventId}/")
|
response = self.client.delete(f"{URL}{self.testEventId}/")
|
||||||
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
# Soft delete
|
||||||
self.assertEqual(Event.objects.count(), 3)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
self.assertEqual(Event.objects.count(), 4)
|
||||||
|
self.assertEqual(Event.objects.get(id=self.testEventId).deleted, True)
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ from webapp.models import Feed
|
|||||||
from webapp.serializers import FeedSerializer
|
from webapp.serializers import FeedSerializer
|
||||||
from webapp.tests.tag_fixture import tagBuilder
|
from webapp.tests.tag_fixture import tagBuilder
|
||||||
|
|
||||||
|
URL = "/api/feed/"
|
||||||
|
|
||||||
|
|
||||||
class FeedTestCase(APITestCase):
|
class FeedTestCase(APITestCase):
|
||||||
|
|
||||||
@@ -19,11 +21,13 @@ class FeedTestCase(APITestCase):
|
|||||||
self.assertEqual(Feed.objects.count(), 1)
|
self.assertEqual(Feed.objects.count(), 1)
|
||||||
self.assertEqual(Feed.objects.all()[0].tags.count(), 2)
|
self.assertEqual(Feed.objects.all()[0].tags.count(), 2)
|
||||||
|
|
||||||
|
self.feedId = feed.id
|
||||||
|
|
||||||
username, password = "test_admin", "password123"
|
username, password = "test_admin", "password123"
|
||||||
self.authClient = User.objects.create_superuser(username, "myemail@test.com", password)
|
self.authClient = User.objects.create_superuser(username, "myemail@test.com", password)
|
||||||
|
|
||||||
def test_get_feed(self):
|
def test_get_feed(self):
|
||||||
response = self.client.get("/api/feed/", format="json")
|
response = self.client.get(URL, format="json")
|
||||||
self.assertTrue(status.is_success(response.status_code))
|
self.assertTrue(status.is_success(response.status_code))
|
||||||
|
|
||||||
feeds = Feed.objects.all()
|
feeds = Feed.objects.all()
|
||||||
@@ -47,15 +51,28 @@ class FeedTestCase(APITestCase):
|
|||||||
"content_en": "lorem ipsum"
|
"content_en": "lorem ipsum"
|
||||||
}
|
}
|
||||||
# Try post without authentication
|
# Try post without authentication
|
||||||
response = self.client.post("/api/feed/", data, format="json")
|
response = self.client.post(URL, data, format="json")
|
||||||
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
|
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
|
||||||
self.assertEqual(Feed.objects.count(), 1)
|
self.assertEqual(Feed.objects.count(), 1)
|
||||||
# Authenticate
|
# Authenticate
|
||||||
self.client.force_authenticate(user=self.authClient)
|
self.client.force_authenticate(user=self.authClient)
|
||||||
response = self.client.post("/api/feed/", data, format="json")
|
response = self.client.post(URL, data, format="json")
|
||||||
# Return success and check object was created
|
# Return success and check object was created
|
||||||
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||||
self.assertEqual(Feed.objects.count(), 2)
|
self.assertEqual(Feed.objects.count(), 2)
|
||||||
|
|
||||||
created = Feed.objects.get(title_fi="testtitle")
|
created = Feed.objects.get(title_fi="testtitle")
|
||||||
self.assertEqual(created.tags.count(), 2)
|
self.assertEqual(created.tags.count(), 2)
|
||||||
|
|
||||||
|
def test_post_delete(self):
|
||||||
|
response = self.client.delete(f"{URL}{self.feedId}/",)
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
|
||||||
|
self.assertEqual(Feed.objects.count(), 1)
|
||||||
|
|
||||||
|
# Authenticate
|
||||||
|
self.client.force_authenticate(user=self.authClient)
|
||||||
|
response = self.client.delete(f"{URL}{self.feedId}/")
|
||||||
|
# Soft delete
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
self.assertEqual(Feed.objects.count(), 1)
|
||||||
|
self.assertEqual(Feed.objects.get(id=self.feedId).deleted, True)
|
||||||
|
|||||||
+53
-16
@@ -39,7 +39,7 @@ class RootView(routers.APIRootView):
|
|||||||
|
|
||||||
|
|
||||||
class EventViewSet(ModelViewSet):
|
class EventViewSet(ModelViewSet):
|
||||||
queryset = Event.objects.all()
|
queryset = Event.objects.filter(deleted=False)
|
||||||
ordering = ["start_time"]
|
ordering = ["start_time"]
|
||||||
serializer_class = EventSerializer
|
serializer_class = EventSerializer
|
||||||
permission_classes = [IsAuthenticatedOrReadOnly]
|
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||||
@@ -53,17 +53,17 @@ class EventViewSet(ModelViewSet):
|
|||||||
if self.request.user.is_authenticated or \
|
if self.request.user.is_authenticated or \
|
||||||
self.request.method == 'POST' or \
|
self.request.method == 'POST' or \
|
||||||
self.request.method == 'PUT':
|
self.request.method == 'PUT':
|
||||||
return Event.objects.all().prefetch_related(
|
return Event.objects.filter(deleted=False).prefetch_related(
|
||||||
Prefetch('signupForm', queryset=SignupForm.objects.all(), to_attr='filtered_signup_forms')
|
Prefetch('signupForm', queryset=SignupForm.objects.filter(deleted=False), to_attr='filtered_signup_forms')
|
||||||
)
|
)
|
||||||
|
|
||||||
since = self.request.query_params.get('since', None)
|
since = self.request.query_params.get('since', None)
|
||||||
if since:
|
if since:
|
||||||
return Event.objects.filter(visible=True, end_time__gt=since).order_by('start_time').prefetch_related(
|
return Event.objects.filter(deleted=False, visible=True, end_time__gt=since).order_by('start_time').prefetch_related(
|
||||||
Prefetch('signupForm', queryset=SignupForm.objects.filter(visible=True), to_attr='filtered_signup_forms')
|
Prefetch('signupForm', queryset=SignupForm.objects.filter(deleted=False, visible=True), to_attr='filtered_signup_forms')
|
||||||
)
|
)
|
||||||
return Event.objects.filter(visible=True, end_time__gt=timezone.now()).order_by('start_time').prefetch_related(
|
return Event.objects.filter(deleted=False, visible=True, end_time__gt=timezone.now()).order_by('start_time').prefetch_related(
|
||||||
Prefetch('signupForm', queryset=SignupForm.objects.filter(visible=True), to_attr='filtered_signup_forms')
|
Prefetch('signupForm', queryset=SignupForm.objects.filter(deleted=False, visible=True), to_attr='filtered_signup_forms')
|
||||||
)
|
)
|
||||||
|
|
||||||
def create(self, request, *args, **kwargs):
|
def create(self, request, *args, **kwargs):
|
||||||
@@ -84,9 +84,19 @@ class EventViewSet(ModelViewSet):
|
|||||||
})
|
})
|
||||||
return super().update(request, *args, **kwargs)
|
return super().update(request, *args, **kwargs)
|
||||||
|
|
||||||
|
def destroy(self, request, pk=None, *args, **kwargs):
|
||||||
|
try:
|
||||||
|
event = self.get_object()
|
||||||
|
event.deleted = True
|
||||||
|
event.save()
|
||||||
|
return JsonResponse(status=200, data={"message": "OK"})
|
||||||
|
except ObjectDoesNotExist:
|
||||||
|
return JsonResponse(status=404, data={"error": f"Event {pk} not found"})
|
||||||
|
|
||||||
|
|
||||||
class SignupFormViewSet(ModelViewSet):
|
class SignupFormViewSet(ModelViewSet):
|
||||||
queryset = SignupForm.objects.all()
|
queryset = SignupForm.objects.filter(deleted=False)
|
||||||
|
ordering = ["start_time"]
|
||||||
serializer_class = SignupFormSerializer
|
serializer_class = SignupFormSerializer
|
||||||
permission_classes = [IsAuthenticatedOrReadOnly]
|
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||||
|
|
||||||
@@ -102,8 +112,17 @@ class SignupFormViewSet(ModelViewSet):
|
|||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
if self.request.user.is_authenticated:
|
if self.request.user.is_authenticated:
|
||||||
return SignupForm.objects.all().order_by('start_time')
|
return SignupForm.objects.filter(deleted=False).order_by('start_time')
|
||||||
return SignupForm.objects.filter(visible=True, end_time__gt=timezone.now()).order_by('start_time')
|
return SignupForm.objects.filter(deleted=False, visible=True, end_time__gt=timezone.now()).order_by('start_time')
|
||||||
|
|
||||||
|
def destroy(self, request, pk=None, *args, **kwargs):
|
||||||
|
try:
|
||||||
|
form = self.get_object()
|
||||||
|
form.deleted = True
|
||||||
|
form.save()
|
||||||
|
return JsonResponse(status=200, data={"message": "OK"})
|
||||||
|
except ObjectDoesNotExist:
|
||||||
|
return JsonResponse(status=404, data={"error": f"SignupForm {pk} not found"})
|
||||||
|
|
||||||
@action(detail=True, methods=['post'], permission_classes=[IsAuthenticated])
|
@action(detail=True, methods=['post'], permission_classes=[IsAuthenticated])
|
||||||
def sendemail(self, request, pk=None, *args, **kwargs):
|
def sendemail(self, request, pk=None, *args, **kwargs):
|
||||||
@@ -202,7 +221,7 @@ class SavedQuestionsViewSet(ModelViewSet):
|
|||||||
|
|
||||||
|
|
||||||
class FeedViewSet(ModelViewSet):
|
class FeedViewSet(ModelViewSet):
|
||||||
queryset = Feed.objects.all()
|
queryset = Feed.objects.filter(deleted=False)
|
||||||
serializer_class = FeedSerializer
|
serializer_class = FeedSerializer
|
||||||
permission_classes = [IsAuthenticatedOrReadOnly]
|
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||||
# filter_backends = (filters.DjangoFilterBackend, SearchFilter, OrderingFilter)
|
# filter_backends = (filters.DjangoFilterBackend, SearchFilter, OrderingFilter)
|
||||||
@@ -211,9 +230,9 @@ class FeedViewSet(ModelViewSet):
|
|||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
if self.request.user.is_authenticated:
|
if self.request.user.is_authenticated:
|
||||||
return Feed.objects.all().order_by('publish_time')
|
return Feed.objects.filter(deleted=False).order_by('publish_time')
|
||||||
else:
|
else:
|
||||||
objs = Feed.objects.filter(visible=True).order_by('publish_time')
|
objs = Feed.objects.filter(deleted=False, visible=True).order_by('publish_time')
|
||||||
|
|
||||||
# TODO: Bad filtering. Rewrite!
|
# TODO: Bad filtering. Rewrite!
|
||||||
result_ids = []
|
result_ids = []
|
||||||
@@ -226,6 +245,15 @@ class FeedViewSet(ModelViewSet):
|
|||||||
|
|
||||||
return Feed.objects.filter(id__in=result_ids)
|
return Feed.objects.filter(id__in=result_ids)
|
||||||
|
|
||||||
|
def destroy(self, request, pk=None, *args, **kwargs):
|
||||||
|
try:
|
||||||
|
post = self.get_object()
|
||||||
|
post.deleted = True
|
||||||
|
post.save()
|
||||||
|
return JsonResponse(status=200, data={"message": "OK"})
|
||||||
|
except ObjectDoesNotExist:
|
||||||
|
return JsonResponse(status=404, data={"error": f"Post {pk} not found"})
|
||||||
|
|
||||||
|
|
||||||
class TagsViewSet(ReadOnlyModelViewSet):
|
class TagsViewSet(ReadOnlyModelViewSet):
|
||||||
queryset = Tag.objects.all()
|
queryset = Tag.objects.all()
|
||||||
@@ -234,14 +262,23 @@ class TagsViewSet(ReadOnlyModelViewSet):
|
|||||||
|
|
||||||
|
|
||||||
class JobAdViewSet(ModelViewSet):
|
class JobAdViewSet(ModelViewSet):
|
||||||
queryset = JobAd.objects.all()
|
queryset = JobAd.objects.filter(deleted=False)
|
||||||
serializer_class = JobAdSerializer
|
serializer_class = JobAdSerializer
|
||||||
permission_classes = [IsAuthenticatedOrReadOnly]
|
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
if self.request.user.is_authenticated:
|
if self.request.user.is_authenticated:
|
||||||
return JobAd.objects.all()
|
return JobAd.objects.filter(deleted=False)
|
||||||
return JobAd.objects.filter(visible=True, autohide_at__gt=timezone.now())
|
return JobAd.objects.filter(deleted=False, visible=True, autohide_at__gt=timezone.now())
|
||||||
|
|
||||||
|
def destroy(self, request, pk=None, *args, **kwargs):
|
||||||
|
try:
|
||||||
|
ad = self.get_object()
|
||||||
|
ad.deleted = True
|
||||||
|
ad.save()
|
||||||
|
return JsonResponse(status=200, data={"message": "OK"})
|
||||||
|
except ObjectDoesNotExist:
|
||||||
|
return JsonResponse(status=404, data={"error": f"Job Ad {pk} not found"})
|
||||||
|
|
||||||
|
|
||||||
@require_http_methods(["GET"])
|
@require_http_methods(["GET"])
|
||||||
|
|||||||
Reference in New Issue
Block a user