diff --git a/apps/news/management/commands/add_news_tags.py b/apps/news/management/commands/add_news_tags.py new file mode 100644 index 00000000..fa4e9164 --- /dev/null +++ b/apps/news/management/commands/add_news_tags.py @@ -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.')) diff --git a/apps/tag/admin.py b/apps/tag/admin.py index ea7f9394..695b806d 100644 --- a/apps/tag/admin.py +++ b/apps/tag/admin.py @@ -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', ] \ No newline at end of file diff --git a/apps/tag/models.py b/apps/tag/models.py index de4dcdca..7aa0a5ec 100644 --- a/apps/tag/models.py +++ b/apps/tag/models.py @@ -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