Add news serializer
This commit is contained in:
parent
e1b031caf3
commit
8965cf0460
28
apps/news/transfer_data.py
Normal file
28
apps/news/transfer_data.py
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
from transfer.serializers.news import NewsSerializer
|
||||||
|
from transfer.models import PageTexts
|
||||||
|
from news.models import NewsType
|
||||||
|
from django.db.models import Value, IntegerField, F
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
|
||||||
|
def transfer_news():
|
||||||
|
news_type, _ = NewsType.objects.get_or_create(name="News")
|
||||||
|
print(news_type)
|
||||||
|
#
|
||||||
|
queryset = PageTexts.objects.all().annotate(news_type=Value(news_type.id, output_field=IntegerField()))
|
||||||
|
queryset = queryset.annotate(attachment_file_name=F('page__attachment_file_name'))
|
||||||
|
queryset = queryset.annotate(template=F('page__template'))
|
||||||
|
pprint(vars(queryset.first()))
|
||||||
|
print("===================================================================================")
|
||||||
|
#
|
||||||
|
serialized_data = NewsSerializer(queryset, many=True)
|
||||||
|
# data = serialized_data.data
|
||||||
|
# pprint(serialized_data.data)
|
||||||
|
for serialized_obj in serialized_data.data:
|
||||||
|
pprint(serialized_obj)
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
|
data_types = {
|
||||||
|
"news": [transfer_news]
|
||||||
|
}
|
||||||
|
|
@ -369,16 +369,16 @@ class GuideFilters(MigrateMixin):
|
||||||
managed = False
|
managed = False
|
||||||
db_table = 'guide_filters'
|
db_table = 'guide_filters'
|
||||||
|
|
||||||
|
#
|
||||||
class GuideSections(MigrateMixin):
|
# class GuideSections(MigrateMixin):
|
||||||
using = 'legacy'
|
# using = 'legacy'
|
||||||
|
#
|
||||||
type = models.CharField(max_length=255)
|
# type = models.CharField(max_length=255)
|
||||||
key_name = models.CharField(max_length=255, blank=True, null=True)
|
# key_name = models.CharField(max_length=255, blank=True, null=True)
|
||||||
value_name = models.CharField(max_length=255, blank=True, null=True)
|
# value_name = models.CharField(max_length=255, blank=True, null=True)
|
||||||
right = models.IntegerField(blank=True, null=True)
|
# right = models.IntegerField(blank=True, null=True)
|
||||||
created_at = models.DateTimeField()
|
# created_at = models.DateTimeField()
|
||||||
updated_at = models.DateTimeField()
|
# updated_at = models.DateTimeField()
|
||||||
|
|
||||||
|
|
||||||
# class GuideElements(MigrateMixin):
|
# class GuideElements(MigrateMixin):
|
||||||
|
|
|
||||||
0
apps/transfer/serializers/__init__.py
Normal file
0
apps/transfer/serializers/__init__.py
Normal file
37
apps/transfer/serializers/news.py
Normal file
37
apps/transfer/serializers/news.py
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
from rest_framework import serializers
|
||||||
|
from news.models import News
|
||||||
|
|
||||||
|
|
||||||
|
class NewsSerializer(serializers.ModelSerializer):
|
||||||
|
image_url = serializers.SerializerMethodField()
|
||||||
|
preview_image_url = serializers.SerializerMethodField()
|
||||||
|
description = serializers.SerializerMethodField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = News
|
||||||
|
fields = (
|
||||||
|
"state",
|
||||||
|
"template",
|
||||||
|
"image_url",
|
||||||
|
"preview_image_url",
|
||||||
|
"title",
|
||||||
|
"description",
|
||||||
|
"slug",
|
||||||
|
"news_type"
|
||||||
|
)
|
||||||
|
|
||||||
|
def get_description(self, obj):
|
||||||
|
if not hasattr(obj, "body"):
|
||||||
|
return ""
|
||||||
|
else:
|
||||||
|
return obj.body
|
||||||
|
|
||||||
|
def get_image_url(self, obj):
|
||||||
|
if not hasattr(obj, "attachment_file_name") or obj.attachment_file_name is None:
|
||||||
|
return ""
|
||||||
|
return obj.attachment_file_name
|
||||||
|
|
||||||
|
def get_preview_image_url(self, obj):
|
||||||
|
if not hasattr(obj, "attachment_file_name") or obj.attachment_file_name is None:
|
||||||
|
return ""
|
||||||
|
return obj.attachment_file_name
|
||||||
|
|
@ -1,3 +1,14 @@
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
# from django.core.management import call_command
|
||||||
# Create your tests here.
|
#
|
||||||
|
#
|
||||||
|
# class NewsTransferTestCase(TestCase):
|
||||||
|
# command = "-n"
|
||||||
|
#
|
||||||
|
# databases = {'default', 'legacy'}
|
||||||
|
#
|
||||||
|
# def test_transfer(self):
|
||||||
|
# args = [self.command]
|
||||||
|
# kwargs = {}
|
||||||
|
#
|
||||||
|
# call_command('transfer', *args, **kwargs)
|
||||||
|
|
|
||||||
|
|
@ -7,27 +7,45 @@ from pprint import pprint
|
||||||
|
|
||||||
|
|
||||||
def transfer_objects(data_type):
|
def transfer_objects(data_type):
|
||||||
models_list = {}
|
|
||||||
|
|
||||||
for app in apps.get_app_configs():
|
for app in apps.get_app_configs():
|
||||||
if exists(f"{app.path}/transfer.py"):
|
if exists(f"{app.path}/transfer_data.py"):
|
||||||
card_module = SourceFileLoader("transfer", f"{app.path}/transfer.py").load_module()
|
card_module = SourceFileLoader("transfer", f"{app.path}/transfer_data.py").load_module()
|
||||||
if not hasattr(card_module, "card") or len(card_module.card) < 1:
|
if not hasattr(card_module, "data_types") or not isinstance(card_module.data_types, dict) or len(card_module.data_types) < 1:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
for model, card in card_module.card.items():
|
for module_data_type, transfer_funcs in card_module.data_types.items():
|
||||||
if "data_type" in card and data_type == card["data_type"]:
|
if data_type == module_data_type:
|
||||||
card['app_label'] = app.label
|
# card['app_label'] = app.label
|
||||||
models_list[model] = card
|
# models_list[model] = card
|
||||||
|
for transfer_func in transfer_funcs:
|
||||||
|
print(f"========================== FUNCTION {transfer_func.__name__} ================================")
|
||||||
|
transfer_func()
|
||||||
|
|
||||||
|
# if len(models_list) < 1:
|
||||||
|
# print(f"Models with data type {data_type} not found in structure")
|
||||||
|
# exit(1)
|
||||||
|
|
||||||
|
# models_list = sort_by_dependencies(models_list)
|
||||||
|
#
|
||||||
|
# for model, card in models_list.items():
|
||||||
|
# transfer_data(model, card)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if len(models_list) < 1:
|
|
||||||
print(f"Models with data type {data_type} not found in structure")
|
|
||||||
exit(1)
|
|
||||||
|
|
||||||
models_list = sort_by_dependencies(models_list)
|
|
||||||
|
|
||||||
for model, card in models_list.items():
|
|
||||||
transfer_data(model, card)
|
|
||||||
|
|
||||||
|
|
||||||
# TRANSFER DATA FUNCTION
|
# TRANSFER DATA FUNCTION
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user