Fix merge

This commit is contained in:
Виктор Гладких 2019-10-25 15:56:02 +03:00
commit fb770f8e2a
15 changed files with 87 additions and 54 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 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(
email='testemail@mail.com', username='test',
password='passwordtest') email='testemail@mail.com',
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')

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 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()

View File

@ -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

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 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):

View File

@ -120,6 +120,11 @@ class EstablishmentQuerySet(models.QuerySet):
def with_type_related(self): def with_type_related(self):
return self.prefetch_related('establishment_subtypes') return self.prefetch_related('establishment_subtypes')
def with_es_related(self):
"""Return qs with related for ES indexing objects."""
return self.select_related('address', 'establishment_type', 'address__city', 'address__city__country').\
prefetch_related('tags', 'schedule')
def search(self, value, locale=None): def search(self, value, locale=None):
"""Search text in JSON fields.""" """Search text in JSON fields."""
if locale is not None: if locale is not None:

View File

@ -1,10 +1,15 @@
"""Establishment app tasks.""" """Establishment app tasks."""
import logging import logging
from celery import shared_task from celery import shared_task
from celery.schedules import crontab
from celery.task import periodic_task
from django.core import management
from django_elasticsearch_dsl.management.commands import search_index
from establishment import models from establishment import models
from location.models import Country from location.models import Country
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -12,10 +17,15 @@ logger = logging.getLogger(__name__)
def recalculate_price_levels_by_country(country_id): def recalculate_price_levels_by_country(country_id):
try: try:
country = Country.objects.get(pk=country_id) country = Country.objects.get(pk=country_id)
except Country.DoesNotExist as ex: except Country.DoesNotExist as _:
logger.error(f'ESTABLISHMENT. Country does not exist. ID {country_id}') logger.error(f'ESTABLISHMENT. Country does not exist. ID {country_id}')
else: else:
qs = models.Establishment.objects.filter(address__city__country=country) qs = models.Establishment.objects.filter(address__city__country=country)
for establishment in qs: for establishment in qs:
establishment.recalculate_price_level(low_price=country.low_price, establishment.recalculate_price_level(low_price=country.low_price,
high_price=country.high_price) high_price=country.high_price)
@periodic_task(run_every=crontab(minute=59))
def rebuild_establishment_indices():
management.call_command(search_index.Command(), action='rebuild', models=[models.Establishment.__name__],
force=True)

View File

@ -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,12 +43,15 @@ 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(
number=2, postal_code='010100') city=self.city, street_name_1='Krasnaya',
number=2, postal_code='010100')
self.address.save() self.address.save()
self.role = Role.objects.create(role=Role.ESTABLISHMENT_MANAGER) self.role = Role.objects.create(role=Role.ESTABLISHMENT_MANAGER)
@ -63,8 +67,9 @@ 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(
establishment=self.establishment) user=self.user, role=self.role,
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()

View File

@ -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])

View File

@ -19,10 +19,11 @@ 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)
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.lang = Language.objects.get( self.lang = Language.objects.get(
title='Russia', title='Russia',
@ -97,7 +98,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)

View File

@ -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'
) )

View File

@ -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):

View File

@ -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)

View File

@ -106,4 +106,4 @@ class EstablishmentDocument(Document):
) )
def get_queryset(self): def get_queryset(self):
return super().get_queryset().published() return super().get_queryset().published().with_es_related()

View File

@ -9,6 +9,7 @@ from account.models import User
from news.models import News, NewsType from news.models import News, NewsType
from establishment.models import Establishment, EstablishmentType, Employee from establishment.models import Establishment, EstablishmentType, Employee
from location.models import Country
class BaseTestCase(APITestCase): class BaseTestCase(APITestCase):
@ -39,7 +40,13 @@ class TranslateFieldTests(BaseTestCase):
self.news_type = NewsType.objects.create(name="Test news type") self.news_type = NewsType.objects.create(name="Test news type")
self.news_type.save() self.news_type.save()
self.country_ru = Country.objects.get(
name={"en-GB": "Russian"}
)
self.news_item = News.objects.create( self.news_item = News.objects.create(
id=8,
created_by=self.user, created_by=self.user,
modified_by=self.user, modified_by=self.user,
title={ title={
@ -52,6 +59,7 @@ class TranslateFieldTests(BaseTestCase):
news_type=self.news_type, news_type=self.news_type,
slug='test', slug='test',
state=News.PUBLISHED, state=News.PUBLISHED,
country=self.country_ru,
) )
self.news_item.save() self.news_item.save()
@ -62,7 +70,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'])

View File

@ -98,7 +98,7 @@ EXTERNAL_APPS = [
'timezone_field', 'timezone_field',
'storages', 'storages',
'sorl.thumbnail', 'sorl.thumbnail',
'timezonefinder' 'timezonefinder',
] ]