diff --git a/apps/comment/migrations/0002_comment_language.py b/apps/comment/migrations/0002_comment_language.py new file mode 100644 index 00000000..4b0b9ab7 --- /dev/null +++ b/apps/comment/migrations/0002_comment_language.py @@ -0,0 +1,20 @@ +# Generated by Django 2.2.4 on 2019-10-10 11:46 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('translation', '0003_auto_20190901_1032'), + ('comment', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='comment', + name='language', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='translation.Language', verbose_name='Locale'), + ), + ] diff --git a/apps/comment/models.py b/apps/comment/models.py index fe781d4d..0193055d 100644 --- a/apps/comment/models.py +++ b/apps/comment/models.py @@ -6,7 +6,7 @@ from django.utils.translation import gettext_lazy as _ from account.models import User from utils.models import ProjectBaseMixin from utils.querysets import ContentTypeQuerySetMixin - +from translation.models import Language class CommentQuerySet(ContentTypeQuerySetMixin): """QuerySets for Comment model.""" @@ -41,6 +41,7 @@ class Comment(ProjectBaseMixin): content_object = generic.GenericForeignKey('content_type', 'object_id') objects = CommentQuerySet.as_manager() + language = models.ForeignKey(Language, verbose_name=_('Locale'), on_delete=models.SET_NULL, null=True) class Meta: """Meta class""" diff --git a/apps/comment/permissions.py b/apps/comment/permissions.py index 09860c2c..3bfb2b3c 100644 --- a/apps/comment/permissions.py +++ b/apps/comment/permissions.py @@ -13,12 +13,12 @@ class IsCommentModerator(permissions.BasePermission): # so we'll always allow GET, HEAD or OPTIONS requests. if request.method in permissions.SAFE_METHODS: return True - + # user owner is user request if obj.user == request.user: return True - # Instance must have an attribute named `user`. - role = Role.objects.get(role=2) # 'Comments moderator' + # Must have role + role = Role.objects.filter(role=2, country__language=obj.language).first() # 'Comments moderator' is_access = UserRole.objects.filter(user=request.user, role=role).exists() if obj.user != request.user and is_access: return True diff --git a/apps/location/migrations/0011_country_language.py b/apps/location/migrations/0011_country_language.py new file mode 100644 index 00000000..9a6b4e8a --- /dev/null +++ b/apps/location/migrations/0011_country_language.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.4 on 2019-10-10 11:34 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('translation', '0003_auto_20190901_1032'), + ('location', '0010_auto_20190904_0711'), + ] + + operations = [ + migrations.AddField( + model_name='country', + name='language', + field=models.ManyToManyField(to='translation.Language', verbose_name='Language'), + ), + ] diff --git a/apps/location/models.py b/apps/location/models.py index 1cab1815..b11b0ad5 100644 --- a/apps/location/models.py +++ b/apps/location/models.py @@ -6,7 +6,7 @@ from django.db.transaction import on_commit from django.dispatch import receiver from django.utils.translation import gettext_lazy as _ from utils.models import ProjectBaseMixin, SVGImageMixin, TranslatedFieldsMixin, TJSONField - +from translation.models import Language class Country(TranslatedFieldsMixin, SVGImageMixin, ProjectBaseMixin): """Country model.""" @@ -18,6 +18,7 @@ class Country(TranslatedFieldsMixin, SVGImageMixin, ProjectBaseMixin): code = models.CharField(max_length=255, unique=True, verbose_name=_('Code')) low_price = models.IntegerField(default=25, verbose_name=_('Low price')) high_price = models.IntegerField(default=50, verbose_name=_('High price')) + language = models.ManyToManyField(Language, verbose_name=_('Language')) class Meta: """Meta class."""