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)
|
@admin.register(Tag)
|
||||||
class TagAdmin(admin.ModelAdmin):
|
class TagAdmin(admin.ModelAdmin):
|
||||||
"""Admin model for model Tag."""
|
"""Admin model for model Tag."""
|
||||||
|
list_display = ['id', 'value', 'category']
|
||||||
|
list_display_links = ['id', 'value',]
|
||||||
|
list_filter = ['value']
|
||||||
|
|
||||||
|
|
||||||
@admin.register(TagCategory)
|
@admin.register(TagCategory)
|
||||||
class TagCategoryAdmin(admin.ModelAdmin):
|
class TagCategoryAdmin(admin.ModelAdmin):
|
||||||
"""Admin model for model TagCategory."""
|
"""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')
|
verbose_name_plural = _('Tag categories')
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
label = 'None'
|
return self.index_name
|
||||||
lang = TranslationSettings.get_solo().default_language
|
|
||||||
if self.label and lang in self.label:
|
|
||||||
label = self.label[lang]
|
|
||||||
return f'id:{self.id}-{label}'
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user