diff --git a/kaehmy/models.py b/kaehmy/models.py index dcafbf5..0347600 100644 --- a/kaehmy/models.py +++ b/kaehmy/models.py @@ -9,7 +9,6 @@ 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 import logging diff --git a/locale/en/LC_MESSAGES/django.mo b/locale/en/LC_MESSAGES/django.mo index ec01ae1..943f63b 100644 Binary files a/locale/en/LC_MESSAGES/django.mo and b/locale/en/LC_MESSAGES/django.mo differ diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po index 5c71ad1..f0cecbc 100644 --- a/locale/en/LC_MESSAGES/django.po +++ b/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-22 23:51+0300\n" +"POT-Creation-Date: 2018-06-19 20:44+0300\n" "PO-Revision-Date: 2017-11-02 23:09+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -33,7 +33,7 @@ msgstr "External website" msgid "Sössö articles" msgstr "Sössö articles" -#: infoscreen/models.py:199 webapp/models.py:72 +#: infoscreen/models.py:199 signup/models.py:30 msgid "Events" msgstr "Events" @@ -112,8 +112,8 @@ msgstr "Preview" msgid "Delete" msgstr "Delete" -#: infoscreen/templates/tabs/add_remove.html:23 kaehmy/models.py:39 -#: kaehmy/templates/list.html:36 webapp/models.py:110 webapp/models.py:140 +#: infoscreen/templates/tabs/add_remove.html:23 kaehmy/models.py:38 +#: kaehmy/templates/list.html:36 webapp/models.py:61 webapp/models.py:90 msgid "Name" msgstr "Name" @@ -201,95 +201,95 @@ msgstr "Invalid phone number" msgid "Custom role with the same name already exists." msgstr "Custom role with the same name already exists." -#: kaehmy/models.py:18 +#: kaehmy/models.py:17 msgid "Kaehmy" msgstr "Kaehmy" -#: kaehmy/models.py:25 +#: kaehmy/models.py:24 msgid "Preset kaehmy role" msgstr "Preset kaehmy role" -#: kaehmy/models.py:26 +#: kaehmy/models.py:25 msgid "Preset kaehmy roles" msgstr "Preset kaehmy roles" -#: kaehmy/models.py:33 +#: kaehmy/models.py:32 msgid "Custom kaehmy role" msgstr "Custom kaehmy role" -#: kaehmy/models.py:34 +#: kaehmy/models.py:33 msgid "Custom kaehmy roles" msgstr "Custom kaehmy roles" -#: kaehmy/models.py:40 kaehmy/templates/list.html:40 members/models.py:15 +#: kaehmy/models.py:39 kaehmy/templates/list.html:40 members/models.py:15 msgid "Email" msgstr "Email" -#: kaehmy/models.py:41 +#: kaehmy/models.py:40 msgid "Timestamp" msgstr "" -#: kaehmy/models.py:55 +#: kaehmy/models.py:54 msgid "Kaehmykommentti" msgstr "Kaehmy comment" -#: kaehmy/models.py:56 +#: kaehmy/models.py:55 msgid "Kaehmykommentit" msgstr "Kaehmy comments" -#: kaehmy/models.py:58 ohlhafv/models.py:37 +#: kaehmy/models.py:57 ohlhafv/models.py:36 msgid "Message" msgstr "" -#: kaehmy/models.py:77 kaehmy/templates/kaehmy.html:12 +#: kaehmy/models.py:76 kaehmy/templates/kaehmy.html:12 msgid "Kaehmylomake" msgstr "Kaehmy application" -#: kaehmy/models.py:78 +#: kaehmy/models.py:77 msgid "Kaehmylomakkeet" msgstr "Kaehmy applications" -#: kaehmy/models.py:81 webapp/models.py:175 +#: kaehmy/models.py:80 webapp/models.py:125 msgid "Phone number" msgstr "" -#: kaehmy/models.py:82 +#: kaehmy/models.py:81 msgid "Year" msgstr "" -#: kaehmy/models.py:83 +#: kaehmy/models.py:82 msgid "Text" msgstr "" -#: kaehmy/models.py:85 +#: kaehmy/models.py:84 msgid "Custom role name" msgstr "" -#: kaehmy/models.py:87 webapp/models.py:111 +#: kaehmy/models.py:86 webapp/models.py:62 msgid "Board member" msgstr "Board member" -#: kaehmy/models.py:95 +#: kaehmy/models.py:94 msgid "Kaehmy application: {}" msgstr "Kaehmy application: {}" -#: kaehmy/models.py:117 +#: kaehmy/models.py:116 msgid "Board: {}" msgstr "" -#: kaehmy/models.py:123 +#: kaehmy/models.py:122 msgid "Official: {}" msgstr "" -#: kaehmy/models.py:140 +#: kaehmy/models.py:139 msgid "Telegram channel" msgstr "" -#: kaehmy/models.py:141 +#: kaehmy/models.py:140 msgid "Telegram channels" msgstr "" -#: kaehmy/tables.py:13 webapp/models.py:159 +#: kaehmy/tables.py:13 webapp/models.py:109 msgid "Roles" msgstr "" @@ -726,11 +726,11 @@ msgstr "Payments in register:" msgid "Language" msgstr "Language" -#: members/templates/settings.html:20 sikweb/base.py:246 +#: members/templates/settings.html:20 sikweb/base.py:247 msgid "Finnish" msgstr "Finnish" -#: members/templates/settings.html:21 sikweb/base.py:247 +#: members/templates/settings.html:21 sikweb/base.py:248 msgid "English" msgstr "English" @@ -818,39 +818,39 @@ msgstr "Could not update payment object" msgid "Missing CSV file" msgstr "Missing CSV file" -#: ohlhafv/models.py:16 +#: ohlhafv/models.py:15 msgid "Ohlhafv" msgstr "Øhlhäfv" -#: ohlhafv/models.py:23 +#: ohlhafv/models.py:22 msgid "Ohlhafv challenge" msgstr "" -#: ohlhafv/models.py:24 +#: ohlhafv/models.py:23 msgid "Ohlhafv challenges" msgstr "" -#: ohlhafv/models.py:30 +#: ohlhafv/models.py:29 msgid "Team Challenge (1 x 0.33 L, 2 x 0.5 L, 1 x 1.0 L)" msgstr "" -#: ohlhafv/models.py:33 +#: ohlhafv/models.py:32 msgid "Challenger" msgstr "" -#: ohlhafv/models.py:34 +#: ohlhafv/models.py:33 msgid "Victim" msgstr "" -#: ohlhafv/models.py:35 +#: ohlhafv/models.py:34 msgid "Victim email" msgstr "" -#: ohlhafv/models.py:36 +#: ohlhafv/models.py:35 msgid "Series" msgstr "" -#: ohlhafv/models.py:41 +#: ohlhafv/models.py:40 msgid "Ohlhafv challenge: {} vs. {}" msgstr "" @@ -903,6 +903,50 @@ msgstr "Challenge" msgid "Sinut on haastettu Øhlhäfviin!" msgstr "You have been challenged at Ohlhafv!" +#: signup/models.py:14 webapp/models.py:16 +msgid "Webapp" +msgstr "Webapp" + +#: signup/models.py:26 +msgid "Event: {}" +msgstr "" + +#: signup/models.py:29 +msgid "Event" +msgstr "" + +#: signup/models.py:40 +msgid "Template questions: {}" +msgstr "" + +#: signup/models.py:43 +msgid "Template question" +msgstr "" + +#: signup/models.py:44 +msgid "Template questions" +msgstr "" + +#: signup/models.py:56 +msgid "Signup form" +msgstr "" + +#: signup/models.py:57 +msgid "Signup forms" +msgstr "" + +#: signup/models.py:66 +msgid "Sign-ups: {}" +msgstr "" + +#: signup/models.py:69 +msgid "Sign-up" +msgstr "" + +#: signup/models.py:70 +msgid "Sign-ups" +msgstr "" + #: templates/admin/base_site.html:43 msgid "Go" msgstr "Go" @@ -975,91 +1019,67 @@ msgstr "" "An email was sent to %(email)s %(ago)s ago. Use the link in " "it to set a new password." -#: webapp/models.py:17 -msgid "Webapp" -msgstr "Webapp" - -#: webapp/models.py:28 +#: webapp/models.py:27 msgid "Tag" msgstr "Tag" -#: webapp/models.py:29 +#: webapp/models.py:28 msgid "Tags" msgstr "Tags" -#: webapp/models.py:32 +#: webapp/models.py:31 msgid "Tag: {}" msgstr "Tag: {}" -#: webapp/models.py:52 +#: webapp/models.py:51 msgid "Feed: {}" msgstr "Feed: {}" -#: webapp/models.py:55 +#: webapp/models.py:54 msgid "Feed" msgstr "" -#: webapp/models.py:56 +#: webapp/models.py:55 msgid "Feeds" msgstr "" -#: webapp/models.py:68 -msgid "Event: {}" -msgstr "" - -#: webapp/models.py:71 -msgid "Event" -msgstr "" - -#: webapp/models.py:83 -msgid "Registration: {}" -msgstr "" - -#: webapp/models.py:86 -msgid "Registration" -msgstr "" - -#: webapp/models.py:87 -msgid "Registrations" -msgstr "" - -#: webapp/models.py:116 +#: webapp/models.py:66 msgid "board member" msgstr "board member" -#: webapp/models.py:122 +#: webapp/models.py:72 msgid "Description" msgstr "Description" -#: webapp/models.py:134 +#: webapp/models.py:84 msgid "Committee" msgstr "" -#: webapp/models.py:135 +#: webapp/models.py:85 msgid "Committees" msgstr "" -#: webapp/models.py:138 +#: webapp/models.py:88 msgid "Committee: {}" msgstr "" -#: webapp/models.py:158 +#: webapp/models.py:108 msgid "Role" msgstr "" -#: webapp/models.py:161 +#: webapp/models.py:111 msgid "Start date" msgstr "" -#: webapp/models.py:162 +#: webapp/models.py:112 msgid "End date" msgstr "" -#: webapp/models.py:172 +#: webapp/models.py:122 msgid "Official" msgstr "" -#: webapp/models.py:173 +#: webapp/models.py:123 msgid "Officials" msgstr "" diff --git a/locale/fi/LC_MESSAGES/django.mo b/locale/fi/LC_MESSAGES/django.mo index 6ed19a4..669eeea 100644 Binary files a/locale/fi/LC_MESSAGES/django.mo and b/locale/fi/LC_MESSAGES/django.mo differ diff --git a/locale/fi/LC_MESSAGES/django.po b/locale/fi/LC_MESSAGES/django.po index d758578..235c146 100644 --- a/locale/fi/LC_MESSAGES/django.po +++ b/locale/fi/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-22 23:51+0300\n" +"POT-Creation-Date: 2018-06-19 20:44+0300\n" "PO-Revision-Date: 2017-11-02 23:04+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -34,7 +34,7 @@ msgstr "Ulkoinen verkkosivu" msgid "Sössö articles" msgstr "Sössön artikkelit" -#: infoscreen/models.py:199 webapp/models.py:72 +#: infoscreen/models.py:199 signup/models.py:30 msgid "Events" msgstr "Tapahtumat" @@ -113,8 +113,8 @@ msgstr "Esikatsele" msgid "Delete" msgstr "Poista" -#: infoscreen/templates/tabs/add_remove.html:23 kaehmy/models.py:39 -#: kaehmy/templates/list.html:36 webapp/models.py:110 webapp/models.py:140 +#: infoscreen/templates/tabs/add_remove.html:23 kaehmy/models.py:38 +#: kaehmy/templates/list.html:36 webapp/models.py:61 webapp/models.py:90 msgid "Name" msgstr "Nimi" @@ -202,95 +202,95 @@ msgstr "Virheellinen puhelinnumero" msgid "Custom role with the same name already exists." msgstr "Samanniminen virka on jo olemassa." -#: kaehmy/models.py:18 +#: kaehmy/models.py:17 msgid "Kaehmy" msgstr "Kaehmy" -#: kaehmy/models.py:25 +#: kaehmy/models.py:24 msgid "Preset kaehmy role" msgstr "Kaehmyvirka" -#: kaehmy/models.py:26 +#: kaehmy/models.py:25 msgid "Preset kaehmy roles" msgstr "Kaehmyvirat" -#: kaehmy/models.py:33 +#: kaehmy/models.py:32 msgid "Custom kaehmy role" msgstr "Uusi virka" -#: kaehmy/models.py:34 +#: kaehmy/models.py:33 msgid "Custom kaehmy roles" msgstr "Uudet kaehmyvirat" -#: kaehmy/models.py:40 kaehmy/templates/list.html:40 members/models.py:15 +#: kaehmy/models.py:39 kaehmy/templates/list.html:40 members/models.py:15 msgid "Email" msgstr "Sähköposti" -#: kaehmy/models.py:41 +#: kaehmy/models.py:40 msgid "Timestamp" msgstr "Aikaleima" -#: kaehmy/models.py:55 +#: kaehmy/models.py:54 msgid "Kaehmykommentti" msgstr "Kaehmykommentti" -#: kaehmy/models.py:56 +#: kaehmy/models.py:55 msgid "Kaehmykommentit" msgstr "Kaehmykommentit" -#: kaehmy/models.py:58 ohlhafv/models.py:37 +#: kaehmy/models.py:57 ohlhafv/models.py:36 msgid "Message" msgstr "Viesti" -#: kaehmy/models.py:77 kaehmy/templates/kaehmy.html:12 +#: kaehmy/models.py:76 kaehmy/templates/kaehmy.html:12 msgid "Kaehmylomake" msgstr "Kaehmylomake" -#: kaehmy/models.py:78 +#: kaehmy/models.py:77 msgid "Kaehmylomakkeet" msgstr "Kaehmylomakkeet" -#: kaehmy/models.py:81 webapp/models.py:175 +#: kaehmy/models.py:80 webapp/models.py:125 msgid "Phone number" msgstr "Puhelinnumero" -#: kaehmy/models.py:82 +#: kaehmy/models.py:81 msgid "Year" msgstr "Vuosi" -#: kaehmy/models.py:83 +#: kaehmy/models.py:82 msgid "Text" msgstr "Teksti" -#: kaehmy/models.py:85 +#: kaehmy/models.py:84 msgid "Custom role name" msgstr "Uusi virka" -#: kaehmy/models.py:87 webapp/models.py:111 +#: kaehmy/models.py:86 webapp/models.py:62 msgid "Board member" msgstr "Hallituksen jäsen" -#: kaehmy/models.py:95 +#: kaehmy/models.py:94 msgid "Kaehmy application: {}" msgstr "Kaehmy: {}" -#: kaehmy/models.py:117 +#: kaehmy/models.py:116 msgid "Board: {}" msgstr "Hallitus: {}" -#: kaehmy/models.py:123 +#: kaehmy/models.py:122 msgid "Official: {}" msgstr "Toimari: {}" -#: kaehmy/models.py:140 +#: kaehmy/models.py:139 msgid "Telegram channel" msgstr "Telegram-kanava" -#: kaehmy/models.py:141 +#: kaehmy/models.py:140 msgid "Telegram channels" msgstr "Telegram-kanavat" -#: kaehmy/tables.py:13 webapp/models.py:159 +#: kaehmy/tables.py:13 webapp/models.py:109 msgid "Roles" msgstr "Roolit" @@ -728,11 +728,11 @@ msgstr "Maksutapahtumia:" msgid "Language" msgstr "Kieli" -#: members/templates/settings.html:20 sikweb/base.py:246 +#: members/templates/settings.html:20 sikweb/base.py:247 msgid "Finnish" msgstr "suomi" -#: members/templates/settings.html:21 sikweb/base.py:247 +#: members/templates/settings.html:21 sikweb/base.py:248 msgid "English" msgstr "englanti" @@ -819,39 +819,39 @@ msgstr "Maksutapahtumaobjektia ei voitu päivittää" msgid "Missing CSV file" msgstr "Puuttuva CSV-tiedosto" -#: ohlhafv/models.py:16 +#: ohlhafv/models.py:15 msgid "Ohlhafv" msgstr "Øhlhäfv" -#: ohlhafv/models.py:23 +#: ohlhafv/models.py:22 msgid "Ohlhafv challenge" msgstr "Ohlhafv haaste" -#: ohlhafv/models.py:24 +#: ohlhafv/models.py:23 msgid "Ohlhafv challenges" msgstr "Ohlhafv haasteet" -#: ohlhafv/models.py:30 +#: ohlhafv/models.py:29 msgid "Team Challenge (1 x 0.33 L, 2 x 0.5 L, 1 x 1.0 L)" msgstr "Joukkuehaaste (1 x 0.33 L, 2 x 0.5 L, 1 x 1.0 L)" -#: ohlhafv/models.py:33 +#: ohlhafv/models.py:32 msgid "Challenger" msgstr "Haastaja" -#: ohlhafv/models.py:34 +#: ohlhafv/models.py:33 msgid "Victim" msgstr "Uhri" -#: ohlhafv/models.py:35 +#: ohlhafv/models.py:34 msgid "Victim email" msgstr "Uhrin sähköpostiosoite" -#: ohlhafv/models.py:36 +#: ohlhafv/models.py:35 msgid "Series" msgstr "Sarja" -#: ohlhafv/models.py:41 +#: ohlhafv/models.py:40 msgid "Ohlhafv challenge: {} vs. {}" msgstr "Ohlhafv-haaste: {} vs. {}" @@ -903,6 +903,50 @@ msgstr "Haasta" msgid "Sinut on haastettu Øhlhäfviin!" msgstr "" +#: signup/models.py:14 webapp/models.py:16 +msgid "Webapp" +msgstr "Nettisivut" + +#: signup/models.py:26 +msgid "Event: {}" +msgstr "Tapahtuma: {}" + +#: signup/models.py:29 +msgid "Event" +msgstr "Tapahtuma" + +#: signup/models.py:40 +msgid "Template questions: {}" +msgstr "Vakiokysymykset: {}" + +#: signup/models.py:43 +msgid "Template question" +msgstr "Vakiokysymys" + +#: signup/models.py:44 +msgid "Template questions" +msgstr "Vakiokysymykset" + +#: signup/models.py:56 +msgid "Signup form" +msgstr "Ilmoittautumislomake" + +#: signup/models.py:57 +msgid "Signup forms" +msgstr "Ilmoittautumislomakkeet" + +#: signup/models.py:66 +msgid "Sign-ups: {}" +msgstr "Ilmoittautumiset: {}" + +#: signup/models.py:69 +msgid "Sign-up" +msgstr "Ilmoittautuminen" + +#: signup/models.py:70 +msgid "Sign-ups" +msgstr "Ilmoittautumiset" + #: templates/admin/base_site.html:43 msgid "Go" msgstr "Vaihda" @@ -974,91 +1018,67 @@ msgstr "" "Sähköposti on lähetetty osoitteeseen %(email)s %(ago)s:a " "sitten. Käytä linkkiä asettaaksesi uuden salasanan." -#: webapp/models.py:17 -msgid "Webapp" -msgstr "Nettisivut" - -#: webapp/models.py:28 +#: webapp/models.py:27 msgid "Tag" msgstr "Tunniste" -#: webapp/models.py:29 +#: webapp/models.py:28 msgid "Tags" msgstr "Tunnisteet" -#: webapp/models.py:32 +#: webapp/models.py:31 msgid "Tag: {}" msgstr "Tunniste: {}" -#: webapp/models.py:52 +#: webapp/models.py:51 msgid "Feed: {}" msgstr "Uutinen: {}" -#: webapp/models.py:55 +#: webapp/models.py:54 msgid "Feed" msgstr "Uutinen" -#: webapp/models.py:56 +#: webapp/models.py:55 msgid "Feeds" msgstr "Uutiset" -#: webapp/models.py:68 -msgid "Event: {}" -msgstr "Tapahtuma: {}" - -#: webapp/models.py:71 -msgid "Event" -msgstr "Tapahtuma" - -#: webapp/models.py:83 -msgid "Registration: {}" -msgstr "Registration: {}" - -#: webapp/models.py:86 -msgid "Registration" -msgstr "Ilmoittautuminen" - -#: webapp/models.py:87 -msgid "Registrations" -msgstr "Ilmoittautumiset" - -#: webapp/models.py:116 +#: webapp/models.py:66 msgid "board member" msgstr "hallituksen jäsen" -#: webapp/models.py:122 +#: webapp/models.py:72 msgid "Description" msgstr "Kuvaus" -#: webapp/models.py:134 +#: webapp/models.py:84 msgid "Committee" msgstr "Toimikunta" -#: webapp/models.py:135 +#: webapp/models.py:85 msgid "Committees" msgstr "Toimikunnat" -#: webapp/models.py:138 +#: webapp/models.py:88 msgid "Committee: {}" msgstr "Toimikunta: {}" -#: webapp/models.py:158 +#: webapp/models.py:108 msgid "Role" msgstr "Rooli" -#: webapp/models.py:161 +#: webapp/models.py:111 msgid "Start date" msgstr "Alkupäivämäärä" -#: webapp/models.py:162 +#: webapp/models.py:112 msgid "End date" msgstr "Loppupäivämäärä" -#: webapp/models.py:172 +#: webapp/models.py:122 msgid "Official" msgstr "Toimihenkilö" -#: webapp/models.py:173 +#: webapp/models.py:123 msgid "Officials" msgstr "Toimihenkilöt" @@ -1114,6 +1134,15 @@ msgstr "Sössö" msgid "Corporate" msgstr "Yritys" +#~ msgid "Registration: {}" +#~ msgstr "Registration: {}" + +#~ msgid "Registration" +#~ msgstr "Ilmoittautuminen" + +#~ msgid "Registrations" +#~ msgstr "Ilmoittautumiset" + #~ msgid "Corporate affairs" #~ msgstr "Yrityssuhteet" diff --git a/ohlhafv/models.py b/ohlhafv/models.py index 1b06a19..3691ff7 100644 --- a/ohlhafv/models.py +++ b/ohlhafv/models.py @@ -9,7 +9,6 @@ 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 import logging diff --git a/webapp/admin.py b/webapp/admin.py index b39ac96..2059a1d 100644 --- a/webapp/admin.py +++ b/webapp/admin.py @@ -2,7 +2,7 @@ from django.contrib import admin from webapp.models import Official, Role, Committee -from webapp.models import Feed, Tag, BaseFeed, Event, Registration +from webapp.models import Feed, Tag, BaseFeed, Event, Signup, SignupForm, TemplateQuestion from modeltranslation.admin import TranslationAdmin from django.contrib.auth.models import Permission # this is needed so that the models get registered for translation @@ -13,7 +13,9 @@ admin.site.register(Permission) admin.site.register(Feed, TranslationAdmin) admin.site.register(Tag, TranslationAdmin) admin.site.register(Event, TranslationAdmin) -admin.site.register(Registration, TranslationAdmin) +admin.site.register(SignupForm, TranslationAdmin) +admin.site.register(Signup, TranslationAdmin) +admin.site.register(TemplateQuestion, TranslationAdmin) admin.site.register(Official) admin.site.register(Role) admin.site.register(Committee) diff --git a/webapp/migrations/0043_auto_20180605_1953.py b/webapp/migrations/0043_auto_20180605_1953.py new file mode 100644 index 0000000..d449b36 --- /dev/null +++ b/webapp/migrations/0043_auto_20180605_1953.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11 on 2018-06-05 16:53 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('webapp', '0042_merge_20180516_2249'), + ] + + operations = [ + migrations.RemoveField( + model_name='event', + name='basefeed_ptr', + ), + migrations.RemoveField( + model_name='event', + name='registration', + ), + migrations.DeleteModel( + name='Event', + ), + migrations.DeleteModel( + name='Registration', + ), + ] diff --git a/webapp/migrations/0044_auto_20180705_1851.py b/webapp/migrations/0044_auto_20180705_1851.py new file mode 100644 index 0000000..7b43419 --- /dev/null +++ b/webapp/migrations/0044_auto_20180705_1851.py @@ -0,0 +1,77 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11 on 2018-07-05 15:51 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('webapp', '0043_auto_20180605_1953'), + ] + + operations = [ + migrations.CreateModel( + name='Event', + fields=[ + ('basefeed_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='webapp.BaseFeed')), + ('start_time', models.DateTimeField(default=django.utils.timezone.now)), + ('end_time', models.DateTimeField(default=django.utils.timezone.now)), + ], + options={ + 'verbose_name': 'Event', + 'verbose_name_plural': 'Events', + }, + bases=('webapp.basefeed',), + ), + migrations.CreateModel( + name='Signup', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('time', models.DateTimeField(default=django.utils.timezone.now)), + ('answer', models.CharField(max_length=255)), + ], + options={ + 'verbose_name': 'Sign-up', + 'verbose_name_plural': 'Sign-ups', + }, + ), + migrations.CreateModel( + name='SignupForm', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('start', models.DateTimeField(default=django.utils.timezone.now)), + ('end', models.DateTimeField(default=django.utils.timezone.now)), + ('question', models.CharField(max_length=255)), + ], + options={ + 'verbose_name': 'Signup form', + 'verbose_name_plural': 'Signup forms', + }, + ), + migrations.CreateModel( + name='TemplateQuestion', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255)), + ('question', models.CharField(max_length=255)), + ], + options={ + 'verbose_name': 'Template question', + 'verbose_name_plural': 'Template questions', + }, + ), + migrations.AddField( + model_name='signup', + name='signupForm', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='webapp.SignupForm'), + ), + migrations.AddField( + model_name='event', + name='signupForm', + field=models.ManyToManyField(blank=True, to='webapp.SignupForm'), + ), + ] diff --git a/webapp/migrations/0045_auto_20180710_1901.py b/webapp/migrations/0045_auto_20180710_1901.py new file mode 100644 index 0000000..eeced4e --- /dev/null +++ b/webapp/migrations/0045_auto_20180710_1901.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11 on 2018-07-10 16:01 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('webapp', '0044_auto_20180705_1851'), + ] + + operations = [ + migrations.RenameField( + model_name='signupform', + old_name='question', + new_name='questions', + ), + ] diff --git a/webapp/migrations/0046_auto_20180710_2041.py b/webapp/migrations/0046_auto_20180710_2041.py new file mode 100644 index 0000000..161e88d --- /dev/null +++ b/webapp/migrations/0046_auto_20180710_2041.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11 on 2018-07-10 17:41 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('webapp', '0045_auto_20180710_1901'), + ] + + operations = [ + migrations.RemoveField( + model_name='event', + name='signupForm', + ), + migrations.AddField( + model_name='event', + name='signupForm', + field=models.ForeignKey(blank=True, default=0, on_delete=django.db.models.deletion.CASCADE, to='webapp.SignupForm'), + preserve_default=False, + ), + ] diff --git a/webapp/migrations/0047_auto_20180710_2110.py b/webapp/migrations/0047_auto_20180710_2110.py new file mode 100644 index 0000000..3f0732e --- /dev/null +++ b/webapp/migrations/0047_auto_20180710_2110.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11 on 2018-07-10 18:10 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('webapp', '0046_auto_20180710_2041'), + ] + + operations = [ + migrations.RemoveField( + model_name='event', + name='signupForm', + ), + migrations.AddField( + model_name='event', + name='signupForm', + field=models.ManyToManyField(blank=True, to='webapp.SignupForm'), + ), + ] diff --git a/webapp/models.py b/webapp/models.py index 55e4aa0..d455b0a 100644 --- a/webapp/models.py +++ b/webapp/models.py @@ -2,16 +2,16 @@ from django.db import models from django.utils import timezone -from datetime import timedelta +# from datetime import timedelta from django.contrib.auth.models import User from webapp.utils import month_from_now from django.utils.translation import ugettext_lazy as _ -from django.contrib.auth.models import User +# 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 +# from django.contrib.postgres.fields import JSONField -import logging +# import logging VERBOSE_NAME = _('Webapp') @@ -61,8 +61,8 @@ class Event(BaseFeed): start_time = models.DateTimeField(default=timezone.now) end_time = models.DateTimeField(default=timezone.now) - registration = models.ForeignKey( - 'Registration', on_delete=models.CASCADE, null=True) + signupForm = models.ManyToManyField( + 'SignupForm', blank=True) def __str__(self): return _('Event: {}').format(self.title) @@ -72,19 +72,44 @@ class Event(BaseFeed): verbose_name_plural = _('Events') -class Registration(models.Model): - """Model for event registration.""" - +class TemplateQuestion(models.Model): + """Stores template questions for signup forms as JSONB""" + # question = JSONField() name = models.CharField(max_length=255) - email = models.EmailField() - options = JSONField() + question = models.CharField(max_length=255) def __str__(self): - return _('Registration: {}').format(self.name) + return _('Template questions: {}').format(self.name) class Meta: - verbose_name = _('Registration') - verbose_name_plural = _('Registrations') + verbose_name = _('Template question') + verbose_name_plural = _('Template questions') + + +class SignupForm(models.Model): + """Model for event signup form. Stores questions in JSONB.""" + + start = models.DateTimeField(default=timezone.now) + end = models.DateTimeField(default=timezone.now) + # question = JSONField() + questions = models.CharField(max_length=255) + + class Meta: + verbose_name = _('Signup form') + verbose_name_plural = _('Signup forms') + + +class Signup(models.Model): + signupForm = models.ForeignKey('SignupForm', on_delete=models.CASCADE) + time = models.DateTimeField(default=timezone.now) + answer = models.CharField(max_length=255) + + def __str__(self): + return _('Sign-ups: {}').format(self.signupForm) + + class Meta: + verbose_name = _('Sign-up') + verbose_name_plural = _('Sign-ups') class BaseRole(models.Model): @@ -182,6 +207,7 @@ class Official(User): auditlog.register(Tag) auditlog.register(Feed) auditlog.register(Event) +auditlog.register(Signup) auditlog.register(PresetRole) auditlog.register(Role) auditlog.register(Official) diff --git a/webapp/serializers.py b/webapp/serializers.py new file mode 100644 index 0000000..1e9745f --- /dev/null +++ b/webapp/serializers.py @@ -0,0 +1,42 @@ +from rest_framework import serializers +from webapp.models import * + + +class SignupFormSerializer(serializers.HyperlinkedModelSerializer): + + class Meta: + model = SignupForm + fields = ('id', 'start', 'end', 'questions') + + +class EventSerializer(serializers.HyperlinkedModelSerializer): + signupForm = SignupFormSerializer(many=True, read_only=True, required=False) + signup_id = serializers.PrimaryKeyRelatedField( + many=True, + source="signupForm", + queryset=SignupForm.objects.all()) + + class Meta: + model = Event + fields = ('id', 'tags', 'visible', 'title', 'description', + 'content', 'start_time', 'end_time', 'signup_id', 'signupForm') + depth = 1 + + def create(self, validated_data): + signupForms = validated_data.pop('signupForm') + event = Event.objects.create(**validated_data) + for signupForm in signupForms: + event.signupForm.add(signupForm) + event.save() + return event + + +class SignupSerializer(serializers.ModelSerializer): + class Meta: + model = Signup + fields = ('id', 'signupForm', 'answer') + extra_kwargs = { + 'url': { + 'view_name': 'signup-detail', + } + } diff --git a/webapp/translation.py b/webapp/translation.py index 3ab2c6e..73713ca 100644 --- a/webapp/translation.py +++ b/webapp/translation.py @@ -1,7 +1,7 @@ """Translation classes.""" from modeltranslation.translator import register, TranslationOptions -from webapp.models import BaseFeed, Feed, Tag, Event, Registration +from webapp.models import BaseFeed, Feed, Tag, Event, Signup, SignupForm, TemplateQuestion from webapp.models import PresetRole, BaseRole @@ -19,13 +19,6 @@ class FeedTranslationOptions(TranslationOptions): fields = () -@register(Event) -class EventTranslationOptions(TranslationOptions): - """Class for event translation options.""" - - fields = () - - @register(Tag) class TagTranslationOptions(TranslationOptions): """Class for tag translation options.""" @@ -33,11 +26,32 @@ class TagTranslationOptions(TranslationOptions): fields = ('name',) -@register(Registration) -class RegistrationTranslationOptions(TranslationOptions): +@register(Event) +class EventTranslationOptions(TranslationOptions): + """Class for event translation options.""" + + fields = () + + +@register(Signup) +class SignupTranslationOptions(TranslationOptions): """Class for registration translation options.""" - fields = ('name',) + fields = () + + +@register(SignupForm) +class SignupFormTranslationOptions(TranslationOptions): + """Class for registration translation options.""" + + fields = () + + +@register(TemplateQuestion) +class TemplateQuestionTranslationOptions(TranslationOptions): + """Class for registration translation options.""" + + fields = () @register(BaseRole) diff --git a/webapp/urls.py b/webapp/urls.py index 8095c52..dfd12a9 100644 --- a/webapp/urls.py +++ b/webapp/urls.py @@ -1,45 +1,70 @@ """Webapp urls.""" -from django.conf.urls import url -from django.conf import settings -from django.utils.translation import ugettext_lazy as _ +from django.conf.urls import url, include +from rest_framework import routers +# 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 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 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 + +router = routers.DefaultRouter() +router.register(r'events', EventViewSet) +router.register(r'signupForm', SignupFormViewSet) +router.register(r'signup', SignupViewSet) urlpatterns = [ - # main - url(r'^$', main_index), - + url(r'^', include(router.urls)), # login stuff url(r'^login$', login_view), url(r'^logout$', logout_view), - - # 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), - url(r'^international', international_view), - url(r'^sosso', sosso_view), - url(r'^contact', contact_view), - - # corporate - url(r'^jobs', jobs_view), ] +# urlpatterns = [ +# # main +# url(r'^$', main_index), +# url(r'^api/$', api_root), +# url(r'^api/events/$', EventList.as_view(), name='event-list'), +# url(r'^api/events/(?P[0-9]+)/$', EventDetail.as_view(), name='event-detail'), +# url(r'^api/signup/$', SignupFormList.as_view(), name='signupform-list'), +# url(r'^api/signup/(?P[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[0-9]+)/$', SignupFormDetail.as_view(), name='signupform-detail'), + +# # login stuff +# url(r'^login$', login_view), +# url(r'^logout$', logout_view), + +# # 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), +# 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() +# if settings.DEBUG: +# from django.contrib.staticfiles.urls import staticfiles_urlpatterns +# urlpatterns += staticfiles_urlpatterns() diff --git a/webapp/views.py b/webapp/views.py index bbb0715..2b364fa 100644 --- a/webapp/views.py +++ b/webapp/views.py @@ -1,22 +1,52 @@ """Webapp views.""" -from django.db.models import Count +# from django.db.models import Count from django.shortcuts import render, redirect from django.contrib.auth import login, logout, authenticate from django.views.decorators.http import require_http_methods -from django.views.decorators.csrf import ensure_csrf_cookie -from django.http import HttpResponse, HttpResponseRedirect -from django.contrib.auth.decorators import permission_required, login_required -from django.conf import settings -from django.utils import timezone +# from django.views.decorators.csrf import ensure_csrf_cookie +# from django.http import HttpResponse, HttpResponseRedirect +# from django.contrib.auth.decorators import permission_required, login_required +# from django.conf import settings +# from django.utils import timezone +from rest_framework.decorators import api_view +from rest_framework import viewsets +# from rest_framework import permissions, authentication +from rest_framework.response import Response +from rest_framework.reverse import reverse -import logging -import requests +# import logging +# import requests from dealer.git import git -from webapp.models import Official, Committee +from webapp.models import Event, SignupForm, Signup, Committee +from webapp.serializers import EventSerializer, SignupFormSerializer, SignupSerializer from members.views.utils import * +# -- REST API -- # + + +@api_view(['GET']) +def api_root(request, format=None): + return Response({'events': reverse('event-list', request=request, format=format), }) + + +class EventViewSet(viewsets.ModelViewSet): + queryset = Event.objects.all() + serializer_class = EventSerializer + + +class SignupFormViewSet(viewsets.ModelViewSet): + queryset = SignupForm.objects.all() + serializer_class = SignupFormSerializer + + +class SignupViewSet(viewsets.ModelViewSet): + queryset = Signup.objects.all() + serializer_class = SignupSerializer + + +# -- OLD CODEBASE -- # @require_http_methods(["GET"]) def main_index(request, *args, **kwargs):