diff --git a/apps/hadis/serializers/hadis.py b/apps/hadis/serializers/hadis.py index 207ae0e..200688d 100644 --- a/apps/hadis/serializers/hadis.py +++ b/apps/hadis/serializers/hadis.py @@ -181,7 +181,7 @@ class HadisSyncSerializer(serializers.ModelSerializer): layer = transmitter_rel.narrator_layer reliability_block = None - if t.reliability: + if t and t.reliability: reliability_block = { 'id': t.reliability.id, 'title': get_localized_text(t.reliability.title, request), @@ -189,12 +189,34 @@ class HadisSyncSerializer(serializers.ModelSerializer): 'main_color_code': t.reliability.main_color_code, } + uncertain_list = [] + if transmitter_rel.is_uncertain: + for ut in transmitter_rel.uncertain_transmitters.all(): + ut_rel_block = None + if ut.reliability: + ut_rel_block = { + 'id': ut.reliability.id, + 'title': get_localized_text(ut.reliability.title, request), + 'color': ut.reliability.color, + 'main_color_code': ut.reliability.main_color_code, + } + uncertain_list.append({ + 'id': ut.id, + 'name': get_localized_text(ut.full_name, request), + 'slug': ut.slug, + 'known_as': get_localized_text(ut.known_as, request), + 'nickname': get_localized_text(ut.nickname, request), + 'birth_year_hijri': ut.birth_year_hijri, + 'death_year_hijri': ut.death_year_hijri, + 'reliability': ut_rel_block, + }) + transmitters_data.append({ - 'id': t.id, - 'name': get_localized_text(t.full_name, request), - 'slug': t.slug, - 'known_as': get_localized_text(t.known_as, request), - 'nickname': get_localized_text(t.nickname, request), + 'id': t.id if t else None, + 'name': get_localized_text(t.full_name, request) if t else None, + 'slug': t.slug if t else None, + 'known_as': get_localized_text(t.known_as, request) if t else None, + 'nickname': get_localized_text(t.nickname, request) if t else None, 'reliability': reliability_block, 'layer_id': layer.id if layer else None, 'narrator_layer_id': layer.id if layer else None, @@ -202,8 +224,10 @@ class HadisSyncSerializer(serializers.ModelSerializer): 'layer_name': get_localized_text(layer.name, request) if layer else None, 'layer_description': get_localized_text(layer.description, request) if layer else None, 'is_gap': transmitter_rel.is_gap, - 'birth_year_hijri': t.birth_year_hijri, - 'death_year_hijri': t.death_year_hijri, + 'is_uncertain': transmitter_rel.is_uncertain, + 'uncertain_transmitters': uncertain_list, + 'birth_year_hijri': t.birth_year_hijri if t else None, + 'death_year_hijri': t.death_year_hijri if t else None, 'order': transmitter_rel.order, }) diff --git a/apps/hadis/views/hadis.py b/apps/hadis/views/hadis.py index 4030a05..d12e86d 100644 --- a/apps/hadis/views/hadis.py +++ b/apps/hadis/views/hadis.py @@ -124,6 +124,9 @@ class HadisSyncView(ListAPIView): 'transmitter', 'transmitter__reliability', 'narrator_layer' + ).prefetch_related( + 'uncertain_transmitters', + 'uncertain_transmitters__reliability' ).order_by('order') ), Prefetch(