diff --git a/.gitignore b/.gitignore index d347aa28bc0a0b7a489ac077f7b66e6c54324346..ffb3de3832416b870bf800ac19d59da9db49bf56 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 8c4b5267abb550ca5a08c3e50a2b3f0f72a54d57..37a8b78b7801665d27a394de0fc81c290fde193a 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 fc76cef337448de84b568817d4fe13dd023c0f13..0000000000000000000000000000000000000000 --- 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 7a3542787808c4e28493012327718f79731e9f3c..0000000000000000000000000000000000000000 --- 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 424407361c1f04b2068daab365199eb7d5aa9e2b..0000000000000000000000000000000000000000 --- 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 d5e5fb83b2f2deeaf85dba89cb35de502a01ea4e..0000000000000000000000000000000000000000 --- 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 035ce31da185ae28746fa3674f1670e1491e671f..0000000000000000000000000000000000000000 --- 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 27a4efe8c61f7cb19bb1f349a8c21b6e66f1e60e..0000000000000000000000000000000000000000 --- 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 fd3af443879f22344cc51f1334eec41e445948ad..0000000000000000000000000000000000000000 --- 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 c9d1e0a2e2aa16abd91adb4970ac860e5e991ffc..0000000000000000000000000000000000000000 --- 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 2a9b50d5d2e04d41c68b1aba0135774b1bd97bc3..0000000000000000000000000000000000000000 --- 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 e88ed12d346eefbc0226895bd725d1bc49541928..0000000000000000000000000000000000000000 --- 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 92845d1c75bcd23abaf68710d8c4bf93162fc7dd..0000000000000000000000000000000000000000 --- 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 8ac041e4d538e265f8f47fdaae0960ed54edd6b2..0000000000000000000000000000000000000000 --- 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 0ad3c0554ec582ff41cc7536f02287c77f3fdb66..0000000000000000000000000000000000000000 --- 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 e823387e6830f772c4651f21c876c0ae0534f4cc..0000000000000000000000000000000000000000 --- 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 86c2ae6dc33f0c16b7e8f1ea9489baf1e3d9cdd6..0000000000000000000000000000000000000000 --- 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 d2137f9af9d55ca32fd4b79ba44f09ce56a8abd5..0000000000000000000000000000000000000000 --- 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 fde64a8529b11c5561318014a5305b2ce5aef8df..9ceaeb88d17e0fda47dd2fe606325c6046fa51be 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 0000000000000000000000000000000000000000..fd40451931f99ce03c4a3d2e28cec263ad1569dc --- /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 b92796bcb9ea8806d6a15480b2d9ccfe95609d1e..24fda6e665f477fa0b1e54d891277a8336cfce17 --- 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 cafe25c08698315b551c3d0d0eaa5430eb0ef5d5..0000000000000000000000000000000000000000 --- 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 dd73603a60b94e23ef0f7892f885ff713c32de67..81c4c312ca29701d68ee60bc47cce4d23d10ce47 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 3e3bf0cd6b30767f0b17a436e2c1eede7b9061a7..fb3427740244597c278ef123918a83fa0a0b21ec 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 82274a5e164ffb466661b8358d3839ee44f9f78a..0000000000000000000000000000000000000000 --- 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 744aef9118bc2963df22d62ea5af9c8230adf26c..0000000000000000000000000000000000000000 --- 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 0714bf16b3c1e24f9d9da0b476e5f8bdb04f428d..92552b7d95f8f3012f12056ce54d821165cd3717 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 a4123d8f897dbc3dbf9689998d6c61c065bb1fae..445c936ad468f4bd796c5b9ef9beb6b62b3be2e1 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 d71ed82e9e76d7ee61aa6e91c0f8f868a28b1280..9536ff9f010db9f900d00e84c7d18555dafde6c0 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 7267fd827e731895a3ab25002b6f1fb5b9c1a581..764d0a93c4aeb7f6ff4a493c6db4aed6f24a6c5c 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 91e32fff21f7f6489284d3c0ab02d8b58949f049..444036a4d2dfba375360039a0e3f964eaac13655 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 7a51b6e003a0e51bf2130254034f7a8bfda83b8b..0000000000000000000000000000000000000000 --- 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 4f61427074f3da7f8f404795ce58528a1be00bb6..0000000000000000000000000000000000000000 --- 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 06bf71b435fa15cddf94d3352678cba5aa44784a..0000000000000000000000000000000000000000 --- 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 f4a0033cc39e3b8b311676b83ca7fdb22fa3bccf..0000000000000000000000000000000000000000 --- 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 11bcd479e58a3a965982f251caa3b021c98273f2..0000000000000000000000000000000000000000 --- 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 9cd65ce00b95c767f3bf9db33128446d83b79ad2..0000000000000000000000000000000000000000 --- 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 8b08926a7916ef37a514309d69c0f9b3ac8779c0..0000000000000000000000000000000000000000 --- 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 aa38fd947c9ec32fd41c407f52387c1c683779b7..0eb5c700ef669deadbe1b4d516622c1cdfcf4413 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 0620c993155de89cea2f2c9e463d00737248b803..a8a1f39ecbd386732e0eafdbc3af6dcd699b2bdf 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 8f270ce8246724e9a29aaf99dd3d1e7d6690aec7..f2a911041c8e7fad05bdbfdae40749ac4d044e92 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 f2c91f1e70a8b38d620a0a500709f38f97359d9c..e9b8a106a74c6d6de92f4115fe8242f7c3753840 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, )