add news author migration
This commit is contained in:
parent
ed28ea1767
commit
b6d0815ed0
29
apps/news/management/commands/add_author.py
Normal file
29
apps/news/management/commands/add_author.py
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
from django.core.management.base import BaseCommand
|
||||
from django.db.models import F
|
||||
from tqdm import tqdm
|
||||
|
||||
from account.models import User
|
||||
from news.models import News
|
||||
from transfer.models import PageTexts
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = 'Add author of News'
|
||||
|
||||
def handle(self, *args, **kwargs):
|
||||
count = 0
|
||||
news_list = News.objects.filter(created_by__isnull=True)
|
||||
|
||||
for news in tqdm(news_list, desc="Find author for exist news"):
|
||||
old_news = PageTexts.objects.filter(id=news.old_id).annotate(
|
||||
account_id=F('page__account_id'),
|
||||
).first()
|
||||
if old_news:
|
||||
user = User.objects.filter(old_id=old_news.account_id).first()
|
||||
if user:
|
||||
news.created_by = user
|
||||
news.modified_by = user
|
||||
news.save()
|
||||
count += 1
|
||||
|
||||
self.stdout.write(self.style.WARNING(f'Update {count} objects.'))
|
||||
|
|
@ -38,6 +38,7 @@ def transfer_news():
|
|||
image=F('page__attachment_suffix_url'),
|
||||
template=F('page__template'),
|
||||
tags=GroupConcat('page__tags__id'),
|
||||
account_id=F('page__account_id'),
|
||||
)
|
||||
|
||||
serialized_data = NewsSerializer(data=list(queryset.values()), many=True)
|
||||
|
|
|
|||
|
|
@ -7,10 +7,12 @@ from tag.models import Tag
|
|||
from transfer.models import PageMetadata
|
||||
from utils.legacy_parser import parse_legacy_news_content
|
||||
from utils.slug_generator import generate_unique_slug
|
||||
from account.models import User
|
||||
|
||||
|
||||
class NewsSerializer(serializers.Serializer):
|
||||
id = serializers.IntegerField()
|
||||
account_id = serializers.IntegerField(allow_null=True)
|
||||
tag_cat_id = serializers.IntegerField()
|
||||
news_type_id = serializers.IntegerField()
|
||||
news_title = serializers.CharField()
|
||||
|
|
@ -39,6 +41,8 @@ class NewsSerializer(serializers.Serializer):
|
|||
'state': self.get_state(validated_data),
|
||||
'template': self.get_template(validated_data),
|
||||
'country': self.get_country(validated_data),
|
||||
'created_by': self.get_account(validated_data),
|
||||
'modified_by': self.get_account(validated_data),
|
||||
}
|
||||
obj = News.objects.create(**payload)
|
||||
|
||||
|
|
@ -126,3 +130,8 @@ class NewsSerializer(serializers.Serializer):
|
|||
else:
|
||||
content = {data['locale']: data['title']}
|
||||
return content
|
||||
|
||||
@staticmethod
|
||||
def get_account(data):
|
||||
"""Get account"""
|
||||
return User.objects.filter(old_id=data['account_id']).first()
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ services:
|
|||
mysql_db:
|
||||
image: mysql:5.7
|
||||
ports:
|
||||
- "3306:3306"
|
||||
- "3316:3306"
|
||||
environment:
|
||||
MYSQL_DATABASE: dev
|
||||
MYSQL_USER: dev
|
||||
|
|
|
|||
|
|
@ -99,3 +99,6 @@ TESTING = sys.argv[1:2] == ['test']
|
|||
if TESTING:
|
||||
ELASTICSEARCH_INDEX_NAMES = {}
|
||||
ELASTICSEARCH_DSL_AUTOSYNC = False
|
||||
|
||||
# INSTALLED APPS
|
||||
INSTALLED_APPS.append('transfer.apps.TransferConfig')
|
||||
Loading…
Reference in New Issue
Block a user