# Скрипты для заполнения данными приложения Hadis Этот каталог содержит скрипты для создания и управления тестовыми данными для приложения Hadis. ## Файлы ### Основные скрипты - **`seed_hadis_data.py`** - Основной скрипт для создания тестовых данных - **`clear_hadis_data.py`** - Скрипт для очистки созданных данных - **`README.md`** - Этот файл с документацией ### Ресурсы - **`seed_images/`** - Каталог с изображениями для обложек книг - `book1.png`, `book2.png`, `book3.png`, `book4.png` - **`test.xmind`** - Файл XMind для категорий хадисов ## Использование ### Создание тестовых данных ```bash # Создать данные без очистки существующих python scripts/seed_hadis_data.py # Создать данные с очисткой существующих (ОСТОРОЖНО!) python scripts/seed_hadis_data.py --clear # Создать данные без очистки (явно) python scripts/seed_hadis_data.py --no-clear ``` ### Очистка данных ```bash # Очистить все данные хадисов и связанные данные библиотеки python scripts/clear_hadis_data.py # Очистить только данные хадисов, оставить библиотеку python scripts/clear_hadis_data.py --hadis-only # Принудительная очистка без подтверждения python scripts/clear_hadis_data.py --force ``` ## Создаваемые данные ### Модели Hadis 1. **HadisSect** (Секты) - Шииты-двунадесятники - Сунниты 2. **HadisStatus** (Статусы хадисов) - Достоверный, Хороший, Слабый, Выдуманный, и др. 3. **HadisTag** (Теги) - Поклонение, Молитва, Пост, Хадж, Закят, и др. 4. **HadisCategory** (Категории) - Иерархическая структура - **Коран**: Толкование Корана, Аяты предписаний, и др. - **Хадисы**: Книга молитвы, Книга поста, Книга хаджа, и др. 5. **Transmitters** (Передатчики) - Известные мухаддисы и имамы 6. **Hadis** (Хадисы) - Реалистичные тексты хадисов на русском языке - Переводы на персидском и английском - Объяснения и комментарии 7. **HadisTransmitter** (Цепочки передачи) - Цепочки передатчиков для каждого хадиса - Включая пропуски в цепочках 8. **HadisReference** (Ссылки) - Связи хадисов с книгами 9. **ReferenceImage** (Изображения ссылок) - Изображения для ссылок на источники ### Модели Library 1. **Book** (Книги) - Аль-Кафи, Сахих аль-Бухари, и др. - С обложками из seed_images 2. **Category** (Категории библиотеки) - Книги хадисов, Книги фикха, и др. 3. **BookCollection** (Коллекции книг) - Шиитские книги хадисов, Суннитские книги хадисов ## Особенности ### Реалистичные данные - Все тексты на русском языке - Аутентичные названия книг и имена передатчиков - Правильная иерархия категорий - Реалистичные цепочки передачи ### Связи между моделями - Правильные foreign key связи - Many-to-many отношения для тегов - Иерархические структуры (MPTT) для категорий ### Файлы и изображения - XMind файлы для категорий - Изображения обложек для книг - Изображения для ссылок ### Безопасность - Транзакционная безопасность - Возможность отката при ошибках - Подтверждение перед удалением данных ## Структура данных ``` HadisSect (2 записи) ├── HadisCategory (иерархическая структура) │ ├── Quran categories (4 основные + дочерние) │ └── Hadith categories (7 основных + дочерние) │ ├── Hadis (2-4 хадиса на категорию) │ ├── HadisTransmitter (цепочки 3-6 передатчиков) │ ├── HadisReference (1-3 ссылки на книги) │ └── ReferenceImage (изображения для ссылок) │ ├── HadisStatus (7 статусов) ├── HadisTag (30+ тегов) └── Transmitters (10 известных передатчиков) Library Models: ├── Book (4 книги с обложками) ├── Category (5 категорий) └── BookCollection (3 коллекции) ``` ## Тестирование API После создания данных можно тестировать API: ```bash # Список сект curl -X GET "http://localhost:8000/api/hadis/sects/" # Категории по секте curl -X GET "http://localhost:8000/api/hadis/sect/1/categories/" # Хадисы по категории curl -X GET "http://localhost:8000/api/hadis/category/1/hadis/" ``` ## Требования - Django проект настроен и работает - Все зависимости установлены - База данных мигрирована - Файлы seed_images и test.xmind присутствуют ## Примечания - Скрипт создает данные на русском языке - Используются реалистичные исламские термины и имена - Данные подходят для демонстрации и тестирования - Можно безопасно запускать несколько раз - Поддерживается частичная очистка данных