refactor inquiries

This commit is contained in:
alex 2019-11-11 14:45:33 +03:00
parent 2512400885
commit b0177dfe13
8 changed files with 49 additions and 27 deletions

View File

@ -28,7 +28,7 @@ def transfer_establishment():
data = { data = {
'old_id': item.id, 'old_id': item.id,
'name': item.name, 'name': item.name,
'name_translated': item.index_name, 'transliterated_name': item.index_name,
'slug': item.slug, 'slug': item.slug,
'type': item.type, 'type': item.type,
'phone': item.phone, 'phone': item.phone,

View File

@ -7,3 +7,5 @@ from utils.admin import BaseModelAdminMixin
@admin.register(models.Review) @admin.register(models.Review)
class ReviewAdminModel(BaseModelAdminMixin, admin.ModelAdmin): class ReviewAdminModel(BaseModelAdminMixin, admin.ModelAdmin):
"""Admin model for model Review.""" """Admin model for model Review."""
raw_id_fields = ('reviewer', 'language', 'child', 'country')

View File

@ -0,0 +1,18 @@
# Generated by Django 2.2.7 on 2019-11-11 11:42
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('review', '0009_auto_20191110_0615'),
]
operations = [
migrations.AddField(
model_name='inquiries',
name='published',
field=models.BooleanField(default=False, verbose_name='is published'),
),
]

View File

@ -24,6 +24,7 @@ def transfer_languages():
def transfer_reviews(): def transfer_reviews():
# TODO: убрать LIKE UPPER("%%paris%%"), accounts.email IN
queryset = Reviews.objects.raw("""SELECT reviews.id, reviews.vintage, reviews.establishment_id, queryset = Reviews.objects.raw("""SELECT reviews.id, reviews.vintage, reviews.establishment_id,
reviews.reviewer_id, review_texts.text AS text, reviews.mark, reviews.published_at, reviews.reviewer_id, review_texts.text AS text, reviews.mark, reviews.published_at,
review_texts.created_at AS published, review_texts.locale AS locale, review_texts.created_at AS published, review_texts.locale AS locale,
@ -55,9 +56,8 @@ def transfer_reviews():
ON (establishments.location_id = locations.id) ON (establishments.location_id = locations.id)
INNER JOIN cities INNER JOIN cities
ON (locations.city_id = cities.id) ON (locations.city_id = cities.id)
WHERE UPPER(cities.name) LIKE UPPER("%%paris%%") WHERE establishments.type IS NOT NULL AND locations.timezone IS NOT NULL
AND NOT establishments.type = "Wineyard" AND NOT establishments.type = "Wineyard"
AND establishments.type IS NOT NULL AND locations.timezone IS NOT NULL
) )
ORDER BY review_texts.created_at DESC ORDER BY review_texts.created_at DESC
""") """)
@ -101,15 +101,19 @@ def transfer_inquiries():
# отфильтровать по review, account, establishment # отфильтровать по review, account, establishment
# TODO: нужно ли переносить данные у которых нет привязки к аккаунту? .filter(account__isnull=False) # TODO: нужно ли переносить данные у которых нет привязки к аккаунту? .filter(account__isnull=False)
inquiries = Inquiries.objects.exclude( inquiries = Inquiries.objects.exclude(
Q(review__reviewer_id__gt=0) | Q(review__reviewer_id__lte=0) | # +
Q(review__reviewer_id__isnull=True) | Q(review__reviewer_id__isnull=True) | # +
Q(review__mark__isnull=True) | Q(review__mark__isnull=True) | # +
Q(review__reviewtexts__text__isnull=True) | Q(review__reviewtexts__text__isnull=True) | # +
Q(review__reviewtexts__locale__isnull=True) | Q(review__reviewtexts__locale__isnull=True) | # +
Q(review__establishment__type='Wineyard') | Q(review__establishment__type__isnull=True) | # +
Q(review__establishment__location__timezone__isnull=True) | Q(review__establishment__type='Wineyard') | # +
Q(account__confirmed_at__isnull=True) | Q(review__establishment__location__timezone__isnull=True) | # +
Q(account__email__in=STOP_LIST) Q(review__establishment__location__isnull=True) | # +
Q(account__confirmed_at__isnull=True) | # +
Q(account__email__in=STOP_LIST) | # +
Q(review_id__in=(
47558, 43703, 89320, 92150, 90162, 113639, 92084, 96145, 92492, 92489, 92497, 116790, 116930, 114799))
) )
serialized_data = InquiriesSerializer(data=list(inquiries.values()), many=True) serialized_data = InquiriesSerializer(data=list(inquiries.values()), many=True)

View File

@ -9,19 +9,19 @@ class Command(BaseCommand):
ВНИМАНИЕ: первые буквы типов данных должны быть уникальны! ВНИМАНИЕ: первые буквы типов данных должны быть уникальны!
""" """
SHORT_DATA_TYPES = [ SHORT_DATA_TYPES = [
'dictionaries', 'dictionaries', # №2 - перенос стран, регионов, городов, адресов
'news', 'news', # перенос новостей (после №2)
'account', 'account', # №1 - перенос пользователей
'subscriber', 'subscriber',
'recipe', 'recipe',
'partner', 'partner',
'establishment', 'establishment', # №3 - перенос заведений
'gallery', 'gallery',
'commercial', 'commercial', # перенос рекламмы (очередность не важна)
'overlook', 'overlook', # №5 - перенос языков, отзывов
'tmp', 'tmp',
'menu', 'menu',
'location_establishment', 'location_establishment', # №4 - добавление адресов для перенесенных заведений
'whirligig', 'whirligig',
'identities', 'identities',
] ]
@ -29,7 +29,7 @@ class Command(BaseCommand):
LONG_DATA_TYPES = [ LONG_DATA_TYPES = [
'update_country_flag', 'update_country_flag',
'comment', 'comment',
'inquiries', 'inquiries', # №6 - перенос запросов оценок
] ]
def handle(self, *args, **options): def handle(self, *args, **options):

View File

@ -35,7 +35,7 @@ class EstablishmentSerializer(serializers.ModelSerializer):
'created', 'created',
'old_id', # + 'old_id', # +
'name', # + 'name', # +
'name_translated', # + 'transliterated_name', # +
'tz', # + 'tz', # +
'website', # + 'website', # +
'facebook', # + 'facebook', # +

View File

@ -49,15 +49,13 @@ class InquiriesSerializer(serializers.Serializer):
try: try:
return Inquiries.objects.create(**validated_data) return Inquiries.objects.create(**validated_data)
except Exception as e: except Exception as e:
pass raise ValueError(f"Error creating Inquiries with {validated_data}: {e}")
# raise ValueError(f"Error creating Inquiries with {validated_data}: {e}")
@staticmethod @staticmethod
def get_review(data): def get_review(data):
review = Review.objects.filter(old_id=data['review_id']).first() review = Review.objects.filter(old_id=data['review_id']).first()
if not review: if not review:
pass raise ValueError(f"Review not found with old_id {data['review_id']}")
# raise ValueError(f"Review not found with old_id {data['review_id']}")
return review return review
@staticmethod @staticmethod

View File

@ -12,7 +12,7 @@ class ReviewSerializer(serializers.ModelSerializer):
published = serializers.DateTimeField() published = serializers.DateTimeField()
published_at = serializers.DateTimeField(allow_null=True) published_at = serializers.DateTimeField(allow_null=True)
establishment_id = serializers.IntegerField() establishment_id = serializers.IntegerField()
text = serializers.CharField() text = serializers.CharField(allow_null=True, allow_blank=True)
locale = serializers.CharField() locale = serializers.CharField()
aasm_state = serializers.CharField(allow_null=True) aasm_state = serializers.CharField(allow_null=True)