2
0
Fork 0

integrate team backup more closely into team views

This commit is contained in:
Andreas (@xAndy) Zimmermann 2022-05-21 11:14:32 +02:00
parent 9aeee34e7c
commit e18101e85a
4 changed files with 47 additions and 3 deletions

View File

@ -6,5 +6,6 @@ app_name = "signage"
urlpatterns = [ urlpatterns = [
path("team/worklist", views.worklist, name="worklist"), path("team/worklist", views.worklist, name="worklist"),
path("team/worklist/add/<int:shiftid>", views.add_teammember, name="work_add"), path("team/worklist/add/<int:shiftid>", views.add_teammember, name="work_add"),
path("team/worklist/remove/<int:pk>", views.remove_teammember, name="work_remove"),
path("team/terminal", views.terminal, name="terminal"), path("team/terminal", views.terminal, name="terminal"),
] ]

View File

@ -46,8 +46,17 @@ def add_teammember(request, shiftid):
shift = get_object_or_404(Shift, pk=shiftid) shift = get_object_or_404(Shift, pk=shiftid)
o = TeamBackup(shift=shift, name=form.cleaned_data["name"]) o = TeamBackup(shift=shift, name=form.cleaned_data["name"])
o.save() o.save()
p = request.GET.get("redir", None)
if p:
return redirect(p)
return redirect("signage:worklist") return redirect("signage:worklist")
@login_required
def remove_teammember(request, pk):
obj = get_object_or_404(TeamBackup, pk=pk)
sid = obj.shift.pk
obj.delete()
return redirect("team:shift", sid)
def terminal(request): def terminal(request):
help_wanted = Q(required_helpers__gt=F("reg_count")) | Q(required_helpers=0) & Q( help_wanted = Q(required_helpers__gt=F("reg_count")) | Q(required_helpers=0) & Q(

View File

@ -8,9 +8,6 @@
<em>{{ shift.description|linebreaksbr }}</em> <em>{{ shift.description|linebreaksbr }}</em>
</div> </div>
{% endif %} {% endif %}
{% if shift.teambackup_set.all.count %}<br>
<strong>Backup Teammitglied(er): {%for member in shift.teambackup_set.all%}{{member.name}}, {%endfor%}</strong>
{% endif %}
{% if shift.shiftregistration_set.all %} {% if shift.shiftregistration_set.all %}
<h5 class="subtitle">Helfer*innen</h5> <h5 class="subtitle">Helfer*innen</h5>
<div class="columns is-multiline"> <div class="columns is-multiline">
@ -60,4 +57,38 @@
{% endfor %} {% endfor %}
<button class="button is-link" type="submit">Hinzufügen</button> <button class="button is-link" type="submit">Hinzufügen</button>
</form> </form>
<hr>
{% if shift.teambackup_set.all.count %}<br>
<strong>Backup Teammitglied(er):</strong>
<ul>
{%for member in shift.teambackup_set.all%}
<li>{{member.name}} <a class="button is-danger is-small" href="{%url 'signage:work_remove' member.pk%}">entfernen</a></li>
{%endfor%}
</ul>
{% endif %}
<form action="{%url 'signage:work_add' shift.pk%}?redir={{request.path}}" method="post">
{% csrf_token %}
{% for field in backup_form%}
<div class="field">
{% if field.widget_type == 'checkbox' %}
<div class="control">
<label class="checkbox" for="{{ field.id_for_label }}">{{ field }} {{ field.label }}</label>
</div>
{% else %}
<label class="label" for="{{ field.id_for_label }}">{{ field.label }}</label>
<div class="control">
{{ field }}
</div>
{% endif %}
{% for error in field.errors %}
<p class="help is-danger">{{ error }}</p>
{% endfor %}
{% if field.help_text %}
<p class="help">{{ field.help_text }}</p>
{% endif %}
</div>
{% endfor %}
<button class="button is-link" type="submit">Team hinzufuegen</button>
</form>
</div>
{% endblock %} {% endblock %}

View File

@ -70,9 +70,12 @@ def shift_detail(request, pk):
"Helfer ist bereits für diese Schicht angemeldet", "Helfer ist bereits für diese Schicht angemeldet",
) )
return redirect("team:shift", pk=shift.pk) return redirect("team:shift", pk=shift.pk)
# break potential cyclic imports
from shiftregister.signage.forms import TeamBackupForm
context = { context = {
"shift": shift, "shift": shift,
"add_helper_form": form, "add_helper_form": form,
"backup_form": TeamBackupForm(),
} }
return render(request, "shift_detail.html", context) return render(request, "shift_detail.html", context)