|
|
|
@ -35,36 +35,6 @@ class HadisCategorySectListView(ListAPIView): |
|
|
|
def get(self, request, *args, **kwargs): |
|
|
|
return self.list(request, *args, **kwargs) |
|
|
|
|
|
|
|
def list(self, request, *args, **kwargs): |
|
|
|
queryset = self.get_queryset() |
|
|
|
response = super().list(request, *args, **kwargs) |
|
|
|
lang = request.LANGUAGE_CODE |
|
|
|
|
|
|
|
# Group sects by type |
|
|
|
grouped_data = { |
|
|
|
'shia': [], |
|
|
|
'sunni': [] |
|
|
|
} |
|
|
|
|
|
|
|
for sect in queryset: |
|
|
|
sect_data = { |
|
|
|
'id': sect.id, |
|
|
|
'title': sect.title, |
|
|
|
} |
|
|
|
|
|
|
|
if sect.sect_type == HadisSect.SectType.SHIA: |
|
|
|
grouped_data['shia'].append(sect_data) |
|
|
|
elif sect.sect_type == HadisSect.SectType.SUNNI: |
|
|
|
grouped_data['sunni'].append(sect_data) |
|
|
|
|
|
|
|
# Create response with count and results |
|
|
|
response_data = { |
|
|
|
'count': queryset.count(), |
|
|
|
'results': grouped_data |
|
|
|
} |
|
|
|
|
|
|
|
return Response(response_data) |
|
|
|
|
|
|
|
|
|
|
|
class HadisCategoryTreeView(ListAPIView): |
|
|
|
""" |
|
|
|
@ -130,12 +100,16 @@ class HadisCategoryTreeView(ListAPIView): |
|
|
|
# Add sect info |
|
|
|
sect_id = str(category.sect.id) |
|
|
|
if sect_id not in grouped_data[sect_type]['sects']: |
|
|
|
source_types = HadisCategory.objects.filter( |
|
|
|
sect=category.sect |
|
|
|
).values_list('source_type', flat=True) |
|
|
|
grouped_data[sect_type]['sects'][sect_id] = { |
|
|
|
'id': category.sect.id, |
|
|
|
'sect_type': category.sect.sect_type, |
|
|
|
'title': get_localized_text(category.sect.title, request), |
|
|
|
'description': category.sect.description, |
|
|
|
'order': category.sect.order |
|
|
|
'order': category.sect.order, |
|
|
|
'source_types':list(set(source_types)) |
|
|
|
} |
|
|
|
|
|
|
|
# Build tree using prefetched data |
|
|
|
|