fix transfer review text

This commit is contained in:
alex 2019-11-19 16:40:03 +03:00
parent 9d816ade6b
commit 8b194f8324
2 changed files with 17 additions and 7 deletions

View File

@ -2,10 +2,10 @@ from pprint import pprint
from django.db.models import Q from django.db.models import Q
from product.models import Product
from account.models import User from account.models import User
from account.transfer_data import STOP_LIST from account.transfer_data import STOP_LIST
from establishment.models import Establishment from establishment.models import Establishment
from product.models import Product
from review.models import Inquiries as NewInquiries, Review from review.models import Inquiries as NewInquiries, Review
from transfer.models import Reviews, ReviewTexts, Inquiries, GridItems, InquiryPhotos from transfer.models import Reviews, ReviewTexts, Inquiries, GridItems, InquiryPhotos
from transfer.serializers.grid import GridItemsSerializer from transfer.serializers.grid import GridItemsSerializer
@ -38,7 +38,7 @@ def transfer_reviews():
establishment_id__in=list(establishments), establishment_id__in=list(establishments),
).values('id', 'reviewer_id', 'aasm_state', 'created_at', 'establishment_id', 'mark', 'vintage') ).values('id', 'reviewer_id', 'aasm_state', 'created_at', 'establishment_id', 'mark', 'vintage')
serialized_data = ReviewSerializer(data=list(queryset.values()), many=True) serialized_data = ReviewSerializer(data=list(queryset), many=True)
if serialized_data.is_valid(): if serialized_data.is_valid():
serialized_data.save() serialized_data.save()
else: else:
@ -48,17 +48,23 @@ def transfer_reviews():
def transfer_text_review(): def transfer_text_review():
reviews = Review.objects.filter(old_id__isnull=False).values_list('old_id', flat=True) reviews = Review.objects.filter(old_id__isnull=False).values_list('old_id', flat=True)
queryset = ReviewTexts.objects.filter( queryset = ReviewTexts.objects.filter(
review_id__in=list(reviews), review_id__in=list(reviews)
).exclude( ).exclude(
Q(text__isnull=True) | Q(text='') text__iregex=r'[\s[ \t\n\r\f]*]+'
).exclude(
text__isnull=True
).exclude(
text__iexact=''
).values('review_id', 'locale', 'text') ).values('review_id', 'locale', 'text')
serialized_data = ReviewTextSerializer(data=list(queryset.values()), many=True) serialized_data = ReviewTextSerializer(data=list(queryset)[20000:30000], many=True)
if serialized_data.is_valid(): if serialized_data.is_valid():
serialized_data.save() serialized_data.save()
else: else:
pprint(f"ReviewTextSerializer serializer errors: {serialized_data.errors}") pprint(f"ReviewTextSerializer serializer errors: {serialized_data.errors}")
def make_en_text_review():
for review in Review.objects.filter(old_id__isnull=False): for review in Review.objects.filter(old_id__isnull=False):
text = review.text text = review.text
if text and 'en-GB' not in text: if text and 'en-GB' not in text:
@ -106,7 +112,6 @@ def transfer_inquiry_photos():
def transfer_product_reviews(): def transfer_product_reviews():
products = Product.objects.filter( products = Product.objects.filter(
old_id__isnull=False).values_list('old_id', flat=True) old_id__isnull=False).values_list('old_id', flat=True)
@ -130,6 +135,7 @@ data_types = {
# transfer_languages, # transfer_languages,
transfer_reviews, transfer_reviews,
transfer_text_review, transfer_text_review,
make_en_text_review,
], ],
'inquiries': [ 'inquiries': [
transfer_inquiries, transfer_inquiries,

View File

@ -103,6 +103,9 @@ class ReviewTextSerializer(serializers.Serializer):
'new_text': self.get_text(data), 'new_text': self.get_text(data),
'review': self.get_review(data), 'review': self.get_review(data),
}) })
data.pop('review_id')
data.pop('locale')
data.pop('text')
return data return data
def create(self, validated_data): def create(self, validated_data):
@ -117,7 +120,8 @@ class ReviewTextSerializer(serializers.Serializer):
@staticmethod @staticmethod
def get_text(data): def get_text(data):
locale = data['locale'] or 'en-GB' locale = data['locale'] or 'en-GB'
return {locale: data['text']} text = data['text']
return {locale: text}
@staticmethod @staticmethod
def get_review(data): def get_review(data):