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
/docker-compose.dump.yml
/gm_production_20191029.sql
/apps/transfer/log

View File

@ -55,13 +55,15 @@ def transfer_text_review():
text__isnull=True
).exclude(
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)
if serialized_data.is_valid():
serialized_data.save()
else:
pprint(f"ReviewTextSerializer serializer errors: {serialized_data.errors}")
print(queryset.count())
# serialized_data = ReviewTextSerializer(data=list(queryset), many=True)
# if serialized_data.is_valid():
# serialized_data.save()
# else:
# pprint(f"ReviewTextSerializer serializer errors: {serialized_data.errors}")
def make_en_text_review():
@ -142,5 +144,8 @@ data_types = {
],
"product_review": [
transfer_product_reviews,
],
"transfer_text_review": [
transfer_text_review,
]
}

View File

@ -58,7 +58,8 @@ class Command(BaseCommand):
'setup_clean_db',
'languages', # №4 - перенос языков
'set_unused_regions',
'update_fake_country_flag'
'update_fake_country_flag',
'transfer_text_review', # переводы для review с их авторами - запускать после overlook и product_review
]
def handle(self, *args, **options):
@ -68,7 +69,8 @@ class Command(BaseCommand):
if len(data_type) != 1:
data_type = list(set(option for option in options.keys() if options[option]) & set(self.SHORT_DATA_TYPES))
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)
else:
data_type = data_type[0]

View File

@ -1,5 +1,5 @@
from rest_framework import serializers
from review.models import Review
from review.models import Review, ReviewTextAuthor
from account.models import User
from translation.models import Language
from establishment.models import Establishment
@ -97,24 +97,41 @@ class ReviewTextSerializer(serializers.Serializer):
review_id = serializers.IntegerField()
locale = serializers.CharField(allow_null=True)
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):
data.update({
'new_text': self.get_text(data),
'review': self.get_review(data),
'author': self.get_author(data),
})
data.pop('review_id')
data.pop('locale')
data.pop('text')
return data
def create(self, validated_data):
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:
review.text.update(validated_data['new_text'])
else:
review.text = validated_data['new_text']
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
@staticmethod
@ -130,6 +147,12 @@ class ReviewTextSerializer(serializers.Serializer):
raise ValueError(f"Review not found with old_id {data['review_id']}: ")
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):
LANGUAGES = {