Merge remote-tracking branch 'origin/origin/migration_fix' into migration_fix

This commit is contained in:
alex 2019-10-29 16:43:27 +03:00
commit 59371fae9a
17 changed files with 115 additions and 65 deletions

View File

@ -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 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 account.models import Role, User, UserRole
class RoleTests(APITestCase):
def setUp(self):
@ -65,9 +68,11 @@ class UserRoleTests(APITestCase):
)
self.role.save()
self.user_test = User.objects.create_user(username='test',
email='testemail@mail.com',
password='passwordtest')
self.user_test = User.objects.create_user(
username='test',
email='testemail@mail.com',
password='passwordtest'
)
def test_user_role_post(self):
url = reverse('back:account:user-role-list-create')

View File

@ -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 account.models import User
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):
@ -62,7 +64,7 @@ class AccountChangePasswordTests(APITestCase):
self.assertEqual(response.status_code, status.HTTP_200_OK)
class AccountChangePasswordTests(APITestCase):
class AccountConfirmEmail(APITestCase):
def setUp(self):
self.data = get_tokens_for_user()

View File

@ -8,8 +8,12 @@ def transfer_user():
# queryset = Profiles.objects.all()
# queryset = queryset.annotate(nickname=F("account__nickname"))
# queryset = queryset.annotate(email=F("account__email"))
queryset = Accounts.objects.filter(confirmed_at__isnull=False)
stop_list = ['cyril@tomatic.net',
'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)

View File

@ -1,7 +1,7 @@
from rest_framework.test import APITestCase
from account.models import User
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(
@ -28,7 +28,7 @@ class AuthorizationTests(APITestCase):
self.password = data["password"]
def LoginTests(self):
data ={
data = {
'username_or_email': self.username,
'password': self.password,
'remember': True

View File

@ -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 django.contrib.contenttypes.models import ContentType
from django.urls import reverse
from rest_framework import status
from account.models import Role, User, UserRole
from authorization.tests.tests_authorization import get_tokens_for_user
from comment.models import Comment
from utils.tests.tests_permissions import BasePermissionTests
class CommentModeratorPermissionTests(BasePermissionTests):
@ -40,7 +42,6 @@ class CommentModeratorPermissionTests(BasePermissionTests):
self.comment.save()
self.url = reverse('back:comment:comment-crud', kwargs={"id": self.comment.id})
def test_put_moderator(self):
tokens = User.create_jwt_tokens(self.moderator)
self.client.cookies = SimpleCookie(

View File

@ -4,18 +4,19 @@ from django.contrib.contenttypes.admin import GenericTabularInline
from django.utils.translation import gettext_lazy as _
from comment.models import Comment
from utils.admin import BaseModelAdminMixin
from establishment import models
from main.models import Award
from review import models as review_models
@admin.register(models.EstablishmentType)
class EstablishmentTypeAdmin(admin.ModelAdmin):
class EstablishmentTypeAdmin(BaseModelAdminMixin):
"""EstablishmentType admin."""
@admin.register(models.EstablishmentSubType)
class EstablishmentSubTypeAdmin(admin.ModelAdmin):
class EstablishmentSubTypeAdmin(BaseModelAdminMixin):
"""EstablishmentSubType admin."""
@ -47,17 +48,18 @@ class CommentInline(GenericTabularInline):
@admin.register(models.Establishment)
class EstablishmentAdmin(admin.ModelAdmin):
class EstablishmentAdmin(BaseModelAdminMixin):
"""Establishment admin."""
list_display = ['id', '__str__', 'image_tag', ]
inlines = [
AwardInline, ContactPhoneInline, ContactEmailInline,
ReviewInline, CommentInline]
raw_id_fields = ('address',)
fields = ['old_id', 'name']
@admin.register(models.Position)
class PositionAdmin(admin.ModelAdmin):
class PositionAdmin(BaseModelAdminMixin):
"""Position admin."""
@ -68,7 +70,7 @@ class PlateInline(admin.TabularInline):
@admin.register(models.Menu)
class MenuAdmin(admin.ModelAdmin):
class MenuAdmin(BaseModelAdminMixin):
"""Menu admin."""
list_display = ['id', 'category_translated']
inlines = [

View File

@ -20,13 +20,14 @@ class BaseTestCase(APITestCase):
self.newsletter = True
self.user = User.objects.create_user(
username=self.username, email=self.email, password=self.password)
#get tokkens
tokkens = User.create_jwt_tokens(self.user)
# get tokens
tokens = User.create_jwt_tokens(self.user)
self.client.cookies = SimpleCookie(
{'access_token': tokkens.get('access_token'),
'refresh_token': tokkens.get('refresh_token')})
{'access_token': tokens.get('access_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
self.lang = Language.objects.get(
@ -42,12 +43,15 @@ class BaseTestCase(APITestCase):
country=self.country_ru)
self.region.save()
self.city = City.objects.create(name='Mosocow', code='01',
region=self.region, country=self.country_ru)
self.city = City.objects.create(
name='Mosocow', code='01',
region=self.region,
country=self.country_ru)
self.city.save()
self.address = Address.objects.create(city=self.city, street_name_1='Krasnaya',
number=2, postal_code='010100')
self.address = Address.objects.create(
city=self.city, street_name_1='Krasnaya',
number=2, postal_code='010100')
self.address.save()
self.role = Role.objects.create(role=Role.ESTABLISHMENT_MANAGER)
@ -63,8 +67,9 @@ class BaseTestCase(APITestCase):
self.establishment.save()
self.user_role = UserRole.objects.create(user=self.user, role=self.role,
establishment=self.establishment)
self.user_role = UserRole.objects.create(
user=self.user, role=self.role,
establishment=self.establishment)
self.user_role.save()
@ -128,12 +133,11 @@ class EmployeeTests(BaseTestCase):
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
# Class to test childs
class ChildTestCase(BaseTestCase):
def setUp(self):
super().setUp()
# Test childs
class EmailTests(ChildTestCase):
def setUp(self):
super().setUp()

View File

@ -61,9 +61,6 @@ class BaseTestCase(APITestCase):
description={"en-GB": "description of test establishment"},
establishment_type=self.test_establishment_type,
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])

View File

@ -19,15 +19,10 @@ class BaseTestCase(APITestCase):
self.user = User.objects.create_user(
username=self.username, email=self.email, password=self.password)
# get tokens
# self.user.is_superuser = True
# self.user.save()
tokkens = User.create_jwt_tokens(self.user)
tokens = User.create_jwt_tokens(self.user)
self.client.cookies = SimpleCookie(
{'access_token': tokkens.get('access_token'),
'refresh_token': tokkens.get('refresh_token')})
{'access_token': tokens.get('access_token'),
'refresh_token': tokens.get('refresh_token')})
self.lang = Language.objects.get(
title='Russia',
@ -102,7 +97,6 @@ class RegionTests(BaseTestCase):
user_role.save()
def test_region_CRUD(self):
response = self.client.get('/api/back/location/regions/', format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)

View File

@ -63,6 +63,8 @@ class SiteSettingsSerializer(serializers.ModelSerializer):
# todo: remove this
country_code = serializers.CharField(source='subdomain', read_only=True)
country_name = serializers.CharField(source='country.name_translated', read_only=True)
class Meta:
"""Meta class."""
@ -78,7 +80,8 @@ class SiteSettingsSerializer(serializers.ModelSerializer):
'config',
'ad_config',
'published_features',
'currency'
'currency',
'country_name'
)

View File

@ -3,6 +3,7 @@ from django.conf import settings
from news import models
from .tasks import send_email_with_news
from utils.admin import BaseModelAdminMixin
@admin.register(models.NewsType)
@ -24,7 +25,7 @@ send_email_action.short_description = "Send the selected news by email"
@admin.register(models.News)
class NewsAdmin(admin.ModelAdmin):
class NewsAdmin(BaseModelAdminMixin):
"""News admin."""
raw_id_fields = ('address',)
actions = [send_email_action]

View File

@ -15,10 +15,10 @@ class BaseTestCase(APITestCase):
self.password = 'sedragurdaredips19'
self.email = 'sedragurda@desoz.com'
self.user = User.objects.create_user(username=self.username, email=self.email, password=self.password)
# get tokkens
tokkens = User.create_jwt_tokens(self.user)
self.client.cookies = SimpleCookie({'access_token': tokkens.get('access_token'),
'refresh_token': tokkens.get('refresh_token')})
# get tokens
tokens = User.create_jwt_tokens(self.user)
self.client.cookies = SimpleCookie({'access_token': tokens.get('access_token'),
'refresh_token': tokens.get('refresh_token')})
class NotificationAnonSubscribeTestCase(APITestCase):

View File

@ -27,7 +27,5 @@ class BaseTestCase(APITestCase):
self.assertEqual(response.status_code, status.HTTP_200_OK)
def test_recipe_detail(self):
print(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)

View File

@ -1,8 +1,9 @@
"""Admin page for app Review"""
from . import models
from django.contrib import admin
from utils.admin import BaseModelAdminMixin
@admin.register(models.Review)
class ReviewAdminModel(admin.ModelAdmin):
class ReviewAdminModel(BaseModelAdminMixin):
"""Admin model for model Review."""

36
apps/utils/admin.py Normal file
View 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)

View File

@ -331,3 +331,6 @@ class GMTokenGenerator(PasswordResetTokenGenerator):
used.
"""
return self.get_fields(user, timestamp)
timezone.datetime.now().date().isoformat()

View File

@ -62,7 +62,6 @@ class TranslateFieldTests(BaseTestCase):
response = self.client.get(f"/api/web/news/slug/{self.news_item.slug}/", format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
news_data = response.json()
print(news_data)
self.assertIn("title_translated", news_data)
self.assertIn("Test news item", news_data['title_translated'])