add news tag command
This commit is contained in:
parent
a30f863155
commit
8e61071759
35
apps/news/management/commands/add_news_tags.py
Normal file
35
apps/news/management/commands/add_news_tags.py
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
from django.core.management.base import BaseCommand
|
||||
|
||||
from news.models import News, NewsType
|
||||
from tag.models import Tag, TagCategory
|
||||
from transfer.models import PageMetadata, Pages, PageTexts
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = 'Remove old news from new bd'
|
||||
|
||||
def handle(self, *args, **kwargs):
|
||||
count = 0
|
||||
news_type, _ = NewsType.objects.get_or_create(name='News')
|
||||
tag_cat, _ = TagCategory.objects.get_or_create(index_name='tag')
|
||||
news_type.tag_categories.add(tag_cat)
|
||||
news_type.save()
|
||||
|
||||
old_news_tag = PageMetadata.objects.filter(key='tag')
|
||||
for old_tag in old_news_tag:
|
||||
old_id_list = old_tag.page.pagetexts_set.all().values_list('id', flat=True)
|
||||
|
||||
# Make Tag
|
||||
new_tag, created = Tag.objects.get_or_create(category=tag_cat, value=old_tag.value)
|
||||
if created:
|
||||
new_tag.label = {'en-GB': new_tag.value}
|
||||
new_tag.save()
|
||||
for id in old_id_list:
|
||||
if isinstance(id, int):
|
||||
news = News.objects.filter(old_id=id).first()
|
||||
if news:
|
||||
news.tags.add(new_tag)
|
||||
news.save()
|
||||
count += 1
|
||||
|
||||
self.stdout.write(self.style.WARNING(f'Create or update {count} objects.'))
|
||||
|
|
@ -5,8 +5,13 @@ from .models import Tag, TagCategory
|
|||
@admin.register(Tag)
|
||||
class TagAdmin(admin.ModelAdmin):
|
||||
"""Admin model for model Tag."""
|
||||
list_display = ['id', 'value', 'category']
|
||||
list_display_links = ['id', 'value',]
|
||||
list_filter = ['value']
|
||||
|
||||
|
||||
@admin.register(TagCategory)
|
||||
class TagCategoryAdmin(admin.ModelAdmin):
|
||||
"""Admin model for model TagCategory."""
|
||||
list_display = ['id', 'index_name', ]
|
||||
list_display_links = ['id', 'index_name', ]
|
||||
|
|
@ -135,8 +135,4 @@ class TagCategory(TranslatedFieldsMixin, models.Model):
|
|||
verbose_name_plural = _('Tag categories')
|
||||
|
||||
def __str__(self):
|
||||
label = 'None'
|
||||
lang = TranslationSettings.get_solo().default_language
|
||||
if self.label and lang in self.label:
|
||||
label = self.label[lang]
|
||||
return f'id:{self.id}-{label}'
|
||||
return self.index_name
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user