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.
Mohsen Taba
245098f356
feat(hadis): add multi-category M2M support with full backend integration
Models:
- Hadis: add categories ManyToManyField to HadisCategory (related_name=hadis_items)
- Hadis.clean(): validate that none of the M2M categories have subcategories
- HadisCategory.clean(): update parent/leaf validation to also check hadis_items
Migration:
- 0050_hadis_categories: create hadis_categories junction table
Serializers (Admin):
- AdminHadisDetailSerializer: add categories (PK writable), categories_detail (read-only nested), and categories_paths (full ancestor path per category)
- validate_categories(): enforce leaf-only constraint on M2M selection
- create/update: sync categories M2M; auto-set FK category from first M2M item
- AdminHadisCategoryArchiveDetailSerializer: update child_arguments and child_count to use Q(category|categories)
Views (Admin):
- AdminHadisCategoryViewSet: annotate has_hadith using Q(category|categories)
- AdminHadisViewSet: prefetch categories; filter category_id, collection_id, source_type with Q() + distinct()
Views (Public):
- HadisListView: filter by category slug across FK and M2M using Q() + distinct()
- CategoryHadisCorrectionsView: filter corrections via M2M-aware category_id__in query
|
2 weeks ago |
| .. |
|
management/commands
|
feat(podcast, video): implement category creation and playlist association for podcasts and videos
|
11 months ago |
|
migrations
|
feat: automatic smart unique slug generation for video and podcast models and serializers
|
2 months ago |
|
README_COLLECTIONS.md
|
feat(collections): enhance article and podcast admin interfaces with display position
|
11 months ago |
|
__init__.py
|
develop dovoodi
|
2 years ago |
|
admin.py
|
collections updated
|
3 months ago |
|
apps.py
|
feat(cache): implement automatic cache invalidation and smart cache bypass
|
1 month ago |
|
models.py
|
perf(db): resolve N+1 queries across endpoints and optimize gunicorn concurrency
|
2 months ago |
|
serializers.py
|
fix(podcast): resolve audio playback redirect loop with HTTPS enforcement and cache-buster
|
1 month ago |
|
serializers_admin.py
|
fix(podcast): resolve audio playback redirect loop with HTTPS enforcement and cache-buster
|
1 month ago |
|
serializers_dovodi.py
|
collections updated
|
3 months ago |
|
signals.py
|
feat(cache): implement automatic cache invalidation and smart cache bypass
|
1 month ago |
|
sitemaps.py
|
SEO : seo tools and normalizations added for code base and Article, Hadis (optimized to prefetch transmitters, references, and book authors), Library (Books), Podcast, and Video apps.
|
4 months ago |
|
tests.py
|
develop dovoodi
|
2 years ago |
|
urls.py
|
feat(cache): implement automatic cache invalidation and smart cache bypass
|
1 month ago |
|
views.py
|
fix(bookmarks): strictly filter playlists by bookmarked ID and eliminate item-level leakage
|
2 months ago |
|
views_admin.py
|
feat(cache): implement automatic cache invalidation and smart cache bypass
|
1 month ago |