Merge branch 'feature/fix-official-models' into 'develop'
Fix Official models and API serializing See merge request sahkoinsinoorikilta/vtmk/web2.0-backend!4
This commit is contained in:
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-10-10 18:11+0300\n"
|
||||
"POT-Creation-Date: 2019-10-10 18:14+0300\n"
|
||||
"PO-Revision-Date: 2017-11-02 23:09+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@@ -37,7 +37,7 @@ msgstr "Sössö articles"
|
||||
msgid "Today's lunch"
|
||||
msgstr ""
|
||||
|
||||
#: infoscreen/models.py:212 webapp/models.py:74
|
||||
#: infoscreen/models.py:212 webapp/models.py:75
|
||||
msgid "Events"
|
||||
msgstr "Events"
|
||||
|
||||
@@ -113,7 +113,7 @@ msgid "Delete"
|
||||
msgstr "Delete"
|
||||
|
||||
#: infoscreen/templates/tabs/add_remove.html:23 kaehmy/models.py:56
|
||||
#: kaehmy/templates/list.html:36 webapp/models.py:125 webapp/models.py:154
|
||||
#: kaehmy/templates/list.html:36 webapp/models.py:126 webapp/models.py:155
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
@@ -263,7 +263,7 @@ msgstr ""
|
||||
msgid "Category"
|
||||
msgstr ""
|
||||
|
||||
#: kaehmy/models.py:39 webapp/models.py:136
|
||||
#: kaehmy/models.py:39 webapp/models.py:137
|
||||
msgid "Description"
|
||||
msgstr "Description"
|
||||
|
||||
@@ -311,7 +311,7 @@ msgstr "Kaehmy application"
|
||||
msgid "Kaehmylomakkeet"
|
||||
msgstr "Kaehmy applications"
|
||||
|
||||
#: kaehmy/models.py:98 webapp/models.py:189
|
||||
#: kaehmy/models.py:98 webapp/models.py:221
|
||||
msgid "Phone number"
|
||||
msgstr ""
|
||||
|
||||
@@ -327,7 +327,7 @@ msgstr ""
|
||||
msgid "Custom role name"
|
||||
msgstr ""
|
||||
|
||||
#: kaehmy/models.py:104 webapp/models.py:126
|
||||
#: kaehmy/models.py:104 webapp/models.py:127
|
||||
msgid "Board member"
|
||||
msgstr "Board member"
|
||||
|
||||
@@ -351,7 +351,7 @@ msgstr ""
|
||||
msgid "Telegram channels"
|
||||
msgstr ""
|
||||
|
||||
#: kaehmy/tables.py:13 webapp/models.py:173
|
||||
#: kaehmy/tables.py:13 webapp/models.py:174
|
||||
msgid "Roles"
|
||||
msgstr ""
|
||||
|
||||
@@ -527,11 +527,11 @@ msgstr "I'm a member of AYY"
|
||||
msgid "I want to receive a weekly newsletter"
|
||||
msgstr "I want to receive a weekly newsletter"
|
||||
|
||||
#: members/models.py:13
|
||||
#: members/models.py:13 webapp/models.py:218
|
||||
msgid "First name"
|
||||
msgstr "First name"
|
||||
|
||||
#: members/models.py:14
|
||||
#: members/models.py:14 webapp/models.py:219
|
||||
msgid "Last name"
|
||||
msgstr "Last name"
|
||||
|
||||
@@ -1114,114 +1114,134 @@ msgstr "Go"
|
||||
msgid "Aalto-yliopiston Sähköinsinöörikilta ry"
|
||||
msgstr "Aalto-yliopiston Sähköinsinöörikilta ry"
|
||||
|
||||
#: webapp/models.py:17
|
||||
#: webapp/models.py:18
|
||||
msgid "Webapp"
|
||||
msgstr "Webapp"
|
||||
|
||||
#: webapp/models.py:28
|
||||
#: webapp/models.py:29
|
||||
msgid "Tag"
|
||||
msgstr "Tag"
|
||||
|
||||
#: webapp/models.py:29
|
||||
#: webapp/models.py:30
|
||||
msgid "Tags"
|
||||
msgstr "Tags"
|
||||
|
||||
#: webapp/models.py:32
|
||||
#: webapp/models.py:33
|
||||
msgid "Tag: {}"
|
||||
msgstr "Tag: {}"
|
||||
|
||||
#: webapp/models.py:53
|
||||
#: webapp/models.py:54
|
||||
msgid "Feed: {}"
|
||||
msgstr "Feed: {}"
|
||||
|
||||
#: webapp/models.py:56
|
||||
#: webapp/models.py:57
|
||||
msgid "Feed"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:57
|
||||
#: webapp/models.py:58
|
||||
msgid "Feeds"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:70
|
||||
#: webapp/models.py:71
|
||||
msgid "Event: {}"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:73
|
||||
#: webapp/models.py:74
|
||||
msgid "Event"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:84
|
||||
#: webapp/models.py:85
|
||||
msgid "Template questions: {}"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:87
|
||||
#: webapp/models.py:88
|
||||
msgid "Template question"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:88
|
||||
#: webapp/models.py:89
|
||||
msgid "Template questions"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:102
|
||||
#: webapp/models.py:103
|
||||
msgid "#{} {}"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:105
|
||||
#: webapp/models.py:106
|
||||
msgid "Signup form"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:106
|
||||
#: webapp/models.py:107
|
||||
msgid "Signup forms"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:115
|
||||
#: webapp/models.py:116
|
||||
msgid "Sign-ups: {}"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:118
|
||||
#: webapp/models.py:119
|
||||
msgid "Sign-up"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:119
|
||||
#: webapp/models.py:120
|
||||
msgid "Sign-ups"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:130
|
||||
#: webapp/models.py:131
|
||||
msgid "board member"
|
||||
msgstr "board member"
|
||||
|
||||
#: webapp/models.py:148
|
||||
#: webapp/models.py:149
|
||||
msgid "Committee"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:149
|
||||
#: webapp/models.py:150
|
||||
msgid "Committees"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:152
|
||||
#: webapp/models.py:153
|
||||
msgid "Committee: {}"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:172
|
||||
#: webapp/models.py:173
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:175
|
||||
#: webapp/models.py:179
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:179
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:190
|
||||
msgid "Occupation"
|
||||
msgstr "Occupation"
|
||||
|
||||
#: webapp/models.py:191
|
||||
msgid "Occupations"
|
||||
msgstr "Occupations"
|
||||
|
||||
#: webapp/models.py:193
|
||||
msgid "Start date"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:176
|
||||
#: webapp/models.py:194
|
||||
msgid "End date"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:186
|
||||
#: webapp/models.py:213
|
||||
msgid "Official"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:187
|
||||
#: webapp/models.py:214
|
||||
msgid "Officials"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:220
|
||||
msgid "Email address"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/templates/contact.html:9 webapp/templates/navigation.html:20
|
||||
msgid "Contact"
|
||||
msgstr "Contact"
|
||||
@@ -1343,6 +1363,3 @@ msgstr "Corporate"
|
||||
|
||||
#~ msgid "Missing \"textfield\" POST request field"
|
||||
#~ msgstr "Missing \"textfield\" POST request field"
|
||||
|
||||
#~ msgid "Options"
|
||||
#~ msgstr "Options"
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-10-10 18:11+0300\n"
|
||||
"POT-Creation-Date: 2019-10-10 18:14+0300\n"
|
||||
"PO-Revision-Date: 2017-11-02 23:04+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@@ -38,7 +38,7 @@ msgstr "Sössön artikkelit"
|
||||
msgid "Today's lunch"
|
||||
msgstr "Päivän lounas"
|
||||
|
||||
#: infoscreen/models.py:212 webapp/models.py:74
|
||||
#: infoscreen/models.py:212 webapp/models.py:75
|
||||
msgid "Events"
|
||||
msgstr "Tapahtumat"
|
||||
|
||||
@@ -114,7 +114,7 @@ msgid "Delete"
|
||||
msgstr "Poista"
|
||||
|
||||
#: infoscreen/templates/tabs/add_remove.html:23 kaehmy/models.py:56
|
||||
#: kaehmy/templates/list.html:36 webapp/models.py:125 webapp/models.py:154
|
||||
#: kaehmy/templates/list.html:36 webapp/models.py:126 webapp/models.py:155
|
||||
msgid "Name"
|
||||
msgstr "Nimi"
|
||||
|
||||
@@ -264,7 +264,7 @@ msgstr "Muut"
|
||||
msgid "Category"
|
||||
msgstr "Kategoria"
|
||||
|
||||
#: kaehmy/models.py:39 webapp/models.py:136
|
||||
#: kaehmy/models.py:39 webapp/models.py:137
|
||||
msgid "Description"
|
||||
msgstr "Kuvaus"
|
||||
|
||||
@@ -312,7 +312,7 @@ msgstr "Kaehmylomake"
|
||||
msgid "Kaehmylomakkeet"
|
||||
msgstr "Kaehmylomakkeet"
|
||||
|
||||
#: kaehmy/models.py:98 webapp/models.py:189
|
||||
#: kaehmy/models.py:98 webapp/models.py:221
|
||||
msgid "Phone number"
|
||||
msgstr "Puhelinnumero"
|
||||
|
||||
@@ -328,7 +328,7 @@ msgstr "Teksti"
|
||||
msgid "Custom role name"
|
||||
msgstr "Uusi virka"
|
||||
|
||||
#: kaehmy/models.py:104 webapp/models.py:126
|
||||
#: kaehmy/models.py:104 webapp/models.py:127
|
||||
msgid "Board member"
|
||||
msgstr "Hallituksen jäsen"
|
||||
|
||||
@@ -352,7 +352,7 @@ msgstr "Telegram-kanava"
|
||||
msgid "Telegram channels"
|
||||
msgstr "Telegram-kanavat"
|
||||
|
||||
#: kaehmy/tables.py:13 webapp/models.py:173
|
||||
#: kaehmy/tables.py:13 webapp/models.py:174
|
||||
msgid "Roles"
|
||||
msgstr "Roolit"
|
||||
|
||||
@@ -536,11 +536,11 @@ msgstr "Olen AYY:n jäsen"
|
||||
msgid "I want to receive a weekly newsletter"
|
||||
msgstr "Haluan saada viikottaisen jäsentiedotteen"
|
||||
|
||||
#: members/models.py:13
|
||||
#: members/models.py:13 webapp/models.py:218
|
||||
msgid "First name"
|
||||
msgstr "Etunimi"
|
||||
|
||||
#: members/models.py:14
|
||||
#: members/models.py:14 webapp/models.py:219
|
||||
msgid "Last name"
|
||||
msgstr "Sukunimi"
|
||||
|
||||
@@ -781,10 +781,8 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: members/templates/email_application_submit.html:15
|
||||
#, fuzzy
|
||||
#| msgid "Muista myös maksaa jäsenmaksusi!"
|
||||
msgid "Muistathan maksaa jäsenmaksun! Alla maksutiedot"
|
||||
msgstr "Muista myös maksaa jäsenmaksusi!"
|
||||
msgstr "Muistathan maksaa jäsenmaksun! Alla maksutiedot"
|
||||
|
||||
#: members/templates/email_application_submit.html:17
|
||||
msgid "Saaja"
|
||||
@@ -1115,114 +1113,134 @@ msgstr "Vaihda"
|
||||
msgid "Aalto-yliopiston Sähköinsinöörikilta ry"
|
||||
msgstr "Aalto-yliopiston Sähköinsinöörikilta ry"
|
||||
|
||||
#: webapp/models.py:17
|
||||
#: webapp/models.py:18
|
||||
msgid "Webapp"
|
||||
msgstr "Nettisivut"
|
||||
|
||||
#: webapp/models.py:28
|
||||
#: webapp/models.py:29
|
||||
msgid "Tag"
|
||||
msgstr "Tunniste"
|
||||
|
||||
#: webapp/models.py:29
|
||||
#: webapp/models.py:30
|
||||
msgid "Tags"
|
||||
msgstr "Tunnisteet"
|
||||
|
||||
#: webapp/models.py:32
|
||||
#: webapp/models.py:33
|
||||
msgid "Tag: {}"
|
||||
msgstr "Tunniste: {}"
|
||||
|
||||
#: webapp/models.py:53
|
||||
#: webapp/models.py:54
|
||||
msgid "Feed: {}"
|
||||
msgstr "Uutinen: {}"
|
||||
|
||||
#: webapp/models.py:56
|
||||
#: webapp/models.py:57
|
||||
msgid "Feed"
|
||||
msgstr "Uutinen"
|
||||
|
||||
#: webapp/models.py:57
|
||||
#: webapp/models.py:58
|
||||
msgid "Feeds"
|
||||
msgstr "Uutiset"
|
||||
|
||||
#: webapp/models.py:70
|
||||
#: webapp/models.py:71
|
||||
msgid "Event: {}"
|
||||
msgstr "Tapahtuma: {}"
|
||||
|
||||
#: webapp/models.py:73
|
||||
#: webapp/models.py:74
|
||||
msgid "Event"
|
||||
msgstr "Tapahtuma"
|
||||
|
||||
#: webapp/models.py:84
|
||||
#: webapp/models.py:85
|
||||
msgid "Template questions: {}"
|
||||
msgstr "Vakiokysymykset: {}"
|
||||
|
||||
#: webapp/models.py:87
|
||||
#: webapp/models.py:88
|
||||
msgid "Template question"
|
||||
msgstr "Vakiokysymys"
|
||||
|
||||
#: webapp/models.py:88
|
||||
#: webapp/models.py:89
|
||||
msgid "Template questions"
|
||||
msgstr "Vakiokysymykset"
|
||||
|
||||
#: webapp/models.py:102
|
||||
#: webapp/models.py:103
|
||||
msgid "#{} {}"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:105
|
||||
#: webapp/models.py:106
|
||||
msgid "Signup form"
|
||||
msgstr "Ilmoittautumislomake"
|
||||
|
||||
#: webapp/models.py:106
|
||||
#: webapp/models.py:107
|
||||
msgid "Signup forms"
|
||||
msgstr "Ilmoittautumislomakkeet"
|
||||
|
||||
#: webapp/models.py:115
|
||||
#: webapp/models.py:116
|
||||
msgid "Sign-ups: {}"
|
||||
msgstr "Ilmoittautumiset: {}"
|
||||
|
||||
#: webapp/models.py:118
|
||||
#: webapp/models.py:119
|
||||
msgid "Sign-up"
|
||||
msgstr "Ilmoittautuminen"
|
||||
|
||||
#: webapp/models.py:119
|
||||
#: webapp/models.py:120
|
||||
msgid "Sign-ups"
|
||||
msgstr "Ilmoittautumiset"
|
||||
|
||||
#: webapp/models.py:130
|
||||
#: webapp/models.py:131
|
||||
msgid "board member"
|
||||
msgstr "hallituksen jäsen"
|
||||
|
||||
#: webapp/models.py:148
|
||||
#: webapp/models.py:149
|
||||
msgid "Committee"
|
||||
msgstr "Toimikunta"
|
||||
|
||||
#: webapp/models.py:149
|
||||
#: webapp/models.py:150
|
||||
msgid "Committees"
|
||||
msgstr "Toimikunnat"
|
||||
|
||||
#: webapp/models.py:152
|
||||
#: webapp/models.py:153
|
||||
msgid "Committee: {}"
|
||||
msgstr "Toimikunta: {}"
|
||||
|
||||
#: webapp/models.py:172
|
||||
#: webapp/models.py:173
|
||||
msgid "Role"
|
||||
msgstr "Rooli"
|
||||
|
||||
#: webapp/models.py:175
|
||||
#: webapp/models.py:179
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:179
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/models.py:190
|
||||
msgid "Occupation"
|
||||
msgstr "Virka"
|
||||
|
||||
#: webapp/models.py:191
|
||||
msgid "Occupations"
|
||||
msgstr "Virat"
|
||||
|
||||
#: webapp/models.py:193
|
||||
msgid "Start date"
|
||||
msgstr "Alkupäivämäärä"
|
||||
|
||||
#: webapp/models.py:176
|
||||
#: webapp/models.py:194
|
||||
msgid "End date"
|
||||
msgstr "Loppupäivämäärä"
|
||||
|
||||
#: webapp/models.py:186
|
||||
#: webapp/models.py:213
|
||||
msgid "Official"
|
||||
msgstr "Toimihenkilö"
|
||||
|
||||
#: webapp/models.py:187
|
||||
#: webapp/models.py:214
|
||||
msgid "Officials"
|
||||
msgstr "Toimihenkilöt"
|
||||
|
||||
#: webapp/models.py:220
|
||||
msgid "Email address"
|
||||
msgstr ""
|
||||
|
||||
#: webapp/templates/contact.html:9 webapp/templates/navigation.html:20
|
||||
msgid "Contact"
|
||||
msgstr "Yhteystiedot"
|
||||
|
||||
+3
-2
@@ -1,7 +1,7 @@
|
||||
"""File containing webapp app admin registers."""
|
||||
|
||||
from django.contrib import admin
|
||||
from webapp.models import Official, Role, Committee
|
||||
from webapp.models import Official, Role, Committee, Occupation
|
||||
from webapp.models import Feed, Tag, BaseFeed, Event, Signup, SignupForm, TemplateQuestion
|
||||
from modeltranslation.admin import TranslationAdmin
|
||||
from django.contrib.auth.models import Permission
|
||||
@@ -16,6 +16,7 @@ admin.site.register(Event, TranslationAdmin)
|
||||
admin.site.register(SignupForm, TranslationAdmin)
|
||||
admin.site.register(Signup, TranslationAdmin)
|
||||
admin.site.register(TemplateQuestion, TranslationAdmin)
|
||||
admin.site.register(Committee, TranslationAdmin)
|
||||
admin.site.register(Official)
|
||||
admin.site.register(Occupation)
|
||||
admin.site.register(Role)
|
||||
admin.site.register(Committee)
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 2.1.5 on 2019-09-26 17:48
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('webapp', '0054_auto_20190313_1642'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.DeleteModel(
|
||||
name='official'
|
||||
)
|
||||
]
|
||||
@@ -0,0 +1,58 @@
|
||||
# Generated by Django 2.1.5 on 2019-09-26 17:51
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import phonenumber_field.modelfields
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('webapp', '0055_auto_20190926_2048'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Occupation',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('start_date', models.DateField(verbose_name='Start date')),
|
||||
('end_date', models.DateField(verbose_name='End date')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Occupation',
|
||||
'verbose_name_plural': 'Occupations',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Official',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('first_name', models.CharField(max_length=30, verbose_name='First name')),
|
||||
('last_name', models.CharField(max_length=150, verbose_name='Last name')),
|
||||
('email', models.EmailField(max_length=254, verbose_name='Email address')),
|
||||
('phone_number', phonenumber_field.modelfields.PhoneNumberField(max_length=128, verbose_name='Phone number')),
|
||||
('role_history', models.ManyToManyField(blank=True, to='webapp.Occupation')),
|
||||
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Official',
|
||||
'verbose_name_plural': 'Officials',
|
||||
},
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='role',
|
||||
name='end_date',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='role',
|
||||
name='start_date',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='occupation',
|
||||
name='role',
|
||||
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.SET_NULL, to='webapp.Role'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 2.1.5 on 2019-09-26 18:02
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('webapp', '0056_auto_20190926_2051'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='occupation',
|
||||
name='role',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='webapp.Role'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 2.1.5 on 2019-10-10 15:37
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('webapp', '0057_auto_20190926_2102'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='official',
|
||||
name='role_history',
|
||||
field=models.ManyToManyField(blank=True, related_name='officials', to='webapp.Occupation'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 2.1.5 on 2019-10-10 16:00
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('webapp', '0058_auto_20191010_1837'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='committee',
|
||||
name='name_en',
|
||||
field=models.CharField(max_length=255, null=True, verbose_name='Name'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='committee',
|
||||
name='name_fi',
|
||||
field=models.CharField(max_length=255, null=True, verbose_name='Name'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 2.1.5 on 2019-10-10 16:05
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('webapp', '0059_auto_20191010_1900'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='official',
|
||||
name='image',
|
||||
field=models.ImageField(null=True, upload_to=''),
|
||||
),
|
||||
]
|
||||
+52
-6
@@ -4,9 +4,10 @@ from django.db import models
|
||||
from django.utils import timezone
|
||||
# from datetime import timedelta
|
||||
from django.contrib.auth.models import User
|
||||
from django.db.models.signals import post_save
|
||||
from django.dispatch import receiver
|
||||
from webapp.utils import month_from_now
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
# from django.contrib.auth.models import User
|
||||
from auditlog.registry import auditlog
|
||||
from phonenumber_field.modelfields import PhoneNumberField
|
||||
# from django.contrib.postgres.fields import JSONField
|
||||
@@ -163,7 +164,7 @@ class Role(PresetRole):
|
||||
Model for Role.
|
||||
|
||||
Model representing an active or historical occupation
|
||||
in an official's history.
|
||||
in the guild.
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
@@ -172,12 +173,38 @@ class Role(PresetRole):
|
||||
verbose_name = _('Role')
|
||||
verbose_name_plural = _('Roles')
|
||||
|
||||
start_date = models.DateField(_('Start date'))
|
||||
end_date = models.DateField(_('End date'))
|
||||
committee = models.ForeignKey('Committee', related_name='roles', on_delete=models.SET_NULL, null=True)
|
||||
|
||||
def __str__(self):
|
||||
return '{} (Hallitus: {}) ({})'.format(self.name, _("Yes") if self.is_board else _("No"), self.committee)
|
||||
|
||||
class Official(User):
|
||||
|
||||
class Occupation(models.Model):
|
||||
"""
|
||||
Model for a occupation in guild.
|
||||
|
||||
Model links Official into a role he/she has or has had in the guild.
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('Occupation')
|
||||
verbose_name_plural = _('Occupations')
|
||||
|
||||
start_date = models.DateField(_('Start date'))
|
||||
end_date = models.DateField(_('End date'))
|
||||
role = models.ForeignKey('Role', on_delete=models.SET_NULL, null=True)
|
||||
|
||||
@staticmethod
|
||||
def by_year(year):
|
||||
return Occupation.objects.filter(
|
||||
end_date__gte=timezone.datetime(year, 1, 1)).filter(
|
||||
start_date__lte=timezone.datetime(year, 12, 31))
|
||||
|
||||
def __str__(self):
|
||||
return '{}: {} - {}'.format(self.role.name, self.start_date, self.end_date)
|
||||
|
||||
|
||||
class Official(models.Model):
|
||||
"""Model representing a guild official."""
|
||||
|
||||
class Meta:
|
||||
@@ -186,13 +213,32 @@ class Official(User):
|
||||
verbose_name = _('Official')
|
||||
verbose_name_plural = _('Officials')
|
||||
|
||||
user = models.OneToOneField(User, on_delete=models.CASCADE)
|
||||
|
||||
first_name = models.CharField(_('First name'), max_length=30)
|
||||
last_name = models.CharField(_('Last name'), max_length=150)
|
||||
email = models.EmailField(_('Email address'))
|
||||
phone_number = PhoneNumberField(_('Phone number'))
|
||||
role = models.ManyToManyField('Role', related_name='official')
|
||||
role_history = models.ManyToManyField('Occupation', 'officials', blank=True)
|
||||
image = models.ImageField(blank=True, null=True)
|
||||
|
||||
@staticmethod
|
||||
def by_year(year):
|
||||
return Official.objects.filter(
|
||||
role_history__in=Occupation.occupations_by_year(year)).distinct()
|
||||
|
||||
def __str__(self):
|
||||
return '{} {}'.format(self.first_name, self.last_name)
|
||||
|
||||
|
||||
@receiver(post_save, sender=Official)
|
||||
def save_user_official(sender, instance, **kwargs):
|
||||
instance.user.first_name = instance.first_name
|
||||
instance.user.last_name = instance.last_name
|
||||
instance.user.email = instance.email
|
||||
instance.user.save()
|
||||
|
||||
|
||||
auditlog.register(Tag)
|
||||
auditlog.register(Feed)
|
||||
auditlog.register(Event)
|
||||
|
||||
+24
-1
@@ -93,8 +93,31 @@ class FeedSerializer(serializers.ModelSerializer):
|
||||
return feed
|
||||
|
||||
|
||||
class CommitteeSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Committee
|
||||
fields = ['name_fi', 'name_en']
|
||||
|
||||
|
||||
class RoleSerializer(serializers.ModelSerializer):
|
||||
committee = CommitteeSerializer(read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = Role
|
||||
fields = ('name_fi', 'name_en', 'description_fi', 'description_en', 'committee', 'is_board')
|
||||
|
||||
|
||||
class ContactsSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Official
|
||||
fields = ('id', 'first_name', 'last_name', 'phone_number', 'role')
|
||||
fields = ('first_name', 'last_name', 'email', 'phone_number', 'image')
|
||||
depth = 2
|
||||
|
||||
|
||||
class OccupationSerializer(serializers.ModelSerializer):
|
||||
role = RoleSerializer(read_only=True)
|
||||
officials = ContactsSerializer(many=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = Occupation
|
||||
fields = ('role', 'start_date', 'end_date', 'officials')
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
"""Translation classes."""
|
||||
|
||||
from modeltranslation.translator import register, TranslationOptions
|
||||
from webapp.models import BaseFeed, Feed, Tag, Event, Signup, SignupForm, TemplateQuestion
|
||||
from webapp.models import PresetRole, BaseRole
|
||||
from webapp.models import *
|
||||
|
||||
|
||||
@register(BaseFeed)
|
||||
@@ -66,3 +65,10 @@ class PresetRoleTranslationOptions(TranslationOptions):
|
||||
"""Class for PresetRole translation options."""
|
||||
|
||||
fields = ('description',)
|
||||
|
||||
|
||||
@register(Committee)
|
||||
class CommitteeTranslationOptions(TranslationOptions):
|
||||
"""Class for PresetRole translation options."""
|
||||
|
||||
fields = ('name',)
|
||||
|
||||
+3
-55
@@ -3,25 +3,10 @@
|
||||
from django.conf.urls import url, include
|
||||
from rest_framework import routers
|
||||
from rest_framework_jwt.views import obtain_jwt_token, verify_jwt_token
|
||||
|
||||
# from rest_framework.urlpatterns import format_suffix_patterns
|
||||
# from django.conf import settings
|
||||
# from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
# from webapp.views import main_index
|
||||
# from webapp.views import login_view
|
||||
# from webapp.views import logout_view
|
||||
from webapp.views import about_view
|
||||
# from webapp.views import guild_view
|
||||
# from webapp.views import freshmen_view
|
||||
# from webapp.views import jobs_view
|
||||
# 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 EventViewSet, SignupFormViewSet, SignupViewSet,\
|
||||
FeedViewSet, ContactsViewSet, SavedQuestionsViewSet, RootView, TagsViewSet
|
||||
|
||||
from webapp.views import *
|
||||
|
||||
|
||||
class APIRouter(routers.DefaultRouter):
|
||||
@@ -34,6 +19,7 @@ router.register(r'signupForm', SignupFormViewSet)
|
||||
router.register(r'signup', SignupViewSet)
|
||||
router.register(r'feed', FeedViewSet)
|
||||
router.register(r'contacts', ContactsViewSet)
|
||||
router.register(r'committees', CommitteeViewSet)
|
||||
router.register(r'questions', SavedQuestionsViewSet)
|
||||
router.register(r'tags', TagsViewSet)
|
||||
|
||||
@@ -41,44 +27,6 @@ urlpatterns = [
|
||||
url(r'^api/', include(router.urls)),
|
||||
url(r'^api/api-token-auth/', obtain_jwt_token),
|
||||
url(r'^api/api-token-verify/', verify_jwt_token),
|
||||
|
||||
# login stuff
|
||||
# url(r'^login$', login_view),
|
||||
# url(r'^logout$', logout_view),
|
||||
|
||||
# git revision
|
||||
url(r'^about', about_view),
|
||||
]
|
||||
# urlpatterns = [
|
||||
# # main
|
||||
# url(r'^$', main_index),
|
||||
# url(r'^api/events/$', EventList.as_view(), name='event-list'),
|
||||
# url(r'^api/events/(?P<pk>[0-9]+)/$', EventDetail.as_view(), name='event-detail'),
|
||||
# url(r'^api/signup/$', SignupFormList.as_view(), name='signupform-list'),
|
||||
# url(r'^api/signup/(?P<pk>[0-9]+)/$', SignupFormDetail.as_view(), name='signup-detail'),
|
||||
|
||||
# url(r'^api/signup/create$', SignupFormCreate.as_view(), name='signupform-create'),
|
||||
|
||||
# # url(r'^signupform/$', SignupFormList.as_view(), name='signupform-list'),
|
||||
# # url(r'^signupform/(?P<pk>[0-9]+)/$', SignupFormDetail.as_view(), name='signupform-detail'),
|
||||
|
||||
# # login stuff
|
||||
# url(r'^login$', login_view),
|
||||
# url(r'^logout$', logout_view),
|
||||
|
||||
# # pages
|
||||
# url(r'^guild', guild_view),
|
||||
# url(r'^freshmen', freshmen_view),
|
||||
# url(r'^event_calendar', event_calendar_view),
|
||||
# url(r'^international', international_view),
|
||||
# url(r'^sosso', sosso_view),
|
||||
# url(r'^contact', contact_view),
|
||||
|
||||
# # corporate
|
||||
# url(r'^jobs', jobs_view),
|
||||
# ]
|
||||
|
||||
|
||||
# if settings.DEBUG:
|
||||
# from django.contrib.staticfiles.urls import staticfiles_urlpatterns
|
||||
# urlpatterns += staticfiles_urlpatterns()
|
||||
|
||||
+14
-2
@@ -108,8 +108,20 @@ class FeedViewSet(viewsets.ModelViewSet):
|
||||
|
||||
|
||||
class ContactsViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
queryset = Official.objects.all()
|
||||
serializer_class = ContactsSerializer
|
||||
queryset = Occupation.objects.all()
|
||||
serializer_class = OccupationSerializer
|
||||
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||
|
||||
def get_queryset(self):
|
||||
year = self.request.query_params.get('year')
|
||||
if not year:
|
||||
return Occupation.by_year(timezone.now().year)
|
||||
return Occupation.by_year(int(year))
|
||||
|
||||
|
||||
class CommitteeViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
queryset = Committee.objects.all()
|
||||
serializer_class = CommitteeSerializer
|
||||
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user