author for review text

This commit is contained in:
alex 2019-12-26 10:33:27 +03:00
parent ac2dc2344e
commit 0152538333
4 changed files with 41 additions and 10 deletions

1
.gitignore vendored
View File

@ -28,3 +28,4 @@ celerybeat.pid
/gm_viktor.dump /gm_viktor.dump
/docker-compose.dump.yml /docker-compose.dump.yml
/gm_production_20191029.sql /gm_production_20191029.sql
/apps/transfer/log

View File

@ -55,13 +55,15 @@ def transfer_text_review():
text__isnull=True text__isnull=True
).exclude( ).exclude(
text__iexact='' text__iexact=''
).values('review_id', 'locale', 'text') ).values('review_id', 'locale', 'text', 'updated_by', 'created_at', 'updated_at')
serialized_data = ReviewTextSerializer(data=list(queryset), many=True) print(queryset.count())
if serialized_data.is_valid():
serialized_data.save() # serialized_data = ReviewTextSerializer(data=list(queryset), many=True)
else: # if serialized_data.is_valid():
pprint(f"ReviewTextSerializer serializer errors: {serialized_data.errors}") # serialized_data.save()
# else:
# pprint(f"ReviewTextSerializer serializer errors: {serialized_data.errors}")
def make_en_text_review(): def make_en_text_review():
@ -142,5 +144,8 @@ data_types = {
], ],
"product_review": [ "product_review": [
transfer_product_reviews, transfer_product_reviews,
],
"transfer_text_review": [
transfer_text_review,
] ]
} }

View File

@ -58,7 +58,8 @@ class Command(BaseCommand):
'setup_clean_db', 'setup_clean_db',
'languages', # №4 - перенос языков 'languages', # №4 - перенос языков
'set_unused_regions', 'set_unused_regions',
'update_fake_country_flag' 'update_fake_country_flag',
'transfer_text_review', # переводы для review с их авторами - запускать после overlook и product_review
] ]
def handle(self, *args, **options): def handle(self, *args, **options):
@ -68,7 +69,8 @@ class Command(BaseCommand):
if len(data_type) != 1: if len(data_type) != 1:
data_type = list(set(option for option in options.keys() if options[option]) & set(self.SHORT_DATA_TYPES)) data_type = list(set(option for option in options.keys() if options[option]) & set(self.SHORT_DATA_TYPES))
if len(data_type) != 1: if len(data_type) != 1:
print("You must set correct option!\r\nYou can get options list with \r\n\r\n\tmanage.py help transfer\r\n") print(
"You must set correct option!\r\nYou can get options list with \r\n\r\n\tmanage.py help transfer\r\n")
exit(1) exit(1)
else: else:
data_type = data_type[0] data_type = data_type[0]

View File

@ -1,5 +1,5 @@
from rest_framework import serializers from rest_framework import serializers
from review.models import Review from review.models import Review, ReviewTextAuthor
from account.models import User from account.models import User
from translation.models import Language from translation.models import Language
from establishment.models import Establishment from establishment.models import Establishment
@ -97,24 +97,41 @@ class ReviewTextSerializer(serializers.Serializer):
review_id = serializers.IntegerField() review_id = serializers.IntegerField()
locale = serializers.CharField(allow_null=True) locale = serializers.CharField(allow_null=True)
text = serializers.CharField() text = serializers.CharField()
updated_by = serializers.IntegerField(allow_null=True)
created_at = serializers.DateTimeField(format='%m-%d-%Y %H:%M:%S')
updated_at = serializers.DateTimeField(format='%m-%d-%Y %H:%M:%S')
def validate(self, data): def validate(self, data):
data.update({ data.update({
'new_text': self.get_text(data), 'new_text': self.get_text(data),
'review': self.get_review(data), 'review': self.get_review(data),
'author': self.get_author(data),
}) })
data.pop('review_id') data.pop('review_id')
data.pop('locale')
data.pop('text') data.pop('text')
return data return data
def create(self, validated_data): def create(self, validated_data):
review = validated_data['review'] review = validated_data['review']
author_payload = {
'review': review,
'author': validated_data['author'],
'locale': validated_data['locale'] or 'en-GB',
'created': validated_data['created_at'],
}
if review.text: if review.text:
review.text.update(validated_data['new_text']) review.text.update(validated_data['new_text'])
else: else:
review.text = validated_data['new_text'] review.text = validated_data['new_text']
review.save() review.save()
if validated_data['author'] and validated_data['locale']:
review_author, _ = ReviewTextAuthor.objects.update_or_create(
review=review,
locale=author_payload['locale'],
defaults=author_payload,
)
return review return review
@staticmethod @staticmethod
@ -130,6 +147,12 @@ class ReviewTextSerializer(serializers.Serializer):
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
def get_author(data):
user = User.objects.filter(old_id=data['updated_by']).first()
if user:
return user
class LanguageSerializer(serializers.ModelSerializer): class LanguageSerializer(serializers.ModelSerializer):
LANGUAGES = { LANGUAGES = {