Fix review published_at
Add old_id Add description to establishment
This commit is contained in:
parent
fea93f50f7
commit
c8554772f1
18
apps/review/migrations/0005_review_old_id.py
Normal file
18
apps/review/migrations/0005_review_old_id.py
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 2.2.4 on 2019-10-31 06:22
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('review', '0004_review_country'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='review',
|
||||||
|
name='old_id',
|
||||||
|
field=models.PositiveIntegerField(blank=True, default=None, null=True, verbose_name='old id'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -68,6 +68,9 @@ class Review(BaseAttributes, TranslatedFieldsMixin):
|
||||||
country = models.ForeignKey('location.Country', on_delete=models.CASCADE,
|
country = models.ForeignKey('location.Country', on_delete=models.CASCADE,
|
||||||
related_name='country', verbose_name=_('Country'),
|
related_name='country', verbose_name=_('Country'),
|
||||||
null=True)
|
null=True)
|
||||||
|
|
||||||
|
old_id = models.PositiveIntegerField(_('old id'), blank=True, null=True, default=None)
|
||||||
|
|
||||||
objects = ReviewQuerySet.as_manager()
|
objects = ReviewQuerySet.as_manager()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
from transfer.models import Reviews, ReviewTexts
|
from transfer.models import Reviews, ReviewTexts
|
||||||
from transfer.serializers.reviews import LanguageSerializer, ReviewSerializer, Establishment
|
from transfer.serializers.reviews import LanguageSerializer, ReviewSerializer, Establishment
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
def transfer_languages():
|
def transfer_languages():
|
||||||
|
|
@ -20,14 +21,16 @@ def transfer_languages():
|
||||||
|
|
||||||
def transfer_reviews():
|
def transfer_reviews():
|
||||||
queryset = Reviews.objects.raw("""SELECT reviews.id, reviews.vintage, reviews.establishment_id,
|
queryset = Reviews.objects.raw("""SELECT reviews.id, reviews.vintage, reviews.establishment_id,
|
||||||
reviews.reviewer_id, review_texts.text AS text, reviews.mark,
|
reviews.reviewer_id, review_texts.text AS text, reviews.mark, reviews.published_at,
|
||||||
review_texts.created_at AS published, review_texts.locale AS locale
|
review_texts.created_at AS published, review_texts.locale AS locale,
|
||||||
|
reviews.aasm_state
|
||||||
FROM reviews
|
FROM reviews
|
||||||
LEFT OUTER JOIN review_texts
|
LEFT OUTER JOIN review_texts
|
||||||
ON (reviews.id = review_texts.review_id)
|
ON (reviews.id = review_texts.review_id)
|
||||||
WHERE reviews.reviewer_id > 0
|
WHERE reviews.reviewer_id > 0
|
||||||
AND reviews.reviewer_id IS NOT NULL
|
AND reviews.reviewer_id IS NOT NULL
|
||||||
AND review_texts.text IS NOT NULL
|
AND review_texts.text IS NOT NULL
|
||||||
|
AND review_texts.locale IS NOT NULL
|
||||||
AND reviews.mark IS NOT NULL
|
AND reviews.mark IS NOT NULL
|
||||||
AND reviews.reviewer_id IN (
|
AND reviews.reviewer_id IN (
|
||||||
SELECT accounts.id
|
SELECT accounts.id
|
||||||
|
|
@ -40,8 +43,19 @@ def transfer_reviews():
|
||||||
"d.sadykova@id-east.ru",
|
"d.sadykova@id-east.ru",
|
||||||
"d.sadykova@octopod.ru",
|
"d.sadykova@octopod.ru",
|
||||||
"n.yurchenko@id-east.ru"
|
"n.yurchenko@id-east.ru"
|
||||||
|
))
|
||||||
|
AND reviews.establishment_id IN (
|
||||||
|
SELECT establishments.id
|
||||||
|
FROM establishments
|
||||||
|
INNER JOIN locations
|
||||||
|
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
|
||||||
)
|
)
|
||||||
) ORDER BY review_texts.created_at DESC
|
ORDER BY review_texts.created_at DESC
|
||||||
""")
|
""")
|
||||||
|
|
||||||
queryset_result = []
|
queryset_result = []
|
||||||
|
|
@ -50,6 +64,12 @@ def transfer_reviews():
|
||||||
for query in queryset:
|
for query in queryset:
|
||||||
query = vars(query)
|
query = vars(query)
|
||||||
if query['establishment_id'] not in establishments_mark_list.keys():
|
if query['establishment_id'] not in establishments_mark_list.keys():
|
||||||
|
if "aasm_state" in query and query['aasm_state'] is not None and query['aasm_state'] == "published":
|
||||||
|
establishments_mark_list[query['establishment_id']] = [
|
||||||
|
int(query['mark']),
|
||||||
|
json.dumps({query['locale']: query['text']})
|
||||||
|
]
|
||||||
|
else:
|
||||||
establishments_mark_list[query['establishment_id']] = int(query['mark'])
|
establishments_mark_list[query['establishment_id']] = int(query['mark'])
|
||||||
del(query['mark'])
|
del(query['mark'])
|
||||||
queryset_result.append(query)
|
queryset_result.append(query)
|
||||||
|
|
@ -58,11 +78,15 @@ def transfer_reviews():
|
||||||
|
|
||||||
if serialized_data.is_valid():
|
if serialized_data.is_valid():
|
||||||
serialized_data.save()
|
serialized_data.save()
|
||||||
|
|
||||||
for establishment_id, mark in establishments_mark_list.items():
|
for establishment_id, mark in establishments_mark_list.items():
|
||||||
try:
|
try:
|
||||||
establishment = Establishment.objects.get(old_id=establishment_id)
|
establishment = Establishment.objects.get(old_id=establishment_id)
|
||||||
except Establishment.DoesNotExist:
|
except Establishment.DoesNotExist:
|
||||||
continue
|
continue
|
||||||
|
if isinstance(mark, list):
|
||||||
|
mark, review_text = mark
|
||||||
|
|
||||||
establishment.public_mark = mark
|
establishment.public_mark = mark
|
||||||
establishment.save()
|
establishment.save()
|
||||||
else:
|
else:
|
||||||
|
|
@ -71,7 +95,7 @@ def transfer_reviews():
|
||||||
|
|
||||||
data_types = {
|
data_types = {
|
||||||
"overlook": [
|
"overlook": [
|
||||||
transfer_languages,
|
# transfer_languages,
|
||||||
transfer_reviews
|
transfer_reviews
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,23 +10,35 @@ class ReviewSerializer(serializers.ModelSerializer):
|
||||||
reviewer_id = serializers.IntegerField()
|
reviewer_id = serializers.IntegerField()
|
||||||
vintage = serializers.IntegerField()
|
vintage = serializers.IntegerField()
|
||||||
published = serializers.DateTimeField()
|
published = serializers.DateTimeField()
|
||||||
|
published_at = serializers.DateTimeField(allow_null=True)
|
||||||
establishment_id = serializers.IntegerField()
|
establishment_id = serializers.IntegerField()
|
||||||
text = serializers.CharField()
|
text = serializers.CharField()
|
||||||
locale = serializers.CharField()
|
locale = serializers.CharField()
|
||||||
|
aasm_state = serializers.CharField(allow_null=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Review
|
model = Review
|
||||||
fields = (
|
fields = (
|
||||||
"id", "reviewer_id", "published", "vintage", "establishment_id", "text", "locale"
|
"id", "reviewer_id", "published", "vintage",
|
||||||
|
"establishment_id", "text", "locale",
|
||||||
|
"published_at", "aasm_state"
|
||||||
)
|
)
|
||||||
|
|
||||||
def validate(self, data):
|
def validate(self, data):
|
||||||
data = self.set_old_id(data)
|
data = self.set_old_id(data)
|
||||||
|
data = self.set_published_at(data)
|
||||||
data = self.set_reviewer(data)
|
data = self.set_reviewer(data)
|
||||||
data = self.set_establishment(data)
|
data = self.set_establishment(data)
|
||||||
data = self.set_language(data)
|
data = self.set_language(data)
|
||||||
|
data = self.set_published(data)
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
try:
|
||||||
|
return Review.objects.create(**validated_data)
|
||||||
|
except Exception as e:
|
||||||
|
raise ValueError(f"Error creating review with {validated_data}: {e}")
|
||||||
|
|
||||||
def set_old_id(self, data):
|
def set_old_id(self, data):
|
||||||
data['old_id'] = data.pop("id")
|
data['old_id'] = data.pop("id")
|
||||||
return data
|
return data
|
||||||
|
|
@ -41,9 +53,9 @@ class ReviewSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
def set_establishment(self, data):
|
def set_establishment(self, data):
|
||||||
try:
|
try:
|
||||||
data['establishment'] = Establishment.objects.get(old_id=data.pop('old_id'))
|
data['content_object'] = Establishment.objects.get(old_id=data.pop('establishment_id'))
|
||||||
except Establishment.DoesNotExist as e:
|
except Establishment.DoesNotExist as e:
|
||||||
raise ValueError(f"Cannot find establishment with {data}: {e}")
|
raise ValueError(f"Cannot find review establishment with {data}: {e}")
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def set_language(self, data):
|
def set_language(self, data):
|
||||||
|
|
@ -56,6 +68,16 @@ class ReviewSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
def set_published(self, data):
|
||||||
|
data['published_at'] = data.pop("published")
|
||||||
|
return data
|
||||||
|
|
||||||
|
def set_published_at(self, data):
|
||||||
|
if "aasm_state" in data and data['aasm_state'] is not None and data['aasm_state'] == "published":
|
||||||
|
data['status'] = Review.READY
|
||||||
|
del(data['aasm_state'])
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
class LanguageSerializer(serializers.ModelSerializer):
|
class LanguageSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user