diff --git a/src/account/migrations/0001_initial.py b/src/account/migrations/0001_initial.py index 8550f16222d06151f89e7dbf62fb44cc7233e753..8a477bdaf4bec82fb83708e8b1e1d314a1318004 100644 --- a/src/account/migrations/0001_initial.py +++ b/src/account/migrations/0001_initial.py @@ -17,7 +17,8 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Deadline', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('id', models.AutoField(auto_created=True, + primary_key=True, serialize=False, verbose_name='ID')), ('deadline', models.DateTimeField(null=True)), ], options={ @@ -27,14 +28,17 @@ class Migration(migrations.Migration): 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)), + ('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')), + ('id', models.AutoField(auto_created=True, + primary_key=True, serialize=False, verbose_name='ID')), ('join_date', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('motivation_about', models.TextField(blank=True, default='')), @@ -42,9 +46,12 @@ class Migration(migrations.Migration): ('motivation_exercise', models.TextField(blank=True, default='')), ('nick', models.CharField(blank=True, default='', max_length=15)), ('signed', models.BooleanField(default=False)), - ('role', models.CharField(choices=[('Staff', 'Staff'), ('Applicant', 'Applicant'), ('Student', 'Student')], default='Applicant', max_length=10)), - ('groups', models.ManyToManyField(blank=True, related_name='profiles', to='account.GroupChoice')), - ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='profile', to=settings.AUTH_USER_MODEL)), + ('role', models.CharField(choices=[('Staff', 'Staff'), ('Applicant', 'Applicant'), ( + 'Student', 'Student')], default='Applicant', max_length=10)), + ('groups', models.ManyToManyField(blank=True, + 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_20190122_1341.py b/src/account/migrations/0002_auto_20190122_1341.py index e9ee7b662af95a01f09815050e8650ab04603b30..bb010a2b47f77be10ce101b4ad90d4d3fe403341 100644 --- a/src/account/migrations/0002_auto_20190122_1341.py +++ b/src/account/migrations/0002_auto_20190122_1341.py @@ -13,6 +13,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='profile', name='role', - field=models.CharField(choices=[('Staff', 'Staff'), ('Applicant', 'Applicant'), ('Student', 'Student'), ('Denied', 'Denied')], default='Applicant', max_length=10), + field=models.CharField(choices=[('Staff', 'Staff'), ('Applicant', 'Applicant'), ( + 'Student', 'Student'), ('Denied', 'Denied')], default='Applicant', max_length=10), ), ] diff --git a/src/account/migrations/0003_auto_20200202_1541.py b/src/account/migrations/0003_auto_20200202_1541.py index dcc6f8b6da31a12762cd0a615df8de9f40a2f12c..fdfda988e7024d3f03516a0594b5c9d9ffaa1cc6 100644 --- a/src/account/migrations/0003_auto_20200202_1541.py +++ b/src/account/migrations/0003_auto_20200202_1541.py @@ -18,6 +18,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name='profile', name='image', - field=models.ImageField(blank=True, null=True, upload_to='accounts/images/'), + field=models.ImageField( + blank=True, null=True, upload_to='accounts/images/'), ), ] diff --git a/src/account/models.py b/src/account/models.py index 21bfbfac2c7a73b0b4e0b3d3c5fee6734dd46c45..40a38470f6478f44b733c1f7c1b25f606db00141 100644 --- a/src/account/models.py +++ b/src/account/models.py @@ -2,7 +2,7 @@ from django.db import models from django.contrib.auth.models import User from solo.models import SingletonModel from django.db.models import Sum -from django.db.models.functions import Coalesce + class GroupChoice(models.Model): TEAMS = ( @@ -46,14 +46,17 @@ class Profile(models.Model): groups = models.ManyToManyField( GroupChoice, related_name='profiles', blank=True) role = models.CharField(max_length=10, choices=ROLES, default='Applicant') - + @property def events_visited(self): return self.events_visitor.all().count() - + @property def homework_bits(self): - return self.solution.filter(accepted=True).values('task__bits').aggregate(total_bits=Sum('task__bits')).get('total_bits') + return self.solution.filter(accepted=True) \ + .values('task__bits') \ + .aggregate(total_bits=Sum('task__bits')) \ + .get('total_bits') @property def full_name(self): diff --git a/src/account/resources.py b/src/account/resources.py index 4682f638b07cadfff0e0d216c394ce466d980866..1217cad331af7ec6fc291ce0417dc2a020284167 100644 --- a/src/account/resources.py +++ b/src/account/resources.py @@ -5,7 +5,8 @@ from . import models class SignUpResource(resources.ModelResource): groups = fields.Field( attribute='groups', - widget=widgets.ManyToManyWidget(model=models.GroupChoice, separator=' ,', field='choice'), + widget=widgets.ManyToManyWidget( + model=models.GroupChoice, separator=' ,', field='choice'), ) class Meta: diff --git a/src/account/serializers.py b/src/account/serializers.py index 01ba66c76f2d4c974b929fb965388bc62f0b710d..ae7b5bafeef15c9dca8de074aecacc5a5f9eda5e 100644 --- a/src/account/serializers.py +++ b/src/account/serializers.py @@ -9,6 +9,7 @@ class ChoiceSerializer(serializers.ModelSerializer): model = models.GroupChoice fields = ('choice', 'profile') + class ProfileSerializer_User(serializers.ModelSerializer): groups = serializers.SlugRelatedField( many=True, @@ -66,7 +67,7 @@ class ProfileSerializer_User(serializers.ModelSerializer): def get_full_name(self, obj): return obj.full_name - + def get_bits(self, obj): if obj.homework_bits is None: return obj.events_visited diff --git a/src/account/views.py b/src/account/views.py index 9321defcd2c0031f9746656a2fdd5269e08ebc90..4f88c5140b7e7c19be08f485d18798be2c627974 100644 --- a/src/account/views.py +++ b/src/account/views.py @@ -31,7 +31,7 @@ class ProfileViewSet(viewsets.ModelViewSet): def me(self, request): serializer = self.serializer_class(request.user.profile) return Response(serializer.data) - + @action(detail=False) def deadline(self, request): deadline = models.Deadline.get_solo() diff --git a/src/common/email.py b/src/common/email.py index 45b8705f994cea140f6746831d916630364d0c0e..804231fc0ecd560e15b84e9bc20fac63943c2c40 100644 --- a/src/common/email.py +++ b/src/common/email.py @@ -36,7 +36,8 @@ def new_homework(user, deadline): deadline = deadline.strftime('%Y-%m-%d %H:%M') subject = "Ăj hĂĄzifeladat" message = read_email('new_homework.txt') - message = str.format(message % {'name': user.get_full_name(), 'link': link, 'deadline': deadline}) + message = str.format( + message % {'name': user.get_full_name(), 'link': link, 'deadline': deadline}) send_mail(subject, message, sender_email, [user.email, ]) @@ -47,5 +48,6 @@ def homework_corrected(user, title, accepted): else: status = 'HibĂĄs' message = read_email('homework_corrected.txt') - message = str.format(message % {'name': user.get_full_name(), 'link': link, 'status': status, 'title': title}) + message = str.format(message % {'name': user.get_full_name( + ), 'link': link, 'status': status, 'title': title}) send_mail(subject, message, sender_email, [user.email, ]) diff --git a/src/common/permissions.py b/src/common/permissions.py index 7d2384c7bf9186939272c68ac9d5f61dbfe58e72..71019190dc24d58c05180291c99b3d4f83ed1fcd 100644 --- a/src/common/permissions.py +++ b/src/common/permissions.py @@ -5,13 +5,13 @@ from rest_framework.permissions import SAFE_METHODS class IsStaffOrReadOnly(BasePermission): def has_permission(self, request, view): return request.method in SAFE_METHODS or\ - (request.user.is_authenticated and request.user.profile.role == 'Staff') + (request.user.is_authenticated and request.user.profile.role == 'Staff') class IsStaffOrReadOnlyForAuthenticated(BasePermission): def has_permission(self, request, view): return request.user.is_authenticated and\ - (request.method in SAFE_METHODS or request.user.profile.role == 'Staff') + (request.method in SAFE_METHODS or request.user.profile.role == 'Staff') class IsStaffUser(BasePermission): @@ -27,4 +27,5 @@ class IsSafeOrPatch(BasePermission): class IsStaffOrStudent(BasePermission): def has_permission(self, request, view): return request.user.is_authenticated and\ - (request.user.profile.role == 'Staff' or request.user.profile.role == 'Student') + (request.user.profile.role == + 'Staff' or request.user.profile.role == 'Student') diff --git a/src/document/migrations/0001_initial.py b/src/document/migrations/0001_initial.py index 4348982492986d644aa5a1c31dd744a4df499438..7b6f640281ba41f95d5d03c76db5308c453ec343 100644 --- a/src/document/migrations/0001_initial.py +++ b/src/document/migrations/0001_initial.py @@ -21,13 +21,17 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Document', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('id', models.AutoField(auto_created=True, + primary_key=True, serialize=False, verbose_name='ID')), ('uploaded_at', models.DateTimeField(auto_now_add=True)), ('name', models.CharField(blank=True, default='', max_length=150)), ('description', models.TextField(blank=True, default='')), - ('file', models.FileField(blank=True, null=True, upload_to=document.models.document_file_name, validators=[django.core.validators.FileExtensionValidator(['png', 'jpeg', 'jpg', 'zip']), common.validators.FileSizeValidator(size_limit=52428800)])), - ('solution', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='files', to='homework.Solution')), - ('uploaded_by', models.ForeignKey(default=common.middleware.CurrentUserMiddleware.get_current_user_profile, on_delete=django.db.models.deletion.DO_NOTHING, related_name='documents', to='account.Profile')), + ('file', models.FileField(blank=True, null=True, upload_to=document.models.document_file_name, validators=[ + django.core.validators.FileExtensionValidator(['png', 'jpeg', 'jpg', 'zip']), common.validators.FileSizeValidator(size_limit=52428800)])), + ('solution', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, + related_name='files', to='homework.Solution')), + ('uploaded_by', models.ForeignKey(default=common.middleware.CurrentUserMiddleware.get_current_user_profile, + on_delete=django.db.models.deletion.DO_NOTHING, related_name='documents', to='account.Profile')), ], ), ] diff --git a/src/document/migrations/0002_auto_20190121_1332.py b/src/document/migrations/0002_auto_20190121_1332.py index 5cf755b92259e186c711bd5be422791f17294858..3e91175e44049fa5517660e8ef19e1b32e3c5c0b 100644 --- a/src/document/migrations/0002_auto_20190121_1332.py +++ b/src/document/migrations/0002_auto_20190121_1332.py @@ -15,6 +15,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='document', name='file', - field=models.FileField(blank=True, default='', upload_to='', validators=[django.core.validators.FileExtensionValidator(['png', 'jpeg', 'jpg', 'zip']), common.validators.FileSizeValidator(size_limit=52428800)]), + field=models.FileField(blank=True, default='', upload_to='', validators=[django.core.validators.FileExtensionValidator( + ['png', 'jpeg', 'jpg', 'zip']), common.validators.FileSizeValidator(size_limit=52428800)]), ), ] diff --git a/src/document/migrations/0003_auto_20190121_1335.py b/src/document/migrations/0003_auto_20190121_1335.py index fa4d1c22ae825d615e093126a69d4a0a76132ad0..fe059ec31970f9fb4186389c5a021ad771e20c7a 100644 --- a/src/document/migrations/0003_auto_20190121_1335.py +++ b/src/document/migrations/0003_auto_20190121_1335.py @@ -15,6 +15,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='document', name='file', - field=models.FileField(blank=True, upload_to='', validators=[django.core.validators.FileExtensionValidator(['png', 'jpeg', 'jpg', 'zip']), common.validators.FileSizeValidator(size_limit=52428800)]), + field=models.FileField(blank=True, upload_to='', validators=[django.core.validators.FileExtensionValidator( + ['png', 'jpeg', 'jpg', 'zip']), common.validators.FileSizeValidator(size_limit=52428800)]), ), ] diff --git a/src/document/migrations/0004_auto_20190123_1812.py b/src/document/migrations/0004_auto_20190123_1812.py index 9eb42c6664d6d3fe22abb6ec091b7ea965643db5..95a9a1c5acf4b94783ffc434dc6b10c52c2cb560 100644 --- a/src/document/migrations/0004_auto_20190123_1812.py +++ b/src/document/migrations/0004_auto_20190123_1812.py @@ -14,6 +14,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='document', name='solution', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='files', to='homework.Solution'), + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, related_name='files', to='homework.Solution'), ), ] diff --git a/src/document/migrations/0005_auto_20190129_1438.py b/src/document/migrations/0005_auto_20190129_1438.py index 5c207c4a9776a2776d3d1b5da9d0473d2a283175..da8acfc706738e46cd96842231f34d7510febf0d 100644 --- a/src/document/migrations/0005_auto_20190129_1438.py +++ b/src/document/migrations/0005_auto_20190129_1438.py @@ -15,7 +15,8 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='document', name='file', - field=models.FileField(blank=True, null=True, upload_to='', validators=[django.core.validators.FileExtensionValidator(['png', 'jpeg', 'jpg', 'zip']), common.validators.FileSizeValidator(size_limit=52428800)]), + field=models.FileField(blank=True, null=True, upload_to='', validators=[django.core.validators.FileExtensionValidator( + ['png', 'jpeg', 'jpg', 'zip']), common.validators.FileSizeValidator(size_limit=52428800)]), ), migrations.AlterField( model_name='document', diff --git a/src/document/migrations/0006_auto_20200203_0016.py b/src/document/migrations/0006_auto_20200203_0016.py index 4fe709a5402e848967cacf18078031d5e3386a46..a8e13ced35131bd48da645e5f838e32128d66f90 100644 --- a/src/document/migrations/0006_auto_20200203_0016.py +++ b/src/document/migrations/0006_auto_20200203_0016.py @@ -16,6 +16,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='document', name='file', - field=models.FileField(blank=True, null=True, upload_to=document.models.document_file_name, validators=[django.core.validators.FileExtensionValidator(['png', 'jpeg', 'jpg', 'zip']), common.validators.FileSizeValidator(size_limit=52428800)]), + field=models.FileField(blank=True, null=True, upload_to=document.models.document_file_name, validators=[ + django.core.validators.FileExtensionValidator(['png', 'jpeg', 'jpg', 'zip']), common.validators.FileSizeValidator(size_limit=52428800)]), ), ] diff --git a/src/document/models.py b/src/document/models.py index efa6d39b9c825c731779e07bb9185517ce007adc..11eeb96fd9ab4990169d5e5b504e99175a9a6395 100644 --- a/src/document/models.py +++ b/src/document/models.py @@ -43,7 +43,8 @@ class Document(models.Model): null=True, upload_to=document_file_name ) - solution = models.ForeignKey(Solution, related_name='files', on_delete=models.CASCADE) + solution = models.ForeignKey( + Solution, related_name='files', on_delete=models.CASCADE) def __str__(self): return self.name diff --git a/src/groups/migrations/0001_initial.py b/src/groups/migrations/0001_initial.py index a0a4157f9ecc22f02146c2f662ecd11af1b5e25f..643e9bace651b115a74ee0ce5c4dcbc9157b6b82 100644 --- a/src/groups/migrations/0001_initial.py +++ b/src/groups/migrations/0001_initial.py @@ -14,7 +14,8 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Group', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('id', models.AutoField(auto_created=True, + primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(blank=True, default='', max_length=50)), ('description', models.TextField(blank=True, default='')), ], diff --git a/src/groups/models.py b/src/groups/models.py index 88a35cf5ebf1ed80ea968b1e9259dee34df19354..2953fdc811b6e9a837cd4e4eb6b1cf8f4f72f9bd 100644 --- a/src/groups/models.py +++ b/src/groups/models.py @@ -1,9 +1,11 @@ from django.db import models # KSZK groups, like Devteam, Sysadmin, ... + + class Group(models.Model): name = models.CharField(max_length=50, blank=True, default='') description = models.TextField(blank=True, default='') - + def __str__(self): - return self.name \ No newline at end of file + return self.name diff --git a/src/groups/serializers.py b/src/groups/serializers.py index 0baeea0970993b58d9c5bc872320d1ad57c38f5a..2f14fa78374ea5983b9ec38f05d4f50be82b760e 100644 --- a/src/groups/serializers.py +++ b/src/groups/serializers.py @@ -14,5 +14,3 @@ class GroupSerializer(serializers.ModelSerializer): 'name', 'description', ) - - diff --git a/src/groups/tests.py b/src/groups/tests.py index 7ce503c2dd97ba78597f6ff6e4393132753573f6..a79ca8be565f44aacce95bad20c1ee34d175ed20 100644 --- a/src/groups/tests.py +++ b/src/groups/tests.py @@ -1,3 +1,3 @@ -from django.test import TestCase +# from django.test import TestCase # Create your tests here. diff --git a/src/groups/views.py b/src/groups/views.py index e22f113ca575f94d0f38061b8c1dd2de4442c34b..2149906966c10423777d5da772f3402579e89904 100644 --- a/src/groups/views.py +++ b/src/groups/views.py @@ -3,7 +3,7 @@ from rest_framework import viewsets from . import serializers from . import models + class GroupsViewSet(viewsets.ReadOnlyModelViewSet): serializer_class = serializers.GroupSerializer queryset = models.Group.objects.all() - \ No newline at end of file diff --git a/src/homework/migrations/0001_initial.py b/src/homework/migrations/0001_initial.py index 13125342ce3865c45e5e8304a5353c3b5837e371..d41fc713789e4f4d5a5bcabbe20854da9b411b5c 100644 --- a/src/homework/migrations/0001_initial.py +++ b/src/homework/migrations/0001_initial.py @@ -17,30 +17,35 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Solution', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('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)), ('note', models.TextField(blank=True, default='')), ('accepted', models.BooleanField()), ('corrected', models.BooleanField()), - ('created_by', models.ForeignKey(default=common.middleware.CurrentUserMiddleware.get_current_user_profile, on_delete=django.db.models.deletion.DO_NOTHING, related_name='solution', to='account.Profile')), + ('created_by', models.ForeignKey(default=common.middleware.CurrentUserMiddleware.get_current_user_profile, + on_delete=django.db.models.deletion.DO_NOTHING, related_name='solution', to='account.Profile')), ], ), migrations.CreateModel( name='Task', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('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)), ('title', models.CharField(max_length=150)), ('text', models.TextField()), ('deadline', models.DateTimeField()), - ('created_by', models.ForeignKey(default=common.middleware.CurrentUserMiddleware.get_current_user_profile, on_delete=django.db.models.deletion.DO_NOTHING, related_name='tasks', to='account.Profile')), + ('created_by', models.ForeignKey(default=common.middleware.CurrentUserMiddleware.get_current_user_profile, + on_delete=django.db.models.deletion.DO_NOTHING, related_name='tasks', to='account.Profile')), ], ), migrations.AddField( model_name='solution', name='task', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='solutions', to='homework.Task'), + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, related_name='solutions', to='homework.Task'), ), ] diff --git a/src/homework/models.py b/src/homework/models.py index 6bc36ceb5a05d25dace35ca2caf3f765df62b020..75fddd9ea4c46938f630924f05044217a3489429 100755 --- a/src/homework/models.py +++ b/src/homework/models.py @@ -22,7 +22,8 @@ class Task(models.Model): class Solution(models.Model): - task = models.ForeignKey(Task, related_name='solutions', on_delete=models.CASCADE) + task = models.ForeignKey( + Task, related_name='solutions', on_delete=models.CASCADE) created_by = models.ForeignKey( Profile, related_name='solution', diff --git a/src/kszkepzes/settings/local.py b/src/kszkepzes/settings/local.py index 53eb49a1bd60f3f66631867f420381d3070b85a1..caa2719d4630ba660fb7e1709250b5530173749b 100644 --- a/src/kszkepzes/settings/local.py +++ b/src/kszkepzes/settings/local.py @@ -1,6 +1,6 @@ from .base import * -SESSION_COOKIE_SECURE=False +SESSION_COOKIE_SECURE = False EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.gmail.com' EMAIL_USE_TLS = True diff --git a/src/kszkepzes/urls.py b/src/kszkepzes/urls.py index 36b2b6bb87de5468f80a403ffbacc6fd3cd84846..0760d77eda95fb1a1ac2a54f9de0669a0ae0dfb4 100644 --- a/src/kszkepzes/urls.py +++ b/src/kszkepzes/urls.py @@ -22,9 +22,12 @@ schema_view = get_schema_view( ) urlpatterns = [ - url(r'^api/v1/swagger(?P<format>\.json|\.yaml)$', schema_view.without_ui(cache_timeout=0), name='schema-json'), - url(r'^api/v1/swagger/$', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'), - url(r'^api/v1/redoc/$', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'), + url(r'^api/v1/swagger(?P<format>\.json|\.yaml)$', + schema_view.without_ui(cache_timeout=0), name='schema-json'), + url(r'^api/v1/swagger/$', schema_view.with_ui('swagger', + cache_timeout=0), name='schema-swagger-ui'), + url(r'^api/v1/redoc/$', schema_view.with_ui('redoc', + cache_timeout=0), name='schema-redoc'), url(r'^admin/', admin.site.urls), url(r'^api/v1/', include('social_django.urls', namespace='social')), url(r'^api/v1/homework/', include('homework.urls')), @@ -38,4 +41,5 @@ urlpatterns = [ ] if settings.DEBUG: - urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + urlpatterns += static(settings.MEDIA_URL, + document_root=settings.MEDIA_ROOT) diff --git a/src/kszkepzes/wsgi.py b/src/kszkepzes/wsgi.py index 12023b6a78e7c9bbb5cc7e48d9d4f63b9eba7b3e..f29c7593000fed09e6a5a94b4c631462fb71bc73 100644 --- a/src/kszkepzes/wsgi.py +++ b/src/kszkepzes/wsgi.py @@ -11,6 +11,7 @@ import os from django.core.wsgi import get_wsgi_application -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "kszkepzes.settings.production") +os.environ.setdefault("DJANGO_SETTINGS_MODULE", + "kszkepzes.settings.production") application = get_wsgi_application() diff --git a/src/mentors/migrations/0001_initial.py b/src/mentors/migrations/0001_initial.py index ef3982a1810cc7376a73a0356ec537cef5bb1ea4..782fbdc071f8a8ce33a4cb104fa1a87113eed014 100644 --- a/src/mentors/migrations/0001_initial.py +++ b/src/mentors/migrations/0001_initial.py @@ -17,12 +17,15 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Mentor', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('id', models.AutoField(auto_created=True, + primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=200)), ('text', models.TextField()), - ('image', models.ImageField(blank=True, null=True, upload_to='mentors/images/')), + ('image', models.ImageField(blank=True, + null=True, upload_to='mentors/images/')), ('email', models.EmailField(max_length=254)), - ('mentor', models.ForeignKey(default=common.middleware.CurrentUserMiddleware.get_current_user_profile, on_delete=django.db.models.deletion.DO_NOTHING, related_name='mentor', to='account.Profile')), + ('mentor', models.ForeignKey(default=common.middleware.CurrentUserMiddleware.get_current_user_profile, + on_delete=django.db.models.deletion.DO_NOTHING, related_name='mentor', to='account.Profile')), ], ), ] diff --git a/src/mentors/models.py b/src/mentors/models.py index 75e6470415d71a2afe41fde5b6b6f1fe5a0d88c5..59b9a720ba88eb81223696f7d7ff982541889230 100644 --- a/src/mentors/models.py +++ b/src/mentors/models.py @@ -12,7 +12,8 @@ class Mentor(models.Model): ) name = models.CharField(null=False, max_length=200) text = models.TextField() - image = models.ImageField(upload_to='mentors/images/', null=True, blank=True) + image = models.ImageField( + upload_to='mentors/images/', null=True, blank=True) email = models.EmailField() def __str__(self): diff --git a/src/mentors/serializers.py b/src/mentors/serializers.py index c5ef6d7498b0e30b928edbbafd7b7936b228c3bf..a32b29c48d106482bd6559ed4ead9cffec11c99b 100644 --- a/src/mentors/serializers.py +++ b/src/mentors/serializers.py @@ -1,6 +1,5 @@ from mentors.models import Mentor from rest_framework import serializers -from common.serializers import CurrentUserProfileDefault class MentorSerializer(serializers.ModelSerializer): diff --git a/src/news/migrations/0001_initial.py b/src/news/migrations/0001_initial.py index a8f40ce6d982860cc36fa0d335132bf70b770d9e..844a7e255bb247a53191d9ce0965ffe77c31fda3 100644 --- a/src/news/migrations/0001_initial.py +++ b/src/news/migrations/0001_initial.py @@ -17,13 +17,16 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Article', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('id', models.AutoField(auto_created=True, + primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=200)), ('text', models.TextField()), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), - ('author', models.ForeignKey(default=common.middleware.CurrentUserMiddleware.get_current_user_profile, 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')), + ('author', models.ForeignKey(default=common.middleware.CurrentUserMiddleware.get_current_user_profile, + 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_20200202_1541.py b/src/news/migrations/0002_auto_20200202_1541.py index 07d6f60484beec02c0a89fd61a682a51bc86e467..ecd6a503a7f89050469a3d651eeacd1316b78867 100644 --- a/src/news/migrations/0002_auto_20200202_1541.py +++ b/src/news/migrations/0002_auto_20200202_1541.py @@ -15,6 +15,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='article', name='updated_by', - field=models.ForeignKey(default=common.middleware.CurrentUserMiddleware.get_current_user_profile, on_delete=django.db.models.deletion.DO_NOTHING, related_name='updater', to='account.Profile'), + field=models.ForeignKey(default=common.middleware.CurrentUserMiddleware.get_current_user_profile, + on_delete=django.db.models.deletion.DO_NOTHING, related_name='updater', to='account.Profile'), ), ] diff --git a/src/news/serializers.py b/src/news/serializers.py index c6a84629f0fc62ba21cfd864effe382af2e63ba9..7d967b59bde22839708b919f0796cfc39d716d9c 100644 --- a/src/news/serializers.py +++ b/src/news/serializers.py @@ -1,6 +1,5 @@ from news.models import Article from rest_framework import serializers -from common.serializers import CurrentUserProfileDefault class ArticleSerializer(serializers.ModelSerializer): diff --git a/src/stats/admin.py b/src/stats/admin.py index fb841605335f9cd12025ed91abe5361dc7f806f5..6c3f3b784e18268a87cbc7f48dd87392cb54c746 100644 --- a/src/stats/admin.py +++ b/src/stats/admin.py @@ -15,7 +15,8 @@ class EventAdmin(ExportMixin, admin.ModelAdmin): @admin.register(models.Note) class NoteAdmin(ExportMixin, admin.ModelAdmin): - list_display = ('profile', 'note', 'event', 'created_by', 'created_at', 'updated_at') + list_display = ('profile', 'note', 'event', + 'created_by', 'created_at', 'updated_at') list_filter = ('profile', 'created_by', 'event') search_fields = ('event__name', 'note') resource_class = resources.NoteResource diff --git a/src/stats/migrations/0001_initial.py b/src/stats/migrations/0001_initial.py index b6e989e8f6f784a782bf6ef238584160ca141329..2bc6a35d52517eeec7687ce2bf10da4ffa70b81c 100644 --- a/src/stats/migrations/0001_initial.py +++ b/src/stats/migrations/0001_initial.py @@ -17,25 +17,32 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Event', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('id', models.AutoField(auto_created=True, + primary_key=True, serialize=False, verbose_name='ID')), ('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(default=common.middleware.CurrentUserMiddleware.get_current_user_profile, on_delete=django.db.models.deletion.DO_NOTHING, related_name='created_event', to='account.Profile')), - ('visitors', models.ManyToManyField(blank=True, related_name='events', to='account.Profile')), + ('created_by', models.ForeignKey(default=common.middleware.CurrentUserMiddleware.get_current_user_profile, + on_delete=django.db.models.deletion.DO_NOTHING, related_name='created_event', to='account.Profile')), + ('visitors', models.ManyToManyField(blank=True, + related_name='events', to='account.Profile')), ], ), migrations.CreateModel( name='Note', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('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(default=common.middleware.CurrentUserMiddleware.get_current_user_profile, on_delete=django.db.models.deletion.DO_NOTHING, related_name='created_notes', to='account.Profile')), - ('event', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='notes', to='stats.Event')), - ('profile', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='notes', to='account.Profile')), + ('created_by', models.ForeignKey(default=common.middleware.CurrentUserMiddleware.get_current_user_profile, + on_delete=django.db.models.deletion.DO_NOTHING, related_name='created_notes', to='account.Profile')), + ('event', models.ForeignKey(blank=True, null=True, + on_delete=django.db.models.deletion.CASCADE, related_name='notes', to='stats.Event')), + ('profile', models.ForeignKey(blank=True, null=True, + on_delete=django.db.models.deletion.CASCADE, related_name='notes', to='account.Profile')), ], ), ] diff --git a/src/stats/migrations/0003_auto_20190122_1449.py b/src/stats/migrations/0003_auto_20190122_1449.py index a3689e8ee847704324f3821df0508d6b89ffbb0d..264620d76494437db53a3fd8629dc4aae72552eb 100644 --- a/src/stats/migrations/0003_auto_20190122_1449.py +++ b/src/stats/migrations/0003_auto_20190122_1449.py @@ -14,11 +14,13 @@ class Migration(migrations.Migration): migrations.AddField( model_name='event', name='absent', - field=models.ManyToManyField(blank=True, related_name='events_absent', to='account.Profile'), + field=models.ManyToManyField( + blank=True, related_name='events_absent', to='account.Profile'), ), migrations.AlterField( model_name='event', name='visitors', - field=models.ManyToManyField(blank=True, related_name='events_visitor', to='account.Profile'), + field=models.ManyToManyField( + blank=True, related_name='events_visitor', to='account.Profile'), ), ] diff --git a/src/stats/models.py b/src/stats/models.py index be958204fba61174220ddc988100c21405f44241..762173fad5b281f05295dac8cb8b2268defe33c2 100644 --- a/src/stats/models.py +++ b/src/stats/models.py @@ -31,8 +31,10 @@ class Event(models.Model): class Note(models.Model): - event = models.ForeignKey(Event, related_name='notes', on_delete=models.CASCADE, blank=True, null=True) - profile = models.ForeignKey(Profile, related_name='notes', on_delete=models.CASCADE, blank=True, null=True) + event = models.ForeignKey( + Event, related_name='notes', on_delete=models.CASCADE, blank=True, null=True) + profile = models.ForeignKey( + Profile, related_name='notes', on_delete=models.CASCADE, blank=True, null=True) note = models.TextField() created_by = models.ForeignKey( Profile, diff --git a/src/stats/resources.py b/src/stats/resources.py index 712c971ae27eb0f4bebfd30be07eb952d8c5fbb7..b2e284c57094b9ec582900772bf7f007bbdd555e 100644 --- a/src/stats/resources.py +++ b/src/stats/resources.py @@ -7,7 +7,8 @@ from . import models class EventResource(resources.ModelResource): visitors = fields.Field( attribute='visitors', - widget=widgets.ManyToManyWidget(model=Profile, separator=' ,', field='full_name'), + widget=widgets.ManyToManyWidget( + model=Profile, separator=' ,', field='full_name'), ) class Meta: diff --git a/src/stats/urls.py b/src/stats/urls.py index 0e669f8037c98287185212ecbe0c2b43c03bd267..51ed16131f024b07b2401965526d8855ff2cdd35 100644 --- a/src/stats/urls.py +++ b/src/stats/urls.py @@ -2,8 +2,10 @@ from rest_framework import routers from . import views router = routers.DefaultRouter() -router.register(r'staff_events', views.StaffEventViewSet, base_name='staff_events') -router.register(r'student_events', views.StudentEventViewSet, base_name='student_events') +router.register(r'staff_events', views.StaffEventViewSet, + base_name='staff_events') +router.register(r'student_events', views.StudentEventViewSet, + base_name='student_events') router.register(r'notes', views.NoteViewSet, base_name='notes') urlpatterns = router.urls