refactored news transfer

This commit is contained in:
Anatoly 2020-01-16 14:19:56 +03:00
parent 127d15b181
commit 017308da95
2 changed files with 44 additions and 22 deletions

View File

@ -11,6 +11,7 @@ from tag.models import TagCategory, Tag
from translation.models import SiteInterfaceDictionary
from transfer.models import PageTexts, PageCounters, PageMetadata
from transfer.serializers.news import NewsSerializer
from utils.methods import transform_camelcase_to_underscore
def add_locale(locale, data):
@ -36,35 +37,38 @@ def clear_old_news():
images.delete()
news.delete()
# NewsType.objects.all().delete()
print(f'Deleted {img_num} images')
print(f'Deleted {news_num} news')
def transfer_news():
news_type, _ = NewsType.objects.get_or_create(name='news')
migrated_news_types = ('News', 'StaticPage', )
queryset = PageTexts.objects.filter(
page__type='News',
).annotate(
page__id=F('page__id'),
news_type_id=Value(news_type.id, output_field=IntegerField()),
page__created_at=F('page__created_at'),
page__account_id=F('page__account_id'),
page__state=F('page__state'),
page__template=F('page__template'),
page__site__country_code_2=F('page__site__country_code_2'),
page__root_title=F('page__root_title'),
page__attachment_suffix_url=F('page__attachment_suffix_url'),
page__published_at=F('page__published_at'),
)
for news_type in migrated_news_types:
news_type_obj, _ = NewsType.objects.get_or_create(
name=transform_camelcase_to_underscore(news_type))
serialized_data = NewsSerializer(data=list(queryset.values()), many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
pprint(f'News serializer errors: {serialized_data.errors}')
queryset = PageTexts.objects.filter(
page__type=news_type,
).annotate(
page__id=F('page__id'),
news_type_id=Value(news_type_obj.id, output_field=IntegerField()),
page__created_at=F('page__created_at'),
page__account_id=F('page__account_id'),
page__state=F('page__state'),
page__template=F('page__template'),
page__site__country_code_2=F('page__site__country_code_2'),
page__root_title=F('page__root_title'),
page__attachment_suffix_url=F('page__attachment_suffix_url'),
page__published_at=F('page__published_at'),
)
serialized_data = NewsSerializer(data=list(queryset.values()), many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
pprint(f'News serializer errors: {serialized_data.errors}')
def update_en_gb_locales():
@ -166,5 +170,5 @@ data_types = {
update_en_gb_locales,
add_views_count,
add_tags,
]
],
}

View File

@ -4,6 +4,7 @@ import random
import re
import string
from collections import namedtuple
from functools import reduce
from io import BytesIO
import requests
@ -173,6 +174,23 @@ def transform_into_readable_str(raw_string: str, postfix: str = 'SectionNode'):
return f"{''.join([i.capitalize() for i in result])}"
def transform_camelcase_to_underscore(raw_string: str):
"""
Transform str, i.e:
from
"ContentPage"
to
"content_page"
"""
re_exp = r'[A-Z][^A-Z]*'
result = [i.lower() for i in re.findall(re_exp, raw_string) if i]
if result:
return reduce(lambda x, y: f'{x}_{y}', result)
else:
return raw_string
def section_name_into_index_name(section_name: str):
"""
Transform slug into section name, i.e: