74 lines
3.1 KiB
Python
74 lines
3.1 KiB
Python
from transfer.models import Reviews, ReviewTexts
|
|
from transfer.serializers.reviews import LanguageSerializer, ReviewSerializer, Establishment
|
|
from pprint import pprint
|
|
|
|
|
|
def transfer_languages():
|
|
queryset = ReviewTexts.objects.raw("""SELECT id, locale
|
|
FROM review_texts
|
|
WHERE CHAR_LENGTH(locale) = 5
|
|
AND review_texts.locale IS NOT NULL GROUP BY locale""")
|
|
|
|
queryset = [vars(query) for query in queryset]
|
|
|
|
serialized_data = LanguageSerializer(data=queryset, many=True)
|
|
if serialized_data.is_valid():
|
|
serialized_data.save()
|
|
else:
|
|
pprint(f"Language serializer errors: {serialized_data.errors}")
|
|
|
|
|
|
def transfer_reviews():
|
|
queryset = Reviews.objects.raw("""SELECT reviews.id, reviews.vintage, reviews.establishment_id,
|
|
reviews.reviewer_id, review_texts.text AS text, reviews.mark,
|
|
review_texts.created_at AS published, review_texts.locale AS locale
|
|
FROM reviews
|
|
LEFT OUTER JOIN review_texts
|
|
ON (reviews.id = review_texts.review_id)
|
|
WHERE reviews.reviewer_id > 0
|
|
AND reviews.reviewer_id IS NOT NULL
|
|
AND review_texts.text IS NOT NULL
|
|
AND reviews.reviewer_id IN (
|
|
SELECT accounts.id
|
|
FROM accounts
|
|
WHERE accounts.confirmed_at IS NOT NULL
|
|
AND NOT accounts.email IN (
|
|
"cyril@tomatic.net",
|
|
"cyril2@tomatic.net",
|
|
"cyril2@tomatic.net",
|
|
"d.sadykova@id-east.ru",
|
|
"d.sadykova@octopod.ru",
|
|
"n.yurchenko@id-east.ru"
|
|
)
|
|
) ORDER BY review_texts.created_at DESC
|
|
""")
|
|
|
|
queryset_result = []
|
|
establishments_mark_list = {}
|
|
|
|
for query in queryset:
|
|
query = vars(query)
|
|
if query['establishment_id'] not in establishments_mark_list.keys():
|
|
establishments_mark_list[query['establishment_id']] = query['mark']
|
|
del(query['mark'])
|
|
queryset_result.append(query)
|
|
|
|
serialized_data = ReviewSerializer(data=queryset_result, many=True)
|
|
|
|
if serialized_data.is_valid():
|
|
serialized_data.save()
|
|
for establishment_id, mark in establishments_mark_list.items():
|
|
establishment = Establishment.objects.get(old_id=establishment_id)
|
|
establishment.public_mark = mark
|
|
establishment.save()
|
|
else:
|
|
pprint(serialized_data.errors)
|
|
|
|
|
|
data_types = {
|
|
"mention": [
|
|
transfer_languages,
|
|
transfer_reviews
|
|
]
|
|
}
|