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
|
||||
db_table = 'guide_filters'
|
||||
|
||||
|
||||
class GuideSections(MigrateMixin):
|
||||
using = 'legacy'
|
||||
|
||||
type = models.CharField(max_length=255)
|
||||
key_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)
|
||||
created_at = models.DateTimeField()
|
||||
updated_at = models.DateTimeField()
|
||||
#
|
||||
# class GuideSections(MigrateMixin):
|
||||
# using = 'legacy'
|
||||
#
|
||||
# type = models.CharField(max_length=255)
|
||||
# key_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)
|
||||
# created_at = models.DateTimeField()
|
||||
# updated_at = models.DateTimeField()
|
||||
|
||||
|
||||
# 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
|
||||
|
||||
# Create your tests here.
|
||||
# from django.core.management import call_command
|
||||
#
|
||||
#
|
||||
# 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):
|
||||
models_list = {}
|
||||
|
||||
for app in apps.get_app_configs():
|
||||
if exists(f"{app.path}/transfer.py"):
|
||||
card_module = SourceFileLoader("transfer", f"{app.path}/transfer.py").load_module()
|
||||
if not hasattr(card_module, "card") or len(card_module.card) < 1:
|
||||
if exists(f"{app.path}/transfer_data.py"):
|
||||
card_module = SourceFileLoader("transfer", f"{app.path}/transfer_data.py").load_module()
|
||||
if not hasattr(card_module, "data_types") or not isinstance(card_module.data_types, dict) or len(card_module.data_types) < 1:
|
||||
continue
|
||||
|
||||
for model, card in card_module.card.items():
|
||||
if "data_type" in card and data_type == card["data_type"]:
|
||||
card['app_label'] = app.label
|
||||
models_list[model] = card
|
||||
for module_data_type, transfer_funcs in card_module.data_types.items():
|
||||
if data_type == module_data_type:
|
||||
# card['app_label'] = app.label
|
||||
# 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
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user