import json import base64 from core.models import Berichtsheft from core.reports import DailyReport, WeeklyReport class AzureUser: display_name: str id: str claims: list def __init__(self, request): try: # X-MS-CLIENT-PRINCIPAL-ID self.id = request.headers["X-MS-CLIENT-PRINCIPAL-ID"] # X-MS-CLIENT-PRINCIPAL-NAME self.id = request.headers["X-MS-CLIENT-PRINCIPAL-NAME"] # X-MS-CLIENT-PRINCIPAL claims_json = json.loads( base64.decode(request.headers["X-MS-CLIENT-PRINCIPAL"]) ) claims = {} for claim in claims_json["claims"]: claims[claim["typ"]] = claim["val"] self.claims = claims except: self.display_name = "Anon" self.id = "anon" def reports(self): return Berichtsheft.objects.filter(user=self.id) def get_report_kind(self): # TODO : Implement return "weekly" def get_report_kind_form(self, request=None): match self.get_report_kind(): case "weekly": return WeeklyReport(request) case "daily": return DailyReport(request)