Coverage for webpage/views.py: 78%
69 statements
« prev ^ index » next coverage.py v7.6.0, created at 2024-07-27 11:19 +0000
« prev ^ index » next coverage.py v7.6.0, created at 2024-07-27 11:19 +0000
1from copy import deepcopy
3import requests
4from django.conf import settings
5from django.contrib.auth import authenticate
6from django.contrib.auth import login
7from django.contrib.auth import logout
8from django.http import HttpResponse
9from django.http import HttpResponseRedirect
10from django.http import JsonResponse
11from django.shortcuts import render
12from django.template import loader
13from django.template.exceptions import TemplateDoesNotExist
14from django.views.generic import TemplateView
16from .forms import form_user_login
17from .metadata import PROJECT_METADATA as PM
20class ImprintView(TemplateView):
21 template_name = "webpage/imprint.html"
23 def get_context_data(self, **kwargs):
24 context = super().get_context_data(**kwargs)
25 try:
26 imprint_url = f"{settings.ACDH_IMPRINT_URL}{settings.REDMINE_ID}"
27 except Exception as e:
28 context["imprint_body"] = e
29 return context
30 r = requests.get(imprint_url)
31 if r.status_code == 200:
32 context["imprint_body"] = f"{r.text}"
33 else:
34 context[
35 "imprint_body"
36 ] = """
37 On of our services is currently not available.\
38 Please try it later or write an email to\
39 acdh-ch-helpdesk@oeaw.ac.at; if you are service provide,\
40 make sure that you provided ACDH_IMPRINT_URL and REDMINE_ID
41 """
42 return context
45class GenericWebpageView(TemplateView):
46 template_name = "webpage/index.html"
48 def get_context_data(self, **kwargs):
49 context = super(GenericWebpageView, self).get_context_data(**kwargs)
50 context["apps"] = settings.INSTALLED_APPS
51 return context
53 def get_template_names(self):
54 template_name = "webpage/{}.html".format(self.kwargs.get("template", "index"))
55 try:
56 loader.select_template([template_name])
57 template_name = "webpage/{}.html".format(
58 self.kwargs.get("template", "index")
59 )
60 except TemplateDoesNotExist:
61 template_name = "webpage/index.html"
62 return [template_name]
65#################################################################
66# views for login/logout #
67#################################################################
70def user_login(request):
71 if request.method == "POST":
72 form = form_user_login(request.POST)
73 if form.is_valid():
74 cd = form.cleaned_data
75 user = authenticate(username=cd["username"], password=cd["password"])
76 if user and user.is_active:
77 login(request, user)
78 return HttpResponseRedirect(request.GET.get("next", "/"))
79 return HttpResponse("user does not exist")
80 else:
81 form = form_user_login()
82 return render(request, "webpage/user_login.html", {"form": form})
85def user_logout(request):
86 logout(request)
87 return render(request, "webpage/user_logout.html")
90def handler404(request, exception):
91 return render(request, "webpage/404-error.html", locals())
94def project_info(request):
95 """
96 returns a dict providing metadata about the current project
97 """
99 info_dict = deepcopy(PM)
101 if request.user.is_authenticated:
102 pass
103 else:
104 del info_dict["matomo_id"]
105 del info_dict["matomo_url"]
106 info_dict["base_tech"] = "django"
107 info_dict["framework"] = "djangobaseproject"
108 return JsonResponse(info_dict)