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 = {
'old_id': item.id,
'name': item.name,
'name_translated': item.index_name,
'transliterated_name': item.index_name,
'slug': item.slug,
'type': item.type,
'phone': item.phone,

View File

@ -7,3 +7,5 @@ from utils.admin import BaseModelAdminMixin
@admin.register(models.Review)
class ReviewAdminModel(BaseModelAdminMixin, admin.ModelAdmin):
"""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():
# TODO: убрать LIKE UPPER("%%paris%%"), accounts.email IN
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,
review_texts.created_at AS published, review_texts.locale AS locale,
@ -55,9 +56,8 @@ def transfer_reviews():
ON (establishments.location_id = locations.id)
INNER JOIN cities
ON (locations.city_id = cities.id)
WHERE UPPER(cities.name) LIKE UPPER("%%paris%%")
AND NOT establishments.type = "Wineyard"
AND establishments.type IS NOT NULL AND locations.timezone IS NOT NULL
WHERE establishments.type IS NOT NULL AND locations.timezone IS NOT NULL
AND NOT establishments.type = "Wineyard"
)
ORDER BY review_texts.created_at DESC
""")
@ -101,15 +101,19 @@ def transfer_inquiries():
# отфильтровать по review, account, establishment
# TODO: нужно ли переносить данные у которых нет привязки к аккаунту? .filter(account__isnull=False)
inquiries = Inquiries.objects.exclude(
Q(review__reviewer_id__gt=0) |
Q(review__reviewer_id__isnull=True) |
Q(review__mark__isnull=True) |
Q(review__reviewtexts__text__isnull=True) |
Q(review__reviewtexts__locale__isnull=True) |
Q(review__establishment__type='Wineyard') |
Q(review__establishment__location__timezone__isnull=True) |
Q(account__confirmed_at__isnull=True) |
Q(account__email__in=STOP_LIST)
Q(review__reviewer_id__lte=0) | # +
Q(review__reviewer_id__isnull=True) | # +
Q(review__mark__isnull=True) | # +
Q(review__reviewtexts__text__isnull=True) | # +
Q(review__reviewtexts__locale__isnull=True) | # +
Q(review__establishment__type__isnull=True) | # +
Q(review__establishment__type='Wineyard') | # +
Q(review__establishment__location__timezone__isnull=True) | # +
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)

View File

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

View File

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

View File

@ -49,15 +49,13 @@ class InquiriesSerializer(serializers.Serializer):
try:
return Inquiries.objects.create(**validated_data)
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
def get_review(data):
review = Review.objects.filter(old_id=data['review_id']).first()
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
@staticmethod

View File

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