Coverage for benefits / core / context_processors.py: 78%

44 statements  

« prev     ^ index     » next       coverage.py v7.13.4, created at 2026-02-13 19:35 +0000

1""" 

2The core application: context processors for enriching request context data. 

3""" 

4 

5from django.conf import settings 

6 

7from benefits.routes import routes as app_routes 

8 

9from . import models, session 

10 

11 

12def _agency_context(agency: models.TransitAgency): 

13 agency_context = { 

14 "eligibility_index_url": agency.eligibility_index_url, 

15 "info_url": agency.info_url, 

16 "littlepay_config": agency.littlepay_config, 

17 "long_name": agency.long_name, 

18 "phone": agency.phone, 

19 "short_name": agency.short_name, 

20 "slug": agency.slug, 

21 "supported_card_schemes": [ 

22 models.CardSchemes.CHOICES.get(card_scheme) for card_scheme in agency.supported_card_schemes 

23 ], 

24 "switchio_config": agency.switchio_config, 

25 } 

26 

27 if agency.logo: 27 ↛ 30line 27 didn't jump to line 30 because the condition on line 27 was always true

28 agency_context.update({"logo_url": agency.logo.url}) 

29 

30 return agency_context 

31 

32 

33def agency(request): 

34 """Context processor adds some information about the active agency to the request context.""" 

35 agency = session.agency(request) 

36 

37 if agency is None: 

38 return {} 

39 

40 return {"agency": _agency_context(agency)} 

41 

42 

43def active_agencies(request): 

44 """Context processor adds some information about all active agencies to the request context.""" 

45 agencies = models.TransitAgency.all_active() 

46 

47 return {"active_agencies": [_agency_context(agency) for agency in agencies]} 

48 

49 

50def analytics(request): 

51 """Context processor adds some analytics information to request context.""" 

52 return {"analytics": {"api_key": settings.ANALYTICS_KEY, "uid": session.uid(request), "did": session.did(request)}} 

53 

54 

55def authentication(request): 

56 """Context processor adds authentication information to request context.""" 

57 flow = session.flow(request) 

58 

59 if flow: 59 ↛ 60line 59 didn't jump to line 60 because the condition on line 59 was never true

60 data = { 

61 "logged_in": session.logged_in(request), 

62 } 

63 

64 if flow.uses_claims_verification: 

65 data["sign_out_button_template"] = flow.sign_out_button_template 

66 data["sign_out_link_template"] = flow.sign_out_link_template 

67 

68 return {"authentication": data} 

69 else: 

70 return {} 

71 

72 

73def debug(request): 

74 """Context processor adds debug information to request context.""" 

75 return {"debug": session.context_dict(request)} 

76 

77 

78def enrollment(request): 

79 """Context processor adds enrollment information to request context.""" 

80 flow = session.flow(request) 

81 expiry = session.enrollment_expiry(request) 

82 reenrollment = session.enrollment_reenrollment(request) 

83 

84 data = { 

85 "expires": expiry, 

86 "reenrollment": reenrollment, 

87 "supports_expiration": flow.supports_expiration if flow else False, 

88 } 

89 

90 return {"enrollment": data} 

91 

92 

93def feature_flags(request): 

94 """Context processor adds feature flags to request context.""" 

95 return {"feature_flags": {}} 

96 

97 

98def origin(request): 

99 """Context processor adds session.origin to request context.""" 

100 origin = session.origin(request) 

101 

102 if origin: 102 ↛ 105line 102 didn't jump to line 105 because the condition on line 102 was always true

103 return {"origin": origin} 

104 else: 

105 return {} 

106 

107 

108def routes(request): 

109 """Context processor adds information about each application route to the context.""" 

110 

111 return {"routes": app_routes.to_dict()}