2
0
Fork 0

Compare commits

..

3 Commits

Author SHA1 Message Date
Luca 0679a1cc01 fix: include scripts on every page rendered from base template
continuous-integration/drone/push Build is passing Details
2024-05-25 02:13:15 +02:00
Luca 32f87ea9e5 feat(signage): show messages on team dashboard 2024-05-25 02:12:33 +02:00
Luca cbad7abfb7 feat(signage): add date parameter to team dashboard 2024-05-25 02:11:46 +02:00
3 changed files with 28 additions and 9 deletions

View File

@ -140,6 +140,7 @@
</div> </div>
</div> </div>
</footer> </footer>
{% endblock %}
<script> <script>
document.querySelectorAll('.delete').forEach(btn => btn.addEventListener('click', event => event.target.parentElement.remove())); document.querySelectorAll('.delete').forEach(btn => btn.addEventListener('click', event => event.target.parentElement.remove()));
document.querySelectorAll('.navbar-burger').forEach(el => el.addEventListener('click', () => { document.querySelectorAll('.navbar-burger').forEach(el => el.addEventListener('click', () => {
@ -167,6 +168,5 @@
}, false); }, false);
}); });
</script> </script>
{% endblock %}
</body> </body>
</html> </html>

View File

@ -3,6 +3,7 @@
{% block everything %} {% block everything %}
<section class="section"> <section class="section">
<div class="container"> <div class="container">
{% include "notifications.html" %}
<h3 class="title" style="background:var(--background);margin:0 -1rem;padding:1rem;position:sticky;top:0;">Teamschichten für {{ today|date:"l, d. F Y" }}</h3> <h3 class="title" style="background:var(--background);margin:0 -1rem;padding:1rem;position:sticky;top:0;">Teamschichten für {{ today|date:"l, d. F Y" }}</h3>
<table class="table"> <table class="table">
<thead style="background:inherit;position:sticky;top:4rem;"> <thead style="background:inherit;position:sticky;top:4rem;">

View File

@ -1,5 +1,6 @@
from datetime import timedelta import datetime
from django.contrib import messages
from django.db import models from django.db import models
from django.db.models import Case, Count, ExpressionWrapper, F, Q, Sum, When from django.db.models import Case, Count, ExpressionWrapper, F, Q, Sum, When
from django.shortcuts import render from django.shortcuts import render
@ -51,16 +52,31 @@ def public_dashboard(request):
def team_dashboard(request): def team_dashboard(request):
now = timezone.localtime() now = timezone.localtime()
changeover = now.replace(hour=6, minute=0, second=0, microsecond=0)
today = now.date() today = now.date()
if now.hour < changeover.hour: day = None
exclude_past_shifts = True
if date := request.GET.get("date"):
try:
day = datetime.date.fromisoformat(date)
exclude_past_shifts = False
except ValueError:
messages.add_message(request, messages.ERROR, "Ungültiges Datum")
changeover = datetime.datetime.combine(
day or today, datetime.time(hour=6), timezone.get_current_timezone()
)
if day is None and now.hour < changeover.hour:
day_end = changeover day_end = changeover
day_start = day_end - timedelta(days=1) day_start = day_end - datetime.timedelta(days=1)
today = today - timedelta(days=1) day = today - datetime.timedelta(days=1)
else: else:
day_start = changeover day_start = changeover
day_end = day_start + timedelta(days=1) day_end = day_start + datetime.timedelta(days=1)
if day is None:
day = today
team_shifts = ( team_shifts = (
Shift.with_reg_count() Shift.with_reg_count()
@ -78,13 +94,15 @@ def team_dashboard(request):
deleted=False, deleted=False,
start_at__gte=day_start, start_at__gte=day_start,
start_at__lt=day_end, start_at__lt=day_end,
end_at__gt=now,
reg_count__lt=F("real_required_helpers"), reg_count__lt=F("real_required_helpers"),
fallbackassignment_count__gt=0, fallbackassignment_count__gt=0,
) )
.order_by("start_at") .order_by("start_at")
) )
if exclude_past_shifts:
team_shifts = team_shifts.filter(end_at__gt=now)
return render( return render(
request, "team_dashboard.html", {"today": today, "team_shifts": team_shifts} request, "team_dashboard.html", {"today": day, "team_shifts": team_shifts}
) )