From 699dbb2e2f0efcb13cf87f06ab857bf2833784ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bodor=20M=C3=A1t=C3=A9?= <bodor.mate@kszk.bme.hu> Date: Sat, 29 Dec 2018 18:41:35 +0100 Subject: [PATCH] Create event note serializer and view, create middelware for get current profile and update news --- .gitignore | 3 ++ src/account/migrations/0001_initial.py | 33 +++++++++++++---- .../migrations/0002_auto_20171114_2144.py | 20 ----------- src/account/migrations/0003_profile_nick.py | 20 ----------- src/account/migrations/0004_profile_signed.py | 20 ----------- .../migrations/0005_auto_20171223_1455.py | 20 ----------- .../migrations/0006_auto_20180123_1713.py | 36 ------------------- .../migrations/0007_auto_20180123_1723.py | 24 ------------- .../migrations/0008_auto_20180124_1821.py | 22 ------------ .../migrations/0009_profile_motivation.py | 20 ----------- .../migrations/0010_auto_20180124_1929.py | 33 ----------------- src/account/migrations/0011_deadline.py | 25 ------------- .../migrations/0012_auto_20180125_1957.py | 20 ----------- .../migrations/0013_auto_20180203_2007.py | 18 ---------- .../migrations/0014_auto_20180203_2010.py | 18 ---------- .../migrations/0015_auto_20180203_2014.py | 23 ------------ .../migrations/0016_auto_20180203_2022.py | 23 ------------ .../migrations/0017_auto_20180205_2004.py | 28 --------------- src/account/views.py | 1 - src/common/middleware.py | 16 +++++++++ src/homework/migrations/0001_initial.py | 7 ++-- .../migrations/0002_auto_20180411_0047.py | 22 ------------ src/kszkepzes/settings/base.py | 3 +- src/news/migrations/0001_initial.py | 12 +++---- .../migrations/0002_auto_20171220_1852.py | 20 ----------- .../migrations/0003_auto_20180126_0135.py | 29 --------------- src/news/models.py | 13 ++++++- src/news/serializers.py | 13 ++++--- src/news/urls.py | 2 +- src/news/views.py | 6 ++-- src/stats/migrations/0001_initial.py | 26 ++++++++++---- .../migrations/0002_auto_20171111_1646.py | 20 ----------- .../migrations/0003_auto_20171114_2026.py | 20 ----------- .../0004_remove_kszkevent_num_of_pers.py | 19 ---------- .../migrations/0005_auto_20180214_2206.py | 30 ---------------- .../migrations/0006_auto_20180214_2239.py | 19 ---------- .../migrations/0007_auto_20180215_0018.py | 18 ---------- src/stats/migrations/0008_note.py | 27 -------------- src/stats/models.py | 8 +++-- src/stats/serializers.py | 15 +++++++- src/stats/urls.py | 4 +-- src/stats/views.py | 8 +++++ 42 files changed, 130 insertions(+), 634 deletions(-) delete mode 100644 src/account/migrations/0002_auto_20171114_2144.py delete mode 100644 src/account/migrations/0003_profile_nick.py delete mode 100644 src/account/migrations/0004_profile_signed.py delete mode 100644 src/account/migrations/0005_auto_20171223_1455.py delete mode 100644 src/account/migrations/0006_auto_20180123_1713.py delete mode 100644 src/account/migrations/0007_auto_20180123_1723.py delete mode 100644 src/account/migrations/0008_auto_20180124_1821.py delete mode 100644 src/account/migrations/0009_profile_motivation.py delete mode 100644 src/account/migrations/0010_auto_20180124_1929.py delete mode 100644 src/account/migrations/0011_deadline.py delete mode 100644 src/account/migrations/0012_auto_20180125_1957.py delete mode 100644 src/account/migrations/0013_auto_20180203_2007.py delete mode 100644 src/account/migrations/0014_auto_20180203_2010.py delete mode 100644 src/account/migrations/0015_auto_20180203_2014.py delete mode 100644 src/account/migrations/0016_auto_20180203_2022.py delete mode 100644 src/account/migrations/0017_auto_20180205_2004.py create mode 100644 src/common/middleware.py mode change 100755 => 100644 src/homework/migrations/0001_initial.py delete mode 100644 src/homework/migrations/0002_auto_20180411_0047.py delete mode 100644 src/news/migrations/0002_auto_20171220_1852.py delete mode 100644 src/news/migrations/0003_auto_20180126_0135.py delete mode 100644 src/stats/migrations/0002_auto_20171111_1646.py delete mode 100644 src/stats/migrations/0003_auto_20171114_2026.py delete mode 100644 src/stats/migrations/0004_remove_kszkevent_num_of_pers.py delete mode 100644 src/stats/migrations/0005_auto_20180214_2206.py delete mode 100644 src/stats/migrations/0006_auto_20180214_2239.py delete mode 100644 src/stats/migrations/0007_auto_20180215_0018.py delete mode 100644 src/stats/migrations/0008_note.py diff --git a/.gitignore b/.gitignore index d347aa2..ffb3de3 100644 --- a/.gitignore +++ b/.gitignore @@ -108,3 +108,6 @@ ENV/ environment.sh environment.ps1 environment.bat + +#PyCharm +.idea/ \ No newline at end of file diff --git a/src/account/migrations/0001_initial.py b/src/account/migrations/0001_initial.py index 8c4b526..37a8b78 100644 --- a/src/account/migrations/0001_initial.py +++ b/src/account/migrations/0001_initial.py @@ -1,6 +1,4 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2017-11-11 14:13 -from __future__ import unicode_literals +# Generated by Django 2.0.1 on 2018-12-24 16:02 from django.conf import settings from django.db import migrations, models @@ -16,13 +14,36 @@ class Migration(migrations.Migration): ] operations = [ + migrations.CreateModel( + name='Deadline', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('deadline', models.DateTimeField(null=True)), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='GroupChoice', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('choice', models.CharField(choices=[('DT', 'DevTeam'), ('NET', 'NeTeam'), ('ST', 'SecurITeam'), ('SYS', 'SysAdmin'), ('HAT', 'HallgatĂłi TudĂĄsbĂĄzis'), ('N', 'None')], default='N', max_length=10, unique=True)), + ], + ), migrations.CreateModel( name='Profile', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('join_date', models.DateField()), - ('pref_group', models.CharField(choices=[('DT', 'DevTeam'), ('NET', 'NeTeam'), ('ST', 'SecurITeam'), ('SYS', 'SysAdmin'), ('N', 'None')], default='None', max_length=10)), - ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ('join_date', models.DateTimeField(auto_now_add=True)), + ('updated_at', models.DateTimeField(auto_now=True)), + ('motivation_about', models.TextField(blank=True, default='')), + ('motivation_profession', models.TextField(blank=True, default='')), + ('motivation_exercise', models.TextField(blank=True, default='')), + ('nick', models.CharField(blank=True, default='', max_length=15)), + ('signed', models.BooleanField(default=False)), + ('groups', models.ManyToManyField(related_name='profiles', to='account.GroupChoice')), + ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='profile', to=settings.AUTH_USER_MODEL)), ], ), ] diff --git a/src/account/migrations/0002_auto_20171114_2144.py b/src/account/migrations/0002_auto_20171114_2144.py deleted file mode 100644 index fc76cef..0000000 --- a/src/account/migrations/0002_auto_20171114_2144.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2017-11-14 20:44 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='profile', - name='pref_group', - field=models.CharField(choices=[('DT', 'DevTeam'), ('NET', 'NeTeam'), ('ST', 'SecurITeam'), ('SYS', 'SysAdmin'), ('HAT', 'HallgatĂłi TudĂĄsbĂĄzis'), ('N', 'None')], default='None', max_length=10), - ), - ] diff --git a/src/account/migrations/0003_profile_nick.py b/src/account/migrations/0003_profile_nick.py deleted file mode 100644 index 7a35427..0000000 --- a/src/account/migrations/0003_profile_nick.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2017-12-23 11:06 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0002_auto_20171114_2144'), - ] - - operations = [ - migrations.AddField( - model_name='profile', - name='nick', - field=models.CharField(blank=True, max_length=15, null=True), - ), - ] diff --git a/src/account/migrations/0004_profile_signed.py b/src/account/migrations/0004_profile_signed.py deleted file mode 100644 index 4244073..0000000 --- a/src/account/migrations/0004_profile_signed.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2017-12-23 11:10 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0003_profile_nick'), - ] - - operations = [ - migrations.AddField( - model_name='profile', - name='signed', - field=models.BooleanField(default=False), - ), - ] diff --git a/src/account/migrations/0005_auto_20171223_1455.py b/src/account/migrations/0005_auto_20171223_1455.py deleted file mode 100644 index d5e5fb8..0000000 --- a/src/account/migrations/0005_auto_20171223_1455.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2017-12-23 13:55 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0004_profile_signed'), - ] - - operations = [ - migrations.AlterField( - model_name='profile', - name='join_date', - field=models.DateField(auto_now=True), - ), - ] diff --git a/src/account/migrations/0006_auto_20180123_1713.py b/src/account/migrations/0006_auto_20180123_1713.py deleted file mode 100644 index 035ce31..0000000 --- a/src/account/migrations/0006_auto_20180123_1713.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2018-01-23 16:13 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0005_auto_20171223_1455'), - ] - - operations = [ - migrations.CreateModel( - name='GroupChoice', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('pref_group', models.CharField(choices=[('DT', 'DevTeam'), ('NET', 'NeTeam'), ('ST', 'SecurITeam'), ('SYS', 'SysAdmin'), ('HAT', 'HallgatĂłi TudĂĄsbĂĄzis'), ('N', 'None')], default='None', max_length=10)), - ], - ), - migrations.RemoveField( - model_name='profile', - name='pref_group', - ), - migrations.AddField( - model_name='groupchoice', - name='profile', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='preferd_groups', to='account.Profile'), - ), - migrations.AlterUniqueTogether( - name='groupchoice', - unique_together=set([('pref_group', 'profile')]), - ), - ] diff --git a/src/account/migrations/0007_auto_20180123_1723.py b/src/account/migrations/0007_auto_20180123_1723.py deleted file mode 100644 index 27a4efe..0000000 --- a/src/account/migrations/0007_auto_20180123_1723.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2018-01-23 16:23 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0006_auto_20180123_1713'), - ] - - operations = [ - migrations.RenameField( - model_name='groupchoice', - old_name='pref_group', - new_name='choice', - ), - migrations.AlterUniqueTogether( - name='groupchoice', - unique_together=set([('choice', 'profile')]), - ), - ] diff --git a/src/account/migrations/0008_auto_20180124_1821.py b/src/account/migrations/0008_auto_20180124_1821.py deleted file mode 100644 index fd3af44..0000000 --- a/src/account/migrations/0008_auto_20180124_1821.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2018-01-24 17:21 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0007_auto_20180123_1723'), - ] - - operations = [ - migrations.AlterField( - model_name='profile', - name='user', - field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='profile', to=settings.AUTH_USER_MODEL), - ), - ] diff --git a/src/account/migrations/0009_profile_motivation.py b/src/account/migrations/0009_profile_motivation.py deleted file mode 100644 index c9d1e0a..0000000 --- a/src/account/migrations/0009_profile_motivation.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2018-01-24 17:43 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0008_auto_20180124_1821'), - ] - - operations = [ - migrations.AddField( - model_name='profile', - name='motivation', - field=models.TextField(null=True), - ), - ] diff --git a/src/account/migrations/0010_auto_20180124_1929.py b/src/account/migrations/0010_auto_20180124_1929.py deleted file mode 100644 index 2a9b50d..0000000 --- a/src/account/migrations/0010_auto_20180124_1929.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2018-01-24 18:29 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0009_profile_motivation'), - ] - - operations = [ - migrations.AddField( - model_name='profile', - name='groups', - field=models.ManyToManyField(related_name='profiles', to='account.GroupChoice'), - ), - migrations.AlterField( - model_name='groupchoice', - name='choice', - field=models.CharField(choices=[('DT', 'DevTeam'), ('NET', 'NeTeam'), ('ST', 'SecurITeam'), ('SYS', 'SysAdmin'), ('HAT', 'HallgatĂłi TudĂĄsbĂĄzis'), ('N', 'None')], default='N', max_length=10, unique=True), - ), - migrations.AlterUniqueTogether( - name='groupchoice', - unique_together=set([]), - ), - migrations.RemoveField( - model_name='groupchoice', - name='profile', - ), - ] diff --git a/src/account/migrations/0011_deadline.py b/src/account/migrations/0011_deadline.py deleted file mode 100644 index e88ed12..0000000 --- a/src/account/migrations/0011_deadline.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2018-01-25 18:42 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0010_auto_20180124_1929'), - ] - - operations = [ - migrations.CreateModel( - name='Deadline', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('deadline', models.DateField()), - ], - options={ - 'abstract': False, - }, - ), - ] diff --git a/src/account/migrations/0012_auto_20180125_1957.py b/src/account/migrations/0012_auto_20180125_1957.py deleted file mode 100644 index 92845d1..0000000 --- a/src/account/migrations/0012_auto_20180125_1957.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2018-01-25 18:57 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0011_deadline'), - ] - - operations = [ - migrations.AlterField( - model_name='deadline', - name='deadline', - field=models.DateField(null=True), - ), - ] diff --git a/src/account/migrations/0013_auto_20180203_2007.py b/src/account/migrations/0013_auto_20180203_2007.py deleted file mode 100644 index 8ac041e..0000000 --- a/src/account/migrations/0013_auto_20180203_2007.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.0.1 on 2018-02-03 19:07 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0012_auto_20180125_1957'), - ] - - operations = [ - migrations.AlterField( - model_name='profile', - name='join_date', - field=models.DateTimeField(auto_now=True), - ), - ] diff --git a/src/account/migrations/0014_auto_20180203_2010.py b/src/account/migrations/0014_auto_20180203_2010.py deleted file mode 100644 index 0ad3c05..0000000 --- a/src/account/migrations/0014_auto_20180203_2010.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.0.1 on 2018-02-03 19:10 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0013_auto_20180203_2007'), - ] - - operations = [ - migrations.AlterField( - model_name='deadline', - name='deadline', - field=models.DateTimeField(null=True), - ), - ] diff --git a/src/account/migrations/0015_auto_20180203_2014.py b/src/account/migrations/0015_auto_20180203_2014.py deleted file mode 100644 index e823387..0000000 --- a/src/account/migrations/0015_auto_20180203_2014.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 2.0.1 on 2018-02-03 19:14 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0014_auto_20180203_2010'), - ] - - operations = [ - migrations.AddField( - model_name='profile', - name='updated_at', - field=models.DateTimeField(auto_now=True), - ), - migrations.AlterField( - model_name='profile', - name='join_date', - field=models.DateTimeField(auto_now_add=True), - ), - ] diff --git a/src/account/migrations/0016_auto_20180203_2022.py b/src/account/migrations/0016_auto_20180203_2022.py deleted file mode 100644 index 86c2ae6..0000000 --- a/src/account/migrations/0016_auto_20180203_2022.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 2.0.1 on 2018-02-03 19:22 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0015_auto_20180203_2014'), - ] - - operations = [ - migrations.AlterField( - model_name='profile', - name='motivation', - field=models.TextField(blank=True, default=''), - ), - migrations.AlterField( - model_name='profile', - name='nick', - field=models.CharField(blank=True, default='', max_length=15), - ), - ] diff --git a/src/account/migrations/0017_auto_20180205_2004.py b/src/account/migrations/0017_auto_20180205_2004.py deleted file mode 100644 index d2137f9..0000000 --- a/src/account/migrations/0017_auto_20180205_2004.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 2.0.1 on 2018-02-05 19:04 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0016_auto_20180203_2022'), - ] - - operations = [ - migrations.RenameField( - model_name='profile', - old_name='motivation', - new_name='motivation_about', - ), - migrations.AddField( - model_name='profile', - name='motivation_exercise', - field=models.TextField(blank=True, default=''), - ), - migrations.AddField( - model_name='profile', - name='motivation_profession', - field=models.TextField(blank=True, default=''), - ), - ] diff --git a/src/account/views.py b/src/account/views.py index fde64a8..9ceaeb8 100644 --- a/src/account/views.py +++ b/src/account/views.py @@ -15,7 +15,6 @@ class ProfileViewSet(viewsets.ModelViewSet): user = self.request.user if user.has_perm(permissions.IsAdminUser): return models.Profile.objects.all() - return models.Profile.objects.filter(pk=user.profile.id) @list_route(methods=['get']) diff --git a/src/common/middleware.py b/src/common/middleware.py new file mode 100644 index 0000000..fd40451 --- /dev/null +++ b/src/common/middleware.py @@ -0,0 +1,16 @@ +from threading import local + +_profile = local() + + +class CurrentUserMiddleware(object): + + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + _profile.value = request.user + return self.get_response(request) + + def get_current_profile(): + return _profile.value.profile diff --git a/src/homework/migrations/0001_initial.py b/src/homework/migrations/0001_initial.py old mode 100755 new mode 100644 index b92796b..24fda6e --- a/src/homework/migrations/0001_initial.py +++ b/src/homework/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 2.0.1 on 2018-04-05 08:33 +# Generated by Django 2.0.1 on 2018-12-24 16:02 import common.validators import django.core.validators @@ -11,7 +11,7 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('account', '0017_auto_20180205_2004'), + ('account', '0001_initial'), ] operations = [ @@ -21,8 +21,7 @@ class Migration(migrations.Migration): ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), - ('ready', models.BooleanField(default=False)), - ('accepted', models.BooleanField(default=False)), + ('accepted', models.BooleanField()), ('files', models.FileField(upload_to='', validators=[django.core.validators.FileExtensionValidator(['png', 'jpeg', 'jpg', 'zip']), common.validators.FileSizeValidator(size_limit=52428800)])), ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='student_solution', to='account.Profile')), ], diff --git a/src/homework/migrations/0002_auto_20180411_0047.py b/src/homework/migrations/0002_auto_20180411_0047.py deleted file mode 100644 index cafe25c..0000000 --- a/src/homework/migrations/0002_auto_20180411_0047.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 2.0.1 on 2018-04-10 22:47 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('homework', '0001_initial'), - ] - - operations = [ - migrations.RemoveField( - model_name='solution', - name='ready', - ), - migrations.AlterField( - model_name='solution', - name='accepted', - field=models.BooleanField(), - ), - ] diff --git a/src/kszkepzes/settings/base.py b/src/kszkepzes/settings/base.py index dd73603..81c4c31 100644 --- a/src/kszkepzes/settings/base.py +++ b/src/kszkepzes/settings/base.py @@ -38,7 +38,7 @@ INSTALLED_APPS = [ 'django.contrib.messages', 'django.contrib.staticfiles', 'django_extensions', - 'import_export', + 'import_export', 'rest_framework', 'social_django', 'solo', @@ -58,6 +58,7 @@ MIDDLEWARE = [ 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'common.middleware.CurrentUserMiddleware', ] ROOT_URLCONF = 'kszkepzes.urls' diff --git a/src/news/migrations/0001_initial.py b/src/news/migrations/0001_initial.py index 3e3bf0c..fb34277 100644 --- a/src/news/migrations/0001_initial.py +++ b/src/news/migrations/0001_initial.py @@ -1,6 +1,4 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2017-11-28 19:55 -from __future__ import unicode_literals +# Generated by Django 2.0.1 on 2018-12-24 16:02 from django.db import migrations, models import django.db.models.deletion @@ -11,7 +9,7 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('account', '0002_auto_20171114_2144'), + ('account', '0001_initial'), ] operations = [ @@ -21,8 +19,10 @@ class Migration(migrations.Migration): ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=200)), ('text', models.TextField()), - ('date', models.DateTimeField()), - ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='author', to='account.Profile')), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('updated_at', models.DateTimeField(auto_now=True)), + ('author', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='author', to='account.Profile')), + ('updated_by', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='updater', to='account.Profile')), ], ), ] diff --git a/src/news/migrations/0002_auto_20171220_1852.py b/src/news/migrations/0002_auto_20171220_1852.py deleted file mode 100644 index 82274a5..0000000 --- a/src/news/migrations/0002_auto_20171220_1852.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2017-12-20 17:52 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('news', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='article', - name='date', - field=models.DateTimeField(auto_now_add=True), - ), - ] diff --git a/src/news/migrations/0003_auto_20180126_0135.py b/src/news/migrations/0003_auto_20180126_0135.py deleted file mode 100644 index 744aef9..0000000 --- a/src/news/migrations/0003_auto_20180126_0135.py +++ /dev/null @@ -1,29 +0,0 @@ -# Generated by Django 2.0.1 on 2018-01-26 00:35 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('news', '0002_auto_20171220_1852'), - ] - - operations = [ - migrations.RenameField( - model_name='article', - old_name='date', - new_name='created_at', - ), - migrations.AddField( - model_name='article', - name='updated_at', - field=models.DateTimeField(auto_now=True), - ), - migrations.AlterField( - model_name='article', - name='author', - field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='author', to='account.Profile'), - ), - ] diff --git a/src/news/models.py b/src/news/models.py index 0714bf1..92552b7 100644 --- a/src/news/models.py +++ b/src/news/models.py @@ -1,13 +1,24 @@ from django.db import models from account.models import Profile +from common.middleware import CurrentUserMiddleware class Article(models.Model): - author = models.ForeignKey(Profile, related_name="author", on_delete=models.DO_NOTHING) + author = models.ForeignKey( + Profile, + related_name="author", + on_delete=models.DO_NOTHING, + default=CurrentUserMiddleware.get_current_profile(), + ) title = models.CharField(null=False, max_length=200) text = models.TextField() created_at = models.DateTimeField(auto_now_add=True, editable=False) updated_at = models.DateTimeField(auto_now=True, editable=False) + updated_by = models.ForeignKey( + Profile, + related_name="updater", + on_delete=models.DO_NOTHING, + ) def __str__(self): return self.title diff --git a/src/news/serializers.py b/src/news/serializers.py index a4123d8..445c936 100644 --- a/src/news/serializers.py +++ b/src/news/serializers.py @@ -1,13 +1,16 @@ from news.models import Article from rest_framework import serializers +from common.serializers import CurrentUserProfileDefault -class ArticleListSerializer(serializers.ModelSerializer): - author_name = serializers.SerializerMethodField() +class ArticleSerializer(serializers.ModelSerializer): + updated_by = serializers.HiddenField(default=CurrentUserProfileDefault()) + last_updated_by = serializers.SerializerMethodField() class Meta: model = Article - fields = serializers.ALL_FIELDS + read_only_fields = ('author', 'created_at', 'updated_at', 'updated_by') + fields = '__all__' - def get_author_name(self, obj): - return obj.author.user.get_full_name() + def get_last_updated_by(self, obj): + return obj.updated_by.id diff --git a/src/news/urls.py b/src/news/urls.py index d71ed82..9536ff9 100644 --- a/src/news/urls.py +++ b/src/news/urls.py @@ -3,6 +3,6 @@ from news import views router = routers.DefaultRouter() -router.register(r'news', views.NewsViewSet) +router.register(r'news', views.NewsViewSet, base_name='news') urlpatterns = router.urls diff --git a/src/news/views.py b/src/news/views.py index 7267fd8..764d0a9 100644 --- a/src/news/views.py +++ b/src/news/views.py @@ -1,10 +1,10 @@ from common.permissions import IsStaffOrReadOnly from rest_framework import viewsets from news.models import Article -from news.serializers import ArticleListSerializer +from news.serializers import ArticleSerializer class NewsViewSet(viewsets.ModelViewSet): - serializer_class = ArticleListSerializer - permission_classes = [IsStaffOrReadOnly] + serializer_class = ArticleSerializer + permission_classes = (IsStaffOrReadOnly,) queryset = Article.objects.all().order_by('-created_at') diff --git a/src/stats/migrations/0001_initial.py b/src/stats/migrations/0001_initial.py index 91e32ff..444036a 100644 --- a/src/stats/migrations/0001_initial.py +++ b/src/stats/migrations/0001_initial.py @@ -1,8 +1,7 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2017-11-11 14:14 -from __future__ import unicode_literals +# Generated by Django 2.0.1 on 2018-12-24 16:02 from django.db import migrations, models +import django.db.models.deletion class Migration(migrations.Migration): @@ -15,12 +14,27 @@ class Migration(migrations.Migration): operations = [ migrations.CreateModel( - name='KszkEvent', + name='Event', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date', models.DateField()), - ('num_of_pers', models.IntegerField()), + ('name', models.CharField(max_length=255)), + ('date', models.DateTimeField()), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('updated_at', models.DateTimeField(auto_now=True)), + ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='created_event', to='account.Profile')), ('visitors', models.ManyToManyField(related_name='visitor', to='account.Profile')), ], ), + migrations.CreateModel( + name='Note', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('note', models.TextField()), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('updated_at', models.DateTimeField(auto_now=True)), + ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='created_notes', to='account.Profile')), + ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notes_event', to='stats.Event')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notes_user', to='account.Profile')), + ], + ), ] diff --git a/src/stats/migrations/0002_auto_20171111_1646.py b/src/stats/migrations/0002_auto_20171111_1646.py deleted file mode 100644 index 7a51b6e..0000000 --- a/src/stats/migrations/0002_auto_20171111_1646.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2017-11-11 15:46 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('stats', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='kszkevent', - name='num_of_pers', - field=models.IntegerField(editable=False), - ), - ] diff --git a/src/stats/migrations/0003_auto_20171114_2026.py b/src/stats/migrations/0003_auto_20171114_2026.py deleted file mode 100644 index 4f61427..0000000 --- a/src/stats/migrations/0003_auto_20171114_2026.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2017-11-14 19:26 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('stats', '0002_auto_20171111_1646'), - ] - - operations = [ - migrations.AlterField( - model_name='kszkevent', - name='date', - field=models.DateTimeField(), - ), - ] diff --git a/src/stats/migrations/0004_remove_kszkevent_num_of_pers.py b/src/stats/migrations/0004_remove_kszkevent_num_of_pers.py deleted file mode 100644 index 06bf71b..0000000 --- a/src/stats/migrations/0004_remove_kszkevent_num_of_pers.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2017-11-14 19:38 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('stats', '0003_auto_20171114_2026'), - ] - - operations = [ - migrations.RemoveField( - model_name='kszkevent', - name='num_of_pers', - ), - ] diff --git a/src/stats/migrations/0005_auto_20180214_2206.py b/src/stats/migrations/0005_auto_20180214_2206.py deleted file mode 100644 index f4a0033..0000000 --- a/src/stats/migrations/0005_auto_20180214_2206.py +++ /dev/null @@ -1,30 +0,0 @@ -# Generated by Django 2.0.1 on 2018-02-14 21:06 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0017_auto_20180205_2004'), - ('stats', '0004_remove_kszkevent_num_of_pers'), - ] - - operations = [ - migrations.CreateModel( - name='Event', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255)), - ('date', models.DateTimeField()), - ('visitors', models.ManyToManyField(related_name='visitor', to='account.Profile')), - ], - ), - migrations.RemoveField( - model_name='kszkevent', - name='visitors', - ), - migrations.DeleteModel( - name='KszkEvent', - ), - ] diff --git a/src/stats/migrations/0006_auto_20180214_2239.py b/src/stats/migrations/0006_auto_20180214_2239.py deleted file mode 100644 index 11bcd47..0000000 --- a/src/stats/migrations/0006_auto_20180214_2239.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 2.0.1 on 2018-02-14 21:39 - -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('stats', '0005_auto_20180214_2206'), - ] - - operations = [ - migrations.AlterField( - model_name='event', - name='visitors', - field=models.ManyToManyField(related_name='visitor', to=settings.AUTH_USER_MODEL), - ), - ] diff --git a/src/stats/migrations/0007_auto_20180215_0018.py b/src/stats/migrations/0007_auto_20180215_0018.py deleted file mode 100644 index 9cd65ce..0000000 --- a/src/stats/migrations/0007_auto_20180215_0018.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.0.1 on 2018-02-14 23:18 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('stats', '0006_auto_20180214_2239'), - ] - - operations = [ - migrations.AlterField( - model_name='event', - name='visitors', - field=models.ManyToManyField(related_name='visitor', to='account.Profile'), - ), - ] diff --git a/src/stats/migrations/0008_note.py b/src/stats/migrations/0008_note.py deleted file mode 100644 index 8b08926..0000000 --- a/src/stats/migrations/0008_note.py +++ /dev/null @@ -1,27 +0,0 @@ -# Generated by Django 2.0.1 on 2018-02-21 00:18 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0017_auto_20180205_2004'), - ('stats', '0007_auto_20180215_0018'), - ] - - operations = [ - migrations.CreateModel( - name='Note', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('note', models.TextField()), - ('created_at', models.DateTimeField(auto_now_add=True)), - ('updated_at', models.DateTimeField(auto_now=True)), - ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='created_notes', to='account.Profile')), - ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notes', to='stats.Event')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notes', to='account.Profile')), - ], - ), - ] diff --git a/src/stats/models.py b/src/stats/models.py index aa38fd9..0eb5c70 100644 --- a/src/stats/models.py +++ b/src/stats/models.py @@ -8,6 +8,9 @@ class Event(models.Model): name = models.CharField(max_length=255) date = models.DateTimeField(null=False) visitors = models.ManyToManyField(Profile, related_name='visitor') + created_by = models.ForeignKey(Profile, related_name='created_event', on_delete=models.CASCADE) + created_at = models.DateTimeField(auto_now_add=True, editable=False) + updated_at = models.DateTimeField(auto_now=True, editable=False) def clean(self): if self.date > timezone.now(): @@ -18,10 +21,9 @@ class Event(models.Model): class Note(models.Model): - event = models.ForeignKey(Event, related_name='notes', on_delete=models.CASCADE) - user = models.ForeignKey(Profile, related_name='notes', on_delete=models.CASCADE) + event = models.ForeignKey(Event, related_name='notes_event', on_delete=models.CASCADE) + user = models.ForeignKey(Profile, related_name='notes_user', on_delete=models.CASCADE) note = models.TextField() - created_by = models.ForeignKey(Profile, related_name='created_notes', on_delete=models.CASCADE) created_at = models.DateTimeField(auto_now_add=True, editable=False) updated_at = models.DateTimeField(auto_now=True, editable=False) diff --git a/src/stats/serializers.py b/src/stats/serializers.py index 0620c99..a8a1f39 100644 --- a/src/stats/serializers.py +++ b/src/stats/serializers.py @@ -1,8 +1,21 @@ from rest_framework import serializers +from common.serializers import CurrentUserProfileDefault from . import models class EventSerializer(serializers.ModelSerializer): + created_by = serializers.HiddenField(default=CurrentUserProfileDefault()) + class Meta: model = models.Event - fields = ('name', 'date', 'visitors') + fields = '__all__' + read_only_fields = ('created_at', 'update_at', 'created_by') + + +class NoteSerializer(serializers.ModelSerializer): + created_by = serializers.HiddenField(default=CurrentUserProfileDefault()) + + class Meta: + model = models.Note + fields = '__all__' + read_only_fields = ('created_at', 'update_at', 'created_by') diff --git a/src/stats/urls.py b/src/stats/urls.py index 8f270ce..f2a9110 100644 --- a/src/stats/urls.py +++ b/src/stats/urls.py @@ -1,8 +1,8 @@ from rest_framework import routers - from . import views router = routers.DefaultRouter() -router.register(r'events', views.EventViewSet) +router.register(r'events', views.EventViewSet, base_name='events') +router.register(r'notes', views.NoteViewSet, base_name='notes') urlpatterns = router.urls diff --git a/src/stats/views.py b/src/stats/views.py index f2c91f1..e9b8a10 100644 --- a/src/stats/views.py +++ b/src/stats/views.py @@ -2,8 +2,16 @@ from rest_framework import viewsets from . import models from . import serializers +from common.permissions import IsStaffUser, IsStaffOrReadOnlyForAuthenticated class EventViewSet(viewsets.ModelViewSet): serializer_class = serializers.EventSerializer queryset = models.Event.objects.all() + permission_classes = (IsStaffOrReadOnlyForAuthenticated, ) + + +class NoteViewSet(viewsets.ModelViewSet): + serializer_class = serializers.NoteSerializer + queryset = models.Note.objects.all() + permission_classes = (IsStaffUser, ) -- GitLab