report post

This commit is contained in:
Angelo Rodriguez 2024-12-03 13:13:50 +01:00
parent d14464fdfd
commit 638ae328ea
5 changed files with 42 additions and 7 deletions

View file

@ -2,6 +2,7 @@ import json
import base64 import base64
from core.models import Berichtsheft from core.models import Berichtsheft
from core.report_templates import ReportTemplates
class AzureUser: class AzureUser:
@ -33,3 +34,7 @@ class AzureUser:
def reports(self): def reports(self):
return Berichtsheft.objects.filter(user=self.id) return Berichtsheft.objects.filter(user=self.id)
def get_report_template(self):
# TODO : Implement
return ReportTemplates.get_template("weekly")

5
core/forms.py Executable file
View file

@ -0,0 +1,5 @@
def extract_post_values(post, vars) -> dict:
res = {}
for var in vars:
res[var["name"]] = post.get(var["name"], "")
return res

View file

@ -31,9 +31,7 @@ class Berichtsheft(models.Model):
created = models.DateTimeField(auto_now_add=True) created = models.DateTimeField(auto_now_add=True)
def __str__(self): def __str__(self):
return ( return f"Berichtsheft: {self.user}, Year: {self.year}, Week: {self.week}"
f"Berichtsheft: {self.user.username}, Year: {self.year}, Week: {self.week}"
)
class Approval: class Approval:

View file

@ -37,7 +37,7 @@
value = "{{ user.display_name }}" value = "{{ user.display_name }}"
{% endif %} {% endif %}
> >
</div> </div>
{% endfor %} {% endfor %}

View file

@ -1,5 +1,6 @@
from django.shortcuts import render from django.shortcuts import redirect, render
from core.forms import extract_post_values
from core.report_templates import ReportTemplates from core.report_templates import ReportTemplates
from core.util import get_week_range, next_date from core.util import get_week_range, next_date
from .azure_auth import AzureUser from .azure_auth import AzureUser
@ -10,10 +11,36 @@ import datetime
def write_new_report(request): def write_new_report(request):
if request.method == "POST":
return write_new_report_post(request)
else:
return write_new_report_get(request)
def write_new_report_post(request):
user = AzureUser(request) user = AzureUser(request)
# TODO : Get template for user definition = user.get_report_template()
definition = ReportTemplates.get_template("weekly")
values = extract_post_values(request.POST, definition["vars"])
# TODO : Input Validation
report = Berichtsheft(
user=user.id,
num=int(values.pop("num_doc", "")),
year=int(values.pop("year", "")),
week=int(values.pop("week", "")),
content=values,
)
report.save()
return redirect("/")
def write_new_report_get(request):
user = AzureUser(request)
definition = user.get_report_template()
# Get the latest year and week # Get the latest year and week
latest = user.reports().order_by("-year", "-week").first() latest = user.reports().order_by("-year", "-week").first()