Skip to content
Snippets Groups Projects
Verified Commit ccd49962 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Show group roles in lesson view

parent 6b054c9c
No related branches found
No related tags found
1 merge request!131Resolve "Add support for assinging group roles"
Pipeline #5656 passed
...@@ -246,6 +246,8 @@ add_perm("alsijil.delete_grouprole", delete_group_role_predicate) ...@@ -246,6 +246,8 @@ add_perm("alsijil.delete_grouprole", delete_group_role_predicate)
view_assigned_group_roles_predicate = group_roles_activated_predicate & ( view_assigned_group_roles_predicate = group_roles_activated_predicate & (
is_group_owner is_group_owner
| is_lesson_teacher
| is_lesson_parent_group_owner
| has_global_perm("alsjil.assign_grouprole") | has_global_perm("alsjil.assign_grouprole")
| has_object_perm("alsijil.assign_grouprole") | has_object_perm("alsijil.assign_grouprole")
) )
......
...@@ -111,6 +111,11 @@ ...@@ -111,6 +111,11 @@
<a href="#previous-lesson">{% trans "Previous lesson" %}</a> <a href="#previous-lesson">{% trans "Previous lesson" %}</a>
</li> </li>
{% endif %} {% endif %}
{% if group_roles %}
<li class="tab">
<a href="#group-roles">{% trans "Group roles" %}</a>
</li>
{% endif %}
<li class="tab"> <li class="tab">
<a href="#version-history">{% trans "Change history" %}</a> <a href="#version-history">{% trans "Change history" %}</a>
</li> </li>
...@@ -257,7 +262,13 @@ ...@@ -257,7 +262,13 @@
{% if can_edit_lesson_personalnote %} {% if can_edit_lesson_personalnote %}
<tr> <tr>
{{ form.id }} {{ form.id }}
<td>{{ form.person_name }}{{ form.person_name.value }}</td> <td>{{ form.person_name }}{{ form.person_name.value }}
<p>
{% for assignment in form.instance.person.group_roles.all %}
{% include "alsijil/group_role/chip.html" with role=assignment.role %}
{% endfor %}
</p>
</td>
<td class="center-align"> <td class="center-align">
<label> <label>
{{ form.absent }} {{ form.absent }}
...@@ -310,7 +321,13 @@ ...@@ -310,7 +321,13 @@
</tr> </tr>
{% else %} {% else %}
<tr> <tr>
<td>{{ form.person_name.value }}</td> <td>{{ form.person_name.value }}
<p>
{% for assignment in form.instance.person.group_roles.all %}
{% include "alsijil/group_role/chip.html" with role=assignment.role %}
{% endfor %}
</p>
</td>
<td><i class="material-icons center">{{ form.absent.value|yesno:"check,clear" }}</i></td> <td><i class="material-icons center">{{ form.absent.value|yesno:"check,clear" }}</i></td>
<td> <td>
<i class="material-icons center">{{ form.late.value|yesno:"check,clear" }}</i> <i class="material-icons center">{{ form.late.value|yesno:"check,clear" }}</i>
...@@ -338,6 +355,12 @@ ...@@ -338,6 +355,12 @@
</div> </div>
{% endif %} {% endif %}
{% if group_roles %}
<div class="col s12" id="group-roles">
{% include "alsijil/group_role/partials/assigned_roles.html" with roles=group_roles group=lesson_period.lesson.groups.first back_url=back_url %}
</div>
{% endif %}
{% if can_view_lesson_documentation %} {% if can_view_lesson_documentation %}
<div class="col s12" id="version-history"> <div class="col s12" id="version-history">
<div class="card"> <div class="card">
......
...@@ -117,6 +117,11 @@ def lesson( ...@@ -117,6 +117,11 @@ def lesson(
context["blocked_because_holidays"] = blocked_because_holidays context["blocked_because_holidays"] = blocked_because_holidays
context["holiday"] = holiday context["holiday"] = holiday
back_url = reverse(
"lesson_by_week_and_period", args=[wanted_week.year, wanted_week.week, lesson_period.pk]
)
context["back_url"] = back_url
next_lesson = request.user.person.next_lesson(lesson_period, date_of_lesson) next_lesson = request.user.person.next_lesson(lesson_period, date_of_lesson)
prev_lesson = request.user.person.previous_lesson(lesson_period, date_of_lesson) prev_lesson = request.user.person.previous_lesson(lesson_period, date_of_lesson)
...@@ -129,6 +134,14 @@ def lesson( ...@@ -129,6 +134,14 @@ def lesson(
context["next_lesson"] = lesson_period.next context["next_lesson"] = lesson_period.next
if not blocked_because_holidays: if not blocked_because_holidays:
# Group roles
show_group_roles = request.user.person.preferences[
"alsijil__group_roles_in_lesson_view"
] and request.user.has_perm("alsijil.view_assigned_grouproles", lesson_period)
if show_group_roles:
groups = lesson_period.lesson.groups.all()
group_roles = GroupRole.objects.with_assignments(date_of_lesson, groups)
context["group_roles"] = group_roles
# Create or get lesson documentation object; can be empty when first opening lesson # Create or get lesson documentation object; can be empty when first opening lesson
lesson_documentation = lesson_period.get_or_create_lesson_documentation(wanted_week) lesson_documentation = lesson_period.get_or_create_lesson_documentation(wanted_week)
...@@ -143,6 +156,16 @@ def lesson( ...@@ -143,6 +156,16 @@ def lesson(
persons = Person.objects.all() persons = Person.objects.all()
persons_qs = lesson_period.get_personal_notes(persons, wanted_week) persons_qs = lesson_period.get_personal_notes(persons, wanted_week)
# Annotate group roles
if show_group_roles:
persons_qs = persons_qs.prefetch_related(
Prefetch(
"person__group_roles",
queryset=GroupRoleAssignment.objects.on_day(date_of_lesson).for_groups(groups),
),
)
personal_note_formset = PersonalNoteFormSet( personal_note_formset = PersonalNoteFormSet(
request.POST or None, queryset=persons_qs, prefix="personal_notes" request.POST or None, queryset=persons_qs, prefix="personal_notes"
) )
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment