add news tag command

This commit is contained in:
Dmitriy Kuzmenko 2019-11-03 20:33:45 +03:00
parent a30f863155
commit 8e61071759
3 changed files with 41 additions and 5 deletions

View 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.'))

View File

@ -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', ]

View File

@ -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