author for review text
This commit is contained in:
parent
ac2dc2344e
commit
0152538333
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -28,3 +28,4 @@ celerybeat.pid
|
|||
/gm_viktor.dump
|
||||
/docker-compose.dump.yml
|
||||
/gm_production_20191029.sql
|
||||
/apps/transfer/log
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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 = {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user