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 translation.models import SiteInterfaceDictionary
|
||||||
from transfer.models import PageTexts, PageCounters, PageMetadata
|
from transfer.models import PageTexts, PageCounters, PageMetadata
|
||||||
from transfer.serializers.news import NewsSerializer
|
from transfer.serializers.news import NewsSerializer
|
||||||
|
from utils.methods import transform_camelcase_to_underscore
|
||||||
|
|
||||||
|
|
||||||
def add_locale(locale, data):
|
def add_locale(locale, data):
|
||||||
|
|
@ -36,35 +37,38 @@ def clear_old_news():
|
||||||
|
|
||||||
images.delete()
|
images.delete()
|
||||||
news.delete()
|
news.delete()
|
||||||
# NewsType.objects.all().delete()
|
|
||||||
|
|
||||||
print(f'Deleted {img_num} images')
|
print(f'Deleted {img_num} images')
|
||||||
print(f'Deleted {news_num} news')
|
print(f'Deleted {news_num} news')
|
||||||
|
|
||||||
|
|
||||||
def transfer_news():
|
def transfer_news():
|
||||||
news_type, _ = NewsType.objects.get_or_create(name='news')
|
migrated_news_types = ('News', 'StaticPage', )
|
||||||
|
|
||||||
queryset = PageTexts.objects.filter(
|
for news_type in migrated_news_types:
|
||||||
page__type='News',
|
news_type_obj, _ = NewsType.objects.get_or_create(
|
||||||
).annotate(
|
name=transform_camelcase_to_underscore(news_type))
|
||||||
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'),
|
|
||||||
)
|
|
||||||
|
|
||||||
serialized_data = NewsSerializer(data=list(queryset.values()), many=True)
|
queryset = PageTexts.objects.filter(
|
||||||
if serialized_data.is_valid():
|
page__type=news_type,
|
||||||
serialized_data.save()
|
).annotate(
|
||||||
else:
|
page__id=F('page__id'),
|
||||||
pprint(f'News serializer errors: {serialized_data.errors}')
|
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():
|
def update_en_gb_locales():
|
||||||
|
|
@ -166,5 +170,5 @@ data_types = {
|
||||||
update_en_gb_locales,
|
update_en_gb_locales,
|
||||||
add_views_count,
|
add_views_count,
|
||||||
add_tags,
|
add_tags,
|
||||||
]
|
],
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import random
|
||||||
import re
|
import re
|
||||||
import string
|
import string
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
from functools import reduce
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
|
||||||
import requests
|
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])}"
|
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):
|
def section_name_into_index_name(section_name: str):
|
||||||
"""
|
"""
|
||||||
Transform slug into section name, i.e:
|
Transform slug into section name, i.e:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user