You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
445 lines
26 KiB
445 lines
26 KiB
from django.core.management.base import BaseCommand
|
|
from django.utils.text import slugify
|
|
from apps.article.models import (
|
|
ArticleCategory,
|
|
ArticleCollection,
|
|
Article,
|
|
ArticleContent,
|
|
ContentPart,
|
|
TextSection
|
|
)
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = 'Seed article data with Russian content about Imams and Prophets'
|
|
|
|
def handle(self, *args, **kwargs):
|
|
self.stdout.write(self.style.SUCCESS('Starting to seed article data...'))
|
|
|
|
# Create categories
|
|
self.stdout.write('Creating categories...')
|
|
categories = self.create_categories()
|
|
|
|
# Create collections
|
|
self.stdout.write('Creating collections...')
|
|
collections = self.create_collections()
|
|
|
|
# Create articles
|
|
self.stdout.write('Creating articles...')
|
|
articles = self.create_articles(categories, collections)
|
|
|
|
self.stdout.write(self.style.SUCCESS(f'Successfully created {len(articles)} articles with content!'))
|
|
|
|
def create_categories(self):
|
|
categories_data = [
|
|
{'title': 'Пророки', 'order': 1},
|
|
{'title': 'Имамы', 'order': 2},
|
|
{'title': 'Жизнь имамов', 'order': 3},
|
|
{'title': 'Исламская история', 'order': 4},
|
|
]
|
|
|
|
categories = []
|
|
for cat_data in categories_data:
|
|
category, created = ArticleCategory.objects.get_or_create(
|
|
title=cat_data['title'],
|
|
defaults={
|
|
'slug': slugify(cat_data['title'], allow_unicode=True),
|
|
'order': cat_data['order'],
|
|
'status': True
|
|
}
|
|
)
|
|
categories.append(category)
|
|
if created:
|
|
self.stdout.write(f' Created category: {category.title}')
|
|
|
|
return categories
|
|
|
|
def create_collections(self):
|
|
collections_data = [
|
|
{
|
|
'title': 'Избранные статьи об имамах',
|
|
'summary': 'Лучшие статьи о жизни и учениях имамов',
|
|
'pin_top': True,
|
|
'display_position': 'pinned',
|
|
'order': 1
|
|
},
|
|
{
|
|
'title': 'Коллекция о пророках',
|
|
'summary': 'Статьи о пророках в исламе',
|
|
'pin_top': False,
|
|
'display_position': 'middle',
|
|
'order': 2
|
|
},
|
|
]
|
|
|
|
collections = []
|
|
for coll_data in collections_data:
|
|
collection, created = ArticleCollection.objects.get_or_create(
|
|
title=coll_data['title'],
|
|
defaults={
|
|
'slug': slugify(coll_data['title'], allow_unicode=True),
|
|
'summary': coll_data['summary'],
|
|
'pin_top': coll_data['pin_top'],
|
|
'display_position': coll_data['display_position'],
|
|
'order': coll_data['order'],
|
|
'status': True
|
|
}
|
|
)
|
|
collections.append(collection)
|
|
if created:
|
|
self.stdout.write(f' Created collection: {collection.title}')
|
|
|
|
return collections
|
|
|
|
def create_articles(self, categories, collections):
|
|
articles_data = [
|
|
{
|
|
'title': 'Имам Джавад (мир ему)',
|
|
'description': 'Биография девятого имама шиитов, Мухаммада ибн Али аль-Джавада',
|
|
'categories': [categories[1]], # Имамы
|
|
'collections': [collections[0]],
|
|
'content_sections': [
|
|
{
|
|
'title': 'Введение',
|
|
'content': 'Имам Мухаммад ибн Али аль-Джавад - девятый имам двенадцати имамов в шиитском исламе.\nОн родился в 195 году хиджры в Медине и стал имамом в очень молодом возрасте.\nЕго жизнь полна уроков мудрости и знания.',
|
|
'priority': 1,
|
|
'parts': [
|
|
{
|
|
'order': 1,
|
|
'text_sections': [
|
|
{
|
|
'arabic_text': 'بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ',
|
|
'translation': 'Во имя Аллаха, Милостивого, Милосердного',
|
|
'order': 1
|
|
},
|
|
{
|
|
'arabic_text': 'الْحَمْدُ لِلَّهِ رَبِّ الْعَالَمِينَ وَالصَّلَاةُ وَالسَّلَامُ عَلَىٰ سَيِّدِنَا مُحَمَّدٍ وَآلِهِ الطَّاهِرِينَ',
|
|
'translation': 'Хвала Аллаху, Господу миров, и мир и благословение нашему господину Мухаммаду и его пречистому семейству',
|
|
'order': 2
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
'title': 'Рождение и детство',
|
|
'content': 'Имам Джавад родился в 195 году хиджры (811 г. н.э.) в священном городе Медина.\nЕго отцом был имам Али ибн Муса ар-Рида, восьмой имам.\nОн стал имамом в возрасте семи или девяти лет после мученической смерти своего отца.',
|
|
'priority': 2,
|
|
'parts': [
|
|
{
|
|
'order': 1,
|
|
'text_sections': [
|
|
{
|
|
'arabic_text': 'وُلِدَ الإِمَامُ مُحَمَّدُ بْنُ عَلِيٍّ الْجَوَادُ فِي الْمَدِينَةِ الْمُنَوَّرَةِ',
|
|
'translation': 'Имам Мухаммад ибн Али аль-Джавад родился в благословенной Медине',
|
|
'order': 1
|
|
},
|
|
{
|
|
'arabic_text': 'فِي سَنَةِ خَمْسٍ وَتِسْعِينَ وَمِائَةٍ مِنَ الْهِجْرَةِ',
|
|
'translation': 'В сто девяносто пятом году хиджры',
|
|
'order': 2
|
|
}
|
|
]
|
|
},
|
|
{
|
|
'order': 2,
|
|
'text_sections': [
|
|
{
|
|
'arabic_text': 'وَكَانَ عُمْرُهُ عِنْدَ الإِمَامَةِ سَبْعَ سِنِينَ أَوْ تِسْعَ سِنِينَ',
|
|
'translation': 'Ему было семь или девять лет, когда он стал имамом',
|
|
'order': 1
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
'title': 'Знания и мудрость',
|
|
'content': 'Несмотря на свой молодой возраст, имам Джавад проявлял невероятные знания и мудрость.\nОн отвечал на сложные вопросы ученых и удивлял их своей проницательностью.\nЕго называли "аль-Джавад" (щедрый) за его великодушие и знания.',
|
|
'priority': 3,
|
|
'parts': [
|
|
{
|
|
'order': 1,
|
|
'text_sections': [
|
|
{
|
|
'arabic_text': 'كَانَ الإِمَامُ الْجَوَادُ آيَةً فِي الْعِلْمِ وَالْحِكْمَةِ',
|
|
'translation': 'Имам Джавад был знамением в знании и мудрости',
|
|
'order': 1
|
|
},
|
|
{
|
|
'arabic_text': 'وَأَجَابَ عَلَى أَسْئِلَةِ الْعُلَمَاءِ وَهُوَ صَغِيرُ السِّنِّ',
|
|
'translation': 'Он отвечал на вопросы ученых в юном возрасте',
|
|
'order': 2
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
'title': 'Пророк Мухаммад (да благословит его Аллах)',
|
|
'description': 'Жизнь и миссия последнего пророка Аллаха, печати пророков',
|
|
'categories': [categories[0], categories[3]], # Пророки, Исламская история
|
|
'collections': [collections[1]],
|
|
'content_sections': [
|
|
{
|
|
'title': 'Введение о Пророке',
|
|
'content': 'Мухаммад ибн Абдуллах - последний пророк и посланник Аллаха.\nОн родился в Мекке в 570 году н.э. в племени курайш.\nЕго послание является последним откровением для всего человечества.',
|
|
'priority': 1,
|
|
'parts': [
|
|
{
|
|
'order': 1,
|
|
'text_sections': [
|
|
{
|
|
'arabic_text': 'مُحَمَّدٌ رَسُولُ اللَّهِ وَخَاتَمُ النَّبِيِّينَ',
|
|
'translation': 'Мухаммад - посланник Аллаха и печать пророков',
|
|
'order': 1
|
|
},
|
|
{
|
|
'arabic_text': 'وَمَا أَرْسَلْنَاكَ إِلَّا رَحْمَةً لِّلْعَالَمِينَ',
|
|
'translation': 'Мы послали тебя только как милость для миров',
|
|
'order': 2
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
'title': 'Начало откровения',
|
|
'content': 'В возрасте сорока лет пророк Мухаммад получил первое откровение в пещере Хира.\nАнгел Джибриль (Гавриил) явился ему с первыми аятами Корана.\nЭто было началом его пророческой миссии, которая продлилась 23 года.',
|
|
'priority': 2,
|
|
'parts': [
|
|
{
|
|
'order': 1,
|
|
'text_sections': [
|
|
{
|
|
'arabic_text': 'اقْرَأْ بِاسْمِ رَبِّكَ الَّذِي خَلَقَ',
|
|
'translation': 'Читай во имя Господа твоего, Который сотворил',
|
|
'order': 1
|
|
},
|
|
{
|
|
'arabic_text': 'خَلَقَ الْإِنسَانَ مِنْ عَلَقٍ',
|
|
'translation': 'Сотворил человека из сгустка',
|
|
'order': 2
|
|
},
|
|
{
|
|
'arabic_text': 'اقْرَأْ وَرَبُّكَ الْأَكْرَمُ',
|
|
'translation': 'Читай, ведь твой Господь - Самый великодушный',
|
|
'order': 3
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
'title': 'Имам Али (мир ему)',
|
|
'description': 'Первый имам и двоюродный брат пророка Мухаммада, врата знания',
|
|
'categories': [categories[1], categories[2]], # Имамы, Жизнь имамов
|
|
'collections': [collections[0]],
|
|
'content_sections': [
|
|
{
|
|
'title': 'Али - врата знания',
|
|
'content': 'Имам Али ибн Абу Талиб - первый имам шиитов и четвертый праведный халиф.\nОн был двоюродным братом и зятем пророка Мухаммада.\nПророк сказал о нем: "Я - город знания, а Али - его врата".',
|
|
'priority': 1,
|
|
'parts': [
|
|
{
|
|
'order': 1,
|
|
'text_sections': [
|
|
{
|
|
'arabic_text': 'عَلِيٌّ مَعَ الْحَقِّ وَالْحَقُّ مَعَ عَلِيٍّ',
|
|
'translation': 'Али с истиной, и истина с Али',
|
|
'order': 1
|
|
},
|
|
{
|
|
'arabic_text': 'أَنَا مَدِينَةُ الْعِلْمِ وَعَلِيٌّ بَابُهَا',
|
|
'translation': 'Я - город знания, а Али - его врата',
|
|
'order': 2
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
'title': 'Мудрость имама Али',
|
|
'content': 'Имам Али известен своими мудрыми изречениями и наставлениями.\nЕго книга "Нахдж аль-Балага" содержит его проповеди, письма и изречения.\nОн был образцом справедливости, храбрости и знания.',
|
|
'priority': 2,
|
|
'parts': [
|
|
{
|
|
'order': 1,
|
|
'text_sections': [
|
|
{
|
|
'arabic_text': 'النَّاسُ أَعْدَاءُ مَا جَهِلُوا',
|
|
'translation': 'Люди - враги того, чего они не знают',
|
|
'order': 1
|
|
},
|
|
{
|
|
'arabic_text': 'الْعِلْمُ خَيْرُ مِنَ الْمَالِ',
|
|
'translation': 'Знание лучше, чем богатство',
|
|
'order': 2
|
|
}
|
|
]
|
|
},
|
|
{
|
|
'order': 2,
|
|
'text_sections': [
|
|
{
|
|
'arabic_text': 'قِيمَةُ كُلِّ امْرِئٍ مَا يُحْسِنُهُ',
|
|
'translation': 'Ценность каждого человека в том, что он хорошо делает',
|
|
'order': 1
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
'title': 'Имам Хусейн (мир ему)',
|
|
'description': 'Третий имам и внук пророка Мухаммада, мученик Кербелы',
|
|
'categories': [categories[1], categories[2]],
|
|
'collections': [collections[0]],
|
|
'content_sections': [
|
|
{
|
|
'title': 'Жертвоприношение в Кербеле',
|
|
'content': 'Имам Хусейн ибн Али - третий имам шиитов и внук пророка Мухаммада.\nОн принял мученичество в Кербеле в 680 году н.э., защищая истину и справедливость.\nЕго жертва стала символом борьбы против тирании и несправедливости.',
|
|
'priority': 1,
|
|
'parts': [
|
|
{
|
|
'order': 1,
|
|
'text_sections': [
|
|
{
|
|
'arabic_text': 'إِنِّي لَا أَرَى الْمَوْتَ إِلَّا سَعَادَةً وَالْحَيَاةَ مَعَ الظَّالِمِينَ إِلَّا بَرَمًا',
|
|
'translation': 'Я не вижу смерть иначе как счастье, а жизнь с угнетателями - иначе как несчастье',
|
|
'order': 1
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
'title': 'Послание Кербелы',
|
|
'content': 'Восстание имама Хусейна не было военным восстанием, а духовной революцией.\nОн выступил против несправедливости и коррупции правителя Язида.\nЕго послание остается актуальным для всех поколений: "Если у вас нет религии, то хотя бы будьте свободными".',
|
|
'priority': 2,
|
|
'parts': [
|
|
{
|
|
'order': 1,
|
|
'text_sections': [
|
|
{
|
|
'arabic_text': 'هَيْهَاتَ مِنَّا الذِّلَّةُ',
|
|
'translation': 'Далеки мы от унижения',
|
|
'order': 1
|
|
},
|
|
{
|
|
'arabic_text': 'مَوْتٌ فِي عِزٍّ خَيْرٌ مِنْ حَيَاةٍ فِي ذُلٍّ',
|
|
'translation': 'Смерть в достоинстве лучше жизни в унижении',
|
|
'order': 2
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
'title': 'Пророк Иса (мир ему)',
|
|
'description': 'Иисус, сын Марии, один из великих пророков в исламе',
|
|
'categories': [categories[0]],
|
|
'collections': [collections[1]],
|
|
'content_sections': [
|
|
{
|
|
'title': 'Пророк Иса в исламе',
|
|
'content': 'Иса ибн Марьям (Иисус) - один из величайших пророков в исламе.\nОн был рожден чудесным образом от девы Марии по воле Аллаха.\nМусульмане почитают его как пророка и посланника Бога, но не как Бога.',
|
|
'priority': 1,
|
|
'parts': [
|
|
{
|
|
'order': 1,
|
|
'text_sections': [
|
|
{
|
|
'arabic_text': 'إِنَّ مَثَلَ عِيسَىٰ عِندَ اللَّهِ كَمَثَلِ آدَمَ ۖ خَلَقَهُ مِن تُرَابٍ ثُمَّ قَالَ لَهُ كُن فَيَكُونُ',
|
|
'translation': 'Воистину, Иса перед Аллахом подобен Адаму. Он сотворил его из праха, потом сказал ему: "Будь!" - и тот возник',
|
|
'order': 1
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
'title': 'Чудеса пророка Исы',
|
|
'content': 'Аллах даровал пророку Исе множество чудес в подтверждение его пророчества.\nОн исцелял больных, воскрешал мертвых и говорил с людьми еще в колыбели.\nВсе эти чудеса происходили по воле и дозволению Аллаха.',
|
|
'priority': 2,
|
|
'parts': [
|
|
{
|
|
'order': 1,
|
|
'text_sections': [
|
|
{
|
|
'arabic_text': 'وَأُبْرِئُ الْأَكْمَهَ وَالْأَبْرَصَ وَأُحْيِي الْمَوْتَىٰ بِإِذْنِ اللَّهِ',
|
|
'translation': 'Я исцеляю слепого и прокаженного и оживляю мертвых с дозволения Аллаха',
|
|
'order': 1
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
|
|
articles = []
|
|
for article_data in articles_data:
|
|
# Create or get article
|
|
article, created = Article.objects.get_or_create(
|
|
title=article_data['title'],
|
|
defaults={
|
|
'slug': slugify(article_data['title'], allow_unicode=True),
|
|
'description': article_data['description'],
|
|
'status': True
|
|
}
|
|
)
|
|
|
|
if created:
|
|
self.stdout.write(f' Created article: {article.title}')
|
|
|
|
# Add categories
|
|
article.categories.set(article_data['categories'])
|
|
|
|
# Add to collections
|
|
for collection in article_data['collections']:
|
|
from apps.article.models import ArticleInCollection
|
|
ArticleInCollection.objects.get_or_create(
|
|
collection=collection,
|
|
article=article,
|
|
defaults={'order': 1}
|
|
)
|
|
|
|
# Create content sections
|
|
for content_data in article_data['content_sections']:
|
|
article_content = ArticleContent.objects.create(
|
|
article=article,
|
|
title=content_data['title'],
|
|
content=content_data['content'],
|
|
priority=content_data['priority'],
|
|
status=True
|
|
)
|
|
|
|
# Create parts
|
|
for part_data in content_data['parts']:
|
|
content_part = ContentPart.objects.create(
|
|
article_content=article_content,
|
|
order=part_data['order']
|
|
)
|
|
|
|
# Create text sections
|
|
for section_data in part_data['text_sections']:
|
|
TextSection.objects.create(
|
|
content_part=content_part,
|
|
arabic_text=section_data['arabic_text'],
|
|
translation=section_data['translation'],
|
|
order=section_data['order']
|
|
)
|
|
|
|
articles.append(article)
|
|
|
|
return articles
|