-
Notifications
You must be signed in to change notification settings - Fork 619
/
Copy pathcontext_processors.py
75 lines (62 loc) · 2.34 KB
/
context_processors.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
from django.conf import settings
from django.urls import resolve, Resolver404, reverse
def site_info(request):
return {'SITE_INFO': settings.SITE_VARIABLES}
def url_name(request):
try:
match = resolve(request.path)
except Resolver404:
return {}
else:
namespace, url_name_ = match.namespace, match.url_name
if namespace:
url_name_ = f"{namespace}:{url_name_}"
return {'URL_NAMESPACE': namespace, 'URL_NAME': url_name_}
def get_host_with_scheme(request):
return {
'GET_HOST_WITH_SCHEME': request.build_absolute_uri('/').rstrip('/'),
}
def blog_url(request):
return {
'BLOG_URL': settings.PYTHON_BLOG_URL,
}
def user_nav_bar_links(request):
nav = {}
if request.user.is_authenticated:
user = request.user
sponsorship_url = None
if user.sponsorships.exists():
sponsorship_url = reverse("users:user_sponsorships_dashboard")
# if the section has a urls key, the section buttion will work as a drop-down menu
# if the section has only a url key, the button will be a link instead
nav = {
"account": {
"label": "Your Account",
"urls": [
{"url": reverse("users:user_detail", args=[user.username]), "label": "View profile"},
{"url": reverse("users:user_profile_edit"), "label": "Edit profile"},
{"url": reverse("account_change_password"), "label": "Change password"},
],
},
"psf_membership": {
"label": "Membership",
"urls": [
{"url": reverse("users:user_nominations_view"), "label": "Nominations"},
],
},
"sponsorships": {
"label": "Sponsorships Dashboard",
"url": sponsorship_url
}
}
if request.user.has_membership:
nav["psf_membership"]['urls'].append({
"url": reverse("users:user_membership_edit"),
"label": "Edit PSF Basic membership"
})
else:
nav["psf_membership"]['urls'].append({
"url": reverse("users:user_membership_create"),
"label": "Become a PSF Basic member"
})
return {"USER_NAV_BAR": nav}