From 2c43838d70cb028a5efc5cfb85f22355d75015b0 Mon Sep 17 00:00:00 2001 From: Ivlev Denis Date: Sat, 12 May 2018 12:02:57 +0300 Subject: [PATCH] Fix author perms --- api/v1/permissions.py | 2 +- apps/course/migrations/0038_lesson_author.py | 21 ++++++++++++ apps/course/models.py | 8 +++++ .../migrations/0018_auto_20180512_1202.py | 32 +++++++++++++++++++ 4 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 apps/course/migrations/0038_lesson_author.py create mode 100644 apps/payment/migrations/0018_auto_20180512_1202.py diff --git a/api/v1/permissions.py b/api/v1/permissions.py index 9af001d6..73e7674f 100644 --- a/api/v1/permissions.py +++ b/api/v1/permissions.py @@ -41,4 +41,4 @@ class IsAuthorObjectOrAdmin(BasePermission): def has_object_permission(self, request, view, obj): return request.user.is_authenticated and ( request.user.role == User.ADMIN_ROLE or request.user.is_staff or request.user.is_superuser - ) and request.user == obj.author + ) or request.user == obj.author diff --git a/apps/course/migrations/0038_lesson_author.py b/apps/course/migrations/0038_lesson_author.py new file mode 100644 index 00000000..9b46c125 --- /dev/null +++ b/apps/course/migrations/0038_lesson_author.py @@ -0,0 +1,21 @@ +# Generated by Django 2.0.4 on 2018-05-12 12:02 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('course', '0037_auto_20180507_1422'), + ] + + operations = [ + migrations.AddField( + model_name='lesson', + name='author', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/apps/course/models.py b/apps/course/models.py index 54384890..7d0300c7 100644 --- a/apps/course/models.py +++ b/apps/course/models.py @@ -164,6 +164,9 @@ class Category(models.Model): class Lesson(BaseModel, DeactivatedMixin): title = models.CharField('Название урока', max_length=100) short_description = models.TextField('Краткое описание урока') + author = models.ForeignKey( + User, on_delete=models.SET_NULL, null=True, blank=True + ) course = models.ForeignKey( Course, on_delete=models.CASCADE, related_name='lessons' ) @@ -178,6 +181,11 @@ class Lesson(BaseModel, DeactivatedMixin): def __str__(self): return self.title + def save(self, *args, **kwargs): + if not self.author and self.course and self.course.author: + self.author = self.course.author + super().save(*args, **kwargs) + class Meta: verbose_name = 'Урок' verbose_name_plural = 'Уроки' diff --git a/apps/payment/migrations/0018_auto_20180512_1202.py b/apps/payment/migrations/0018_auto_20180512_1202.py new file mode 100644 index 00000000..ac2cb9ff --- /dev/null +++ b/apps/payment/migrations/0018_auto_20180512_1202.py @@ -0,0 +1,32 @@ +# Generated by Django 2.0.4 on 2018-05-12 12:02 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('payment', '0017_schoolpayment_add_days'), + ] + + operations = [ + migrations.AlterModelOptions( + name='payment', + options={'ordering': ('created_at',), 'verbose_name': 'Платеж', 'verbose_name_plural': 'Платежи'}, + ), + migrations.AlterModelManagers( + name='coursepayment', + managers=[ + ], + ), + migrations.AlterModelManagers( + name='payment', + managers=[ + ], + ), + migrations.AlterModelManagers( + name='schoolpayment', + managers=[ + ], + ), + ]