@@ -32,17 +32,38 @@ def home(request):
3232 questions = Question .objects .filter (status = 1 ).order_by ('date_created' ).reverse ()[:100 ]
3333 active_questions = Question .objects .filter (status = 1 , last_active__isnull = False ).order_by ('last_active' ).reverse ()[:100 ]
3434
35- subquery = Question .objects .filter (category = OuterRef ('category' )).values ('category' ).annotate (max_date = Max ('date_created' )).values ('max_date' )
35+ # Retrieve latest questions per category for the slider
36+ subquery = Question .objects .filter (category = OuterRef ('category' ), status = 1 ).values ('category' ).annotate (max_date = Max ('date_created' )).values ('max_date' )
3637 slider_questions = Question .objects .filter (
37- date_created = Subquery (subquery )
38+ date_created = Subquery (subquery ), status = 1
3839 ).order_by ('category' )
40+
41+ # Mapping of foss name as in spk db & its corresponding category name in forums db
42+ category_fosses = {val .replace (" " , "-" ) : val for val in categories }
43+
44+ # All eligible categories to be shown in homepage slider
45+ all_eligible_categories = list (category_fosses .keys ())
46+
47+ # Create a dictionary to map categories to questions for the slider
48+ category_question_map = {}
49+ for question in slider_questions :
50+ if question .category in all_eligible_categories :
51+ foss = category_fosses .get (question .category )
52+ category_question_map [foss ] = {"id" : question .id , "question" : question .title , "foss_url" : question .category }
3953
54+ # Fill in missing categories without questions
55+ for category in category_fosses .keys ():
56+ foss = category_fosses .get (category )
57+ if foss not in category_question_map :
58+ category_question_map [foss ] = None
59+
60+ # Sort category_question_map by category name
61+ category_question_map = dict (sorted (category_question_map .items (), key = lambda item : item [0 ].lower ()))
4062 context = {
41- 'categories' : categories ,
42- 'questions' : questions ,
43- 'active_questions' :active_questions ,
44- 'slider_questions' : slider_questions
45- }
63+ 'questions' : questions ,
64+ 'active_questions' :active_questions ,
65+ 'category_question_map' : category_question_map
66+ }
4667 return render (request , "website/templates/index.html" , context )
4768
4869
0 commit comments