refactored news transfer
This commit is contained in:
parent
127d15b181
commit
017308da95
|
|
@ -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,
|
||||
]
|
||||
],
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user