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:
Aarni Halinen
2019-11-03 15:58:18 +00:00
14 changed files with 372 additions and 146 deletions
+56 -39
View File
@@ -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"
+57 -39
View File
@@ -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
View File
@@ -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'),
),
]
+18
View File
@@ -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
View File
@@ -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
View File
@@ -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')
+8 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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]