diff --git a/apps/news/models.py b/apps/news/models.py index 7135157c..94b43d0a 100644 --- a/apps/news/models.py +++ b/apps/news/models.py @@ -61,8 +61,7 @@ class NewsQuerySet(TranslationQuerysetMixin): return self.order_by('-start') def rating_value(self): - # return self.annotate(rating=models.Count('ratings__ip', distinct=True)) - return self.annotate(rating='views_count__count') # TODO: совместить новый и старый функционал + return self.annotate(rating=models.Count('ratings__ip', distinct=True)) def with_base_related(self): """Return qs with related objects.""" diff --git a/apps/review/models.py b/apps/review/models.py index 3f095504..1dadc104 100644 --- a/apps/review/models.py +++ b/apps/review/models.py @@ -44,6 +44,7 @@ class Review(BaseAttributes, TranslatedFieldsMixin): related_name='reviews', on_delete=models.CASCADE, verbose_name=_('Reviewer'), + null=True, default=None, blank=True ) country = models.ForeignKey( 'location.Country', diff --git a/apps/review/transfer_data.py b/apps/review/transfer_data.py index 0b080871..9ccb6c80 100644 --- a/apps/review/transfer_data.py +++ b/apps/review/transfer_data.py @@ -34,10 +34,8 @@ def transfer_languages(): def transfer_reviews(): establishments = Establishment.objects.filter(old_id__isnull=False).values_list('old_id', flat=True) - users = User.objects.filter(old_id__isnull=False).values_list('old_id', flat=True) queryset = Reviews.objects.filter( establishment_id__in=list(establishments), - reviewer_id__in=list(users), ).values('id', 'reviewer_id', 'aasm_state', 'created_at', 'establishment_id', 'mark', 'vintage') serialized_data = ReviewSerializer(data=list(queryset.values()), many=True) diff --git a/apps/search_indexes/__init__.py b/apps/search_indexes/__init__.py index 6c812219..c45cbc38 100644 --- a/apps/search_indexes/__init__.py +++ b/apps/search_indexes/__init__.py @@ -1 +1 @@ -from search_indexes.signals import update_document +# from search_indexes.signals import update_document diff --git a/apps/search_indexes/signals.py b/apps/search_indexes/signals.py index 5bee4e17..1c7dbfe0 100644 --- a/apps/search_indexes/signals.py +++ b/apps/search_indexes/signals.py @@ -1,67 +1,67 @@ -"""Search indexes app signals.""" -from django.db.models.signals import post_save -from django.dispatch import receiver -from django_elasticsearch_dsl.registries import registry - - -@receiver(post_save) -def update_document(sender, **kwargs): - from establishment.models import Establishment - app_label = sender._meta.app_label - model_name = sender._meta.model_name - instance = kwargs['instance'] - - app_label_model_name_to_filter = { - ('location','country'): 'address__city__country', - ('location','city'): 'address__city', - ('location', 'address'): 'address', - # todo: remove after migration - ('establishment', 'establishmenttype'): 'establishment_type', - ('establishment', 'establishmentsubtype'): 'establishment_subtypes', - ('tag', 'tag'): 'tags', - } - filter_name = app_label_model_name_to_filter.get((app_label, model_name)) - if filter_name: - qs = Establishment.objects.filter(**{filter_name: instance}) - for product in qs: - registry.update(product) - - -@receiver(post_save) -def update_news(sender, **kwargs): - from news.models import News - app_label = sender._meta.app_label - model_name = sender._meta.model_name - instance = kwargs['instance'] - app_label_model_name_to_filter = { - ('location','country'): 'country', - ('news','newstype'): 'news_type', - ('tag', 'tag'): 'tags', - } - filter_name = app_label_model_name_to_filter.get((app_label, model_name)) - if filter_name: - qs = News.objects.filter(**{filter_name: instance}) - for product in qs: - registry.update(product) - - -@receiver(post_save) -def update_product(sender, **kwargs): - from product.models import Product - app_label = sender._meta.app_label - model_name = sender._meta.model_name - instance = kwargs['instance'] - app_label_model_name_to_filter = { - ('product','productstandard'): 'standards', - ('product', 'producttype'): 'product_type', - ('tag','tag'): 'tags', - ('location', 'wineregion'): 'wine_region', - ('location', 'winesubregion'): 'wine_sub_region', - ('location', 'winevillage'): 'wine_village', - ('establishment', 'establishment'): 'establishment', - } - filter_name = app_label_model_name_to_filter.get((app_label, model_name)) - if filter_name: - qs = Product.objects.filter(**{filter_name: instance}) - for product in qs: - registry.update(product) +# """Search indexes app signals.""" +# from django.db.models.signals import post_save +# from django.dispatch import receiver +# from django_elasticsearch_dsl.registries import registry +# +# +# @receiver(post_save) +# def update_document(sender, **kwargs): +# from establishment.models import Establishment +# app_label = sender._meta.app_label +# model_name = sender._meta.model_name +# instance = kwargs['instance'] +# +# app_label_model_name_to_filter = { +# ('location','country'): 'address__city__country', +# ('location','city'): 'address__city', +# ('location', 'address'): 'address', +# # todo: remove after migration +# ('establishment', 'establishmenttype'): 'establishment_type', +# ('establishment', 'establishmentsubtype'): 'establishment_subtypes', +# ('tag', 'tag'): 'tags', +# } +# filter_name = app_label_model_name_to_filter.get((app_label, model_name)) +# if filter_name: +# qs = Establishment.objects.filter(**{filter_name: instance}) +# for product in qs: +# registry.update(product) +# +# +# @receiver(post_save) +# def update_news(sender, **kwargs): +# from news.models import News +# app_label = sender._meta.app_label +# model_name = sender._meta.model_name +# instance = kwargs['instance'] +# app_label_model_name_to_filter = { +# ('location','country'): 'country', +# ('news','newstype'): 'news_type', +# ('tag', 'tag'): 'tags', +# } +# filter_name = app_label_model_name_to_filter.get((app_label, model_name)) +# if filter_name: +# qs = News.objects.filter(**{filter_name: instance}) +# for product in qs: +# registry.update(product) +# +# +# @receiver(post_save) +# def update_product(sender, **kwargs): +# from product.models import Product +# app_label = sender._meta.app_label +# model_name = sender._meta.model_name +# instance = kwargs['instance'] +# app_label_model_name_to_filter = { +# ('product','productstandard'): 'standards', +# ('product', 'producttype'): 'product_type', +# ('tag','tag'): 'tags', +# ('location', 'wineregion'): 'wine_region', +# ('location', 'winesubregion'): 'wine_sub_region', +# ('location', 'winevillage'): 'wine_village', +# ('establishment', 'establishment'): 'establishment', +# } +# filter_name = app_label_model_name_to_filter.get((app_label, model_name)) +# if filter_name: +# qs = Product.objects.filter(**{filter_name: instance}) +# for product in qs: +# registry.update(product) diff --git a/apps/transfer/serializers/reviews.py b/apps/transfer/serializers/reviews.py index f322b51e..a6cb1124 100644 --- a/apps/transfer/serializers/reviews.py +++ b/apps/transfer/serializers/reviews.py @@ -37,10 +37,9 @@ class ReviewSerializer(serializers.Serializer): @staticmethod def get_reviewer(data): - user = User.objects.filter(old_id=data['reviewer_id']).first() - if not user: - raise ValueError(f"User account not found with old_id {data['reviewer_id']}") - return user + if data['reviewer_id'] and not data['reviewer_id'] == -1: + user = User.objects.filter(old_id=data['reviewer_id']).first() + return user @staticmethod def get_establishment(data): diff --git a/project/settings/base.py b/project/settings/base.py index 5e3017c7..50756ff2 100644 --- a/project/settings/base.py +++ b/project/settings/base.py @@ -66,7 +66,7 @@ PROJECT_APPS = [ 'partner.apps.PartnerConfig', 'product.apps.ProductConfig', 'recipe.apps.RecipeConfig', - 'search_indexes.apps.SearchIndexesConfig', + # 'search_indexes.apps.SearchIndexesConfig', 'translation.apps.TranslationConfig', 'configuration.apps.ConfigurationConfig', 'timetable.apps.TimetableConfig', @@ -79,8 +79,8 @@ PROJECT_APPS = [ EXTERNAL_APPS = [ 'corsheaders', - 'django_elasticsearch_dsl', - 'django_elasticsearch_dsl_drf', + # 'django_elasticsearch_dsl', + # 'django_elasticsearch_dsl_drf', 'django_filters', 'drf_yasg', 'fcm_django',