Merge remote-tracking branch 'origin/origin/migration_fix' into migration_fix
This commit is contained in:
commit
59371fae9a
|
|
@ -1,10 +1,13 @@
|
||||||
from rest_framework.test import APITestCase
|
|
||||||
from rest_framework import status
|
|
||||||
from authorization.tests.tests_authorization import get_tokens_for_user
|
|
||||||
from django.urls import reverse
|
|
||||||
from http.cookies import SimpleCookie
|
from http.cookies import SimpleCookie
|
||||||
|
|
||||||
|
from django.urls import reverse
|
||||||
|
from rest_framework import status
|
||||||
|
from rest_framework.test import APITestCase
|
||||||
|
|
||||||
|
from account.models import Role, User
|
||||||
|
from authorization.tests.tests_authorization import get_tokens_for_user
|
||||||
from location.models import Country
|
from location.models import Country
|
||||||
from account.models import Role, User, UserRole
|
|
||||||
|
|
||||||
class RoleTests(APITestCase):
|
class RoleTests(APITestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|
@ -65,9 +68,11 @@ class UserRoleTests(APITestCase):
|
||||||
)
|
)
|
||||||
self.role.save()
|
self.role.save()
|
||||||
|
|
||||||
self.user_test = User.objects.create_user(username='test',
|
self.user_test = User.objects.create_user(
|
||||||
|
username='test',
|
||||||
email='testemail@mail.com',
|
email='testemail@mail.com',
|
||||||
password='passwordtest')
|
password='passwordtest'
|
||||||
|
)
|
||||||
|
|
||||||
def test_user_role_post(self):
|
def test_user_role_post(self):
|
||||||
url = reverse('back:account:user-role-list-create')
|
url = reverse('back:account:user-role-list-create')
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
from rest_framework.test import APITestCase
|
|
||||||
from rest_framework import status
|
|
||||||
from authorization.tests.tests_authorization import get_tokens_for_user
|
|
||||||
from http.cookies import SimpleCookie
|
from http.cookies import SimpleCookie
|
||||||
from account.models import User
|
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
from rest_framework import status
|
||||||
|
from rest_framework.test import APITestCase
|
||||||
|
|
||||||
|
from account.models import User
|
||||||
|
from authorization.tests.tests_authorization import get_tokens_for_user
|
||||||
|
|
||||||
|
|
||||||
class AccountUserTests(APITestCase):
|
class AccountUserTests(APITestCase):
|
||||||
|
|
@ -62,7 +64,7 @@ class AccountChangePasswordTests(APITestCase):
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
|
|
||||||
class AccountChangePasswordTests(APITestCase):
|
class AccountConfirmEmail(APITestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.data = get_tokens_for_user()
|
self.data = get_tokens_for_user()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,12 @@ def transfer_user():
|
||||||
# queryset = Profiles.objects.all()
|
# queryset = Profiles.objects.all()
|
||||||
# queryset = queryset.annotate(nickname=F("account__nickname"))
|
# queryset = queryset.annotate(nickname=F("account__nickname"))
|
||||||
# queryset = queryset.annotate(email=F("account__email"))
|
# queryset = queryset.annotate(email=F("account__email"))
|
||||||
|
stop_list = ['cyril@tomatic.net',
|
||||||
queryset = Accounts.objects.filter(confirmed_at__isnull=False)
|
'cyril2@tomatic.net',
|
||||||
|
'd.sadykova@id-east.ru',
|
||||||
|
'd.sadykova@octopod.ru',
|
||||||
|
'n.yurchenko@id-east.ru']
|
||||||
|
queryset = Accounts.objects.filter(confirmed_at__isnull=False).exclude(email__in=stop_list)
|
||||||
|
|
||||||
serialized_data = UserSerializer(data=list(queryset.values()), many=True)
|
serialized_data = UserSerializer(data=list(queryset.values()), many=True)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
from rest_framework.test import APITestCase
|
|
||||||
from account.models import User
|
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
# Create your tests here.
|
from rest_framework.test import APITestCase
|
||||||
|
|
||||||
|
from account.models import User
|
||||||
|
|
||||||
|
|
||||||
def get_tokens_for_user(
|
def get_tokens_for_user(
|
||||||
|
|
@ -28,7 +28,7 @@ class AuthorizationTests(APITestCase):
|
||||||
self.password = data["password"]
|
self.password = data["password"]
|
||||||
|
|
||||||
def LoginTests(self):
|
def LoginTests(self):
|
||||||
data ={
|
data = {
|
||||||
'username_or_email': self.username,
|
'username_or_email': self.username,
|
||||||
'password': self.password,
|
'password': self.password,
|
||||||
'remember': True
|
'remember': True
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,13 @@
|
||||||
from utils.tests.tests_permissions import BasePermissionTests
|
|
||||||
from rest_framework import status
|
|
||||||
from authorization.tests.tests_authorization import get_tokens_for_user
|
|
||||||
from django.urls import reverse
|
|
||||||
from django.contrib.contenttypes.models import ContentType
|
|
||||||
from http.cookies import SimpleCookie
|
from http.cookies import SimpleCookie
|
||||||
|
|
||||||
|
from django.contrib.contenttypes.models import ContentType
|
||||||
|
from django.urls import reverse
|
||||||
|
from rest_framework import status
|
||||||
|
|
||||||
from account.models import Role, User, UserRole
|
from account.models import Role, User, UserRole
|
||||||
|
from authorization.tests.tests_authorization import get_tokens_for_user
|
||||||
from comment.models import Comment
|
from comment.models import Comment
|
||||||
|
from utils.tests.tests_permissions import BasePermissionTests
|
||||||
|
|
||||||
|
|
||||||
class CommentModeratorPermissionTests(BasePermissionTests):
|
class CommentModeratorPermissionTests(BasePermissionTests):
|
||||||
|
|
@ -40,7 +42,6 @@ class CommentModeratorPermissionTests(BasePermissionTests):
|
||||||
self.comment.save()
|
self.comment.save()
|
||||||
self.url = reverse('back:comment:comment-crud', kwargs={"id": self.comment.id})
|
self.url = reverse('back:comment:comment-crud', kwargs={"id": self.comment.id})
|
||||||
|
|
||||||
|
|
||||||
def test_put_moderator(self):
|
def test_put_moderator(self):
|
||||||
tokens = User.create_jwt_tokens(self.moderator)
|
tokens = User.create_jwt_tokens(self.moderator)
|
||||||
self.client.cookies = SimpleCookie(
|
self.client.cookies = SimpleCookie(
|
||||||
|
|
|
||||||
|
|
@ -4,18 +4,19 @@ from django.contrib.contenttypes.admin import GenericTabularInline
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from comment.models import Comment
|
from comment.models import Comment
|
||||||
|
from utils.admin import BaseModelAdminMixin
|
||||||
from establishment import models
|
from establishment import models
|
||||||
from main.models import Award
|
from main.models import Award
|
||||||
from review import models as review_models
|
from review import models as review_models
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.EstablishmentType)
|
@admin.register(models.EstablishmentType)
|
||||||
class EstablishmentTypeAdmin(admin.ModelAdmin):
|
class EstablishmentTypeAdmin(BaseModelAdminMixin):
|
||||||
"""EstablishmentType admin."""
|
"""EstablishmentType admin."""
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.EstablishmentSubType)
|
@admin.register(models.EstablishmentSubType)
|
||||||
class EstablishmentSubTypeAdmin(admin.ModelAdmin):
|
class EstablishmentSubTypeAdmin(BaseModelAdminMixin):
|
||||||
"""EstablishmentSubType admin."""
|
"""EstablishmentSubType admin."""
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -47,17 +48,18 @@ class CommentInline(GenericTabularInline):
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.Establishment)
|
@admin.register(models.Establishment)
|
||||||
class EstablishmentAdmin(admin.ModelAdmin):
|
class EstablishmentAdmin(BaseModelAdminMixin):
|
||||||
"""Establishment admin."""
|
"""Establishment admin."""
|
||||||
list_display = ['id', '__str__', 'image_tag', ]
|
list_display = ['id', '__str__', 'image_tag', ]
|
||||||
inlines = [
|
inlines = [
|
||||||
AwardInline, ContactPhoneInline, ContactEmailInline,
|
AwardInline, ContactPhoneInline, ContactEmailInline,
|
||||||
ReviewInline, CommentInline]
|
ReviewInline, CommentInline]
|
||||||
raw_id_fields = ('address',)
|
raw_id_fields = ('address',)
|
||||||
|
fields = ['old_id', 'name']
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.Position)
|
@admin.register(models.Position)
|
||||||
class PositionAdmin(admin.ModelAdmin):
|
class PositionAdmin(BaseModelAdminMixin):
|
||||||
"""Position admin."""
|
"""Position admin."""
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -68,7 +70,7 @@ class PlateInline(admin.TabularInline):
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.Menu)
|
@admin.register(models.Menu)
|
||||||
class MenuAdmin(admin.ModelAdmin):
|
class MenuAdmin(BaseModelAdminMixin):
|
||||||
"""Menu admin."""
|
"""Menu admin."""
|
||||||
list_display = ['id', 'category_translated']
|
list_display = ['id', 'category_translated']
|
||||||
inlines = [
|
inlines = [
|
||||||
|
|
|
||||||
|
|
@ -20,13 +20,14 @@ class BaseTestCase(APITestCase):
|
||||||
self.newsletter = True
|
self.newsletter = True
|
||||||
self.user = User.objects.create_user(
|
self.user = User.objects.create_user(
|
||||||
username=self.username, email=self.email, password=self.password)
|
username=self.username, email=self.email, password=self.password)
|
||||||
#get tokkens
|
# get tokens
|
||||||
tokkens = User.create_jwt_tokens(self.user)
|
tokens = User.create_jwt_tokens(self.user)
|
||||||
self.client.cookies = SimpleCookie(
|
self.client.cookies = SimpleCookie(
|
||||||
{'access_token': tokkens.get('access_token'),
|
{'access_token': tokens.get('access_token'),
|
||||||
'refresh_token': tokkens.get('refresh_token')})
|
'refresh_token': tokens.get('refresh_token')})
|
||||||
|
|
||||||
self.establishment_type = EstablishmentType.objects.create(name="Test establishment type")
|
self.establishment_type = EstablishmentType.objects.create(
|
||||||
|
name="Test establishment type")
|
||||||
|
|
||||||
# Create lang object
|
# Create lang object
|
||||||
self.lang = Language.objects.get(
|
self.lang = Language.objects.get(
|
||||||
|
|
@ -42,11 +43,14 @@ class BaseTestCase(APITestCase):
|
||||||
country=self.country_ru)
|
country=self.country_ru)
|
||||||
self.region.save()
|
self.region.save()
|
||||||
|
|
||||||
self.city = City.objects.create(name='Mosocow', code='01',
|
self.city = City.objects.create(
|
||||||
region=self.region, country=self.country_ru)
|
name='Mosocow', code='01',
|
||||||
|
region=self.region,
|
||||||
|
country=self.country_ru)
|
||||||
self.city.save()
|
self.city.save()
|
||||||
|
|
||||||
self.address = Address.objects.create(city=self.city, street_name_1='Krasnaya',
|
self.address = Address.objects.create(
|
||||||
|
city=self.city, street_name_1='Krasnaya',
|
||||||
number=2, postal_code='010100')
|
number=2, postal_code='010100')
|
||||||
self.address.save()
|
self.address.save()
|
||||||
|
|
||||||
|
|
@ -63,7 +67,8 @@ class BaseTestCase(APITestCase):
|
||||||
|
|
||||||
self.establishment.save()
|
self.establishment.save()
|
||||||
|
|
||||||
self.user_role = UserRole.objects.create(user=self.user, role=self.role,
|
self.user_role = UserRole.objects.create(
|
||||||
|
user=self.user, role=self.role,
|
||||||
establishment=self.establishment)
|
establishment=self.establishment)
|
||||||
self.user_role.save()
|
self.user_role.save()
|
||||||
|
|
||||||
|
|
@ -128,12 +133,11 @@ class EmployeeTests(BaseTestCase):
|
||||||
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
||||||
|
|
||||||
|
|
||||||
# Class to test childs
|
|
||||||
class ChildTestCase(BaseTestCase):
|
class ChildTestCase(BaseTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
|
||||||
# Test childs
|
|
||||||
class EmailTests(ChildTestCase):
|
class EmailTests(ChildTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
|
|
||||||
|
|
@ -61,9 +61,6 @@ class BaseTestCase(APITestCase):
|
||||||
description={"en-GB": "description of test establishment"},
|
description={"en-GB": "description of test establishment"},
|
||||||
establishment_type=self.test_establishment_type,
|
establishment_type=self.test_establishment_type,
|
||||||
is_publish=True)
|
is_publish=True)
|
||||||
# value for GenericRelation(reverse side) field must be iterable
|
|
||||||
# value for GenericRelation(reverse side) field must be assigned through
|
|
||||||
# "set" method of field
|
|
||||||
self.test_establishment.favorites.set([self.test_favorites])
|
self.test_establishment.favorites.set([self.test_favorites])
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,15 +19,10 @@ class BaseTestCase(APITestCase):
|
||||||
self.user = User.objects.create_user(
|
self.user = User.objects.create_user(
|
||||||
username=self.username, email=self.email, password=self.password)
|
username=self.username, email=self.email, password=self.password)
|
||||||
|
|
||||||
# get tokens
|
tokens = User.create_jwt_tokens(self.user)
|
||||||
|
|
||||||
# self.user.is_superuser = True
|
|
||||||
# self.user.save()
|
|
||||||
|
|
||||||
tokkens = User.create_jwt_tokens(self.user)
|
|
||||||
self.client.cookies = SimpleCookie(
|
self.client.cookies = SimpleCookie(
|
||||||
{'access_token': tokkens.get('access_token'),
|
{'access_token': tokens.get('access_token'),
|
||||||
'refresh_token': tokkens.get('refresh_token')})
|
'refresh_token': tokens.get('refresh_token')})
|
||||||
|
|
||||||
self.lang = Language.objects.get(
|
self.lang = Language.objects.get(
|
||||||
title='Russia',
|
title='Russia',
|
||||||
|
|
@ -102,7 +97,6 @@ class RegionTests(BaseTestCase):
|
||||||
|
|
||||||
user_role.save()
|
user_role.save()
|
||||||
|
|
||||||
|
|
||||||
def test_region_CRUD(self):
|
def test_region_CRUD(self):
|
||||||
response = self.client.get('/api/back/location/regions/', format='json')
|
response = self.client.get('/api/back/location/regions/', format='json')
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
|
||||||
|
|
@ -63,6 +63,8 @@ class SiteSettingsSerializer(serializers.ModelSerializer):
|
||||||
# todo: remove this
|
# todo: remove this
|
||||||
country_code = serializers.CharField(source='subdomain', read_only=True)
|
country_code = serializers.CharField(source='subdomain', read_only=True)
|
||||||
|
|
||||||
|
country_name = serializers.CharField(source='country.name_translated', read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
"""Meta class."""
|
"""Meta class."""
|
||||||
|
|
||||||
|
|
@ -78,7 +80,8 @@ class SiteSettingsSerializer(serializers.ModelSerializer):
|
||||||
'config',
|
'config',
|
||||||
'ad_config',
|
'ad_config',
|
||||||
'published_features',
|
'published_features',
|
||||||
'currency'
|
'currency',
|
||||||
|
'country_name'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ from django.conf import settings
|
||||||
|
|
||||||
from news import models
|
from news import models
|
||||||
from .tasks import send_email_with_news
|
from .tasks import send_email_with_news
|
||||||
|
from utils.admin import BaseModelAdminMixin
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.NewsType)
|
@admin.register(models.NewsType)
|
||||||
|
|
@ -24,7 +25,7 @@ send_email_action.short_description = "Send the selected news by email"
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.News)
|
@admin.register(models.News)
|
||||||
class NewsAdmin(admin.ModelAdmin):
|
class NewsAdmin(BaseModelAdminMixin):
|
||||||
"""News admin."""
|
"""News admin."""
|
||||||
raw_id_fields = ('address',)
|
raw_id_fields = ('address',)
|
||||||
actions = [send_email_action]
|
actions = [send_email_action]
|
||||||
|
|
|
||||||
|
|
@ -15,10 +15,10 @@ class BaseTestCase(APITestCase):
|
||||||
self.password = 'sedragurdaredips19'
|
self.password = 'sedragurdaredips19'
|
||||||
self.email = 'sedragurda@desoz.com'
|
self.email = 'sedragurda@desoz.com'
|
||||||
self.user = User.objects.create_user(username=self.username, email=self.email, password=self.password)
|
self.user = User.objects.create_user(username=self.username, email=self.email, password=self.password)
|
||||||
# get tokkens
|
# get tokens
|
||||||
tokkens = User.create_jwt_tokens(self.user)
|
tokens = User.create_jwt_tokens(self.user)
|
||||||
self.client.cookies = SimpleCookie({'access_token': tokkens.get('access_token'),
|
self.client.cookies = SimpleCookie({'access_token': tokens.get('access_token'),
|
||||||
'refresh_token': tokkens.get('refresh_token')})
|
'refresh_token': tokens.get('refresh_token')})
|
||||||
|
|
||||||
|
|
||||||
class NotificationAnonSubscribeTestCase(APITestCase):
|
class NotificationAnonSubscribeTestCase(APITestCase):
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,5 @@ class BaseTestCase(APITestCase):
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
def test_recipe_detail(self):
|
def test_recipe_detail(self):
|
||||||
print(self.test_recipe.id)
|
|
||||||
response = self.client.get(f"/api/web/recipes/{self.test_recipe.id}/")
|
response = self.client.get(f"/api/web/recipes/{self.test_recipe.id}/")
|
||||||
print(response.json())
|
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
"""Admin page for app Review"""
|
"""Admin page for app Review"""
|
||||||
from . import models
|
from . import models
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
from utils.admin import BaseModelAdminMixin
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.Review)
|
@admin.register(models.Review)
|
||||||
class ReviewAdminModel(admin.ModelAdmin):
|
class ReviewAdminModel(BaseModelAdminMixin):
|
||||||
"""Admin model for model Review."""
|
"""Admin model for model Review."""
|
||||||
|
|
|
||||||
36
apps/utils/admin.py
Normal file
36
apps/utils/admin.py
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
"""Mixins for admin models."""
|
||||||
|
from django.contrib import admin
|
||||||
|
from django.db.models import ForeignKey
|
||||||
|
|
||||||
|
|
||||||
|
class BaseModelAdminMixin(admin.ModelAdmin):
|
||||||
|
"""
|
||||||
|
Class that overridden ModelAdmin and adds to readonly_fields attr
|
||||||
|
persisted fields like created_by, modified_by.
|
||||||
|
"""
|
||||||
|
|
||||||
|
_PERSISTENT_READ_ONLY_FIELDS = ['created_by', 'modified_by']
|
||||||
|
|
||||||
|
def _get_fk_field_names(self, fields: iter):
|
||||||
|
"""
|
||||||
|
Return an iterable object which contains FK model fields.
|
||||||
|
:param fields: iterable
|
||||||
|
:return: iterable
|
||||||
|
"""
|
||||||
|
foreign_key_fields = []
|
||||||
|
for field in fields:
|
||||||
|
if isinstance(field, ForeignKey):
|
||||||
|
foreign_key_fields.append(field.name)
|
||||||
|
return foreign_key_fields
|
||||||
|
|
||||||
|
def get_readonly_fields(self, request, obj=None):
|
||||||
|
"""
|
||||||
|
Hook for specifying custom readonly fields.
|
||||||
|
"""
|
||||||
|
_readonly_fields = list(self.readonly_fields)
|
||||||
|
fk_field_names = self._get_fk_field_names(self.model._meta.fields)
|
||||||
|
|
||||||
|
for field_name in fk_field_names:
|
||||||
|
if field_name in self._PERSISTENT_READ_ONLY_FIELDS:
|
||||||
|
_readonly_fields.append(field_name)
|
||||||
|
return tuple(_readonly_fields)
|
||||||
|
|
@ -331,3 +331,6 @@ class GMTokenGenerator(PasswordResetTokenGenerator):
|
||||||
used.
|
used.
|
||||||
"""
|
"""
|
||||||
return self.get_fields(user, timestamp)
|
return self.get_fields(user, timestamp)
|
||||||
|
|
||||||
|
|
||||||
|
timezone.datetime.now().date().isoformat()
|
||||||
|
|
@ -62,7 +62,6 @@ class TranslateFieldTests(BaseTestCase):
|
||||||
response = self.client.get(f"/api/web/news/slug/{self.news_item.slug}/", format='json')
|
response = self.client.get(f"/api/web/news/slug/{self.news_item.slug}/", format='json')
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
news_data = response.json()
|
news_data = response.json()
|
||||||
print(news_data)
|
|
||||||
self.assertIn("title_translated", news_data)
|
self.assertIn("title_translated", news_data)
|
||||||
|
|
||||||
self.assertIn("Test news item", news_data['title_translated'])
|
self.assertIn("Test news item", news_data['title_translated'])
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user