Newer
Older
template_name = "alsijil/extra_mark/create.html"
success_url = reverse_lazy("extra_marks")
success_message = _("The extra mark has been created.")
class ExtraMarkEditView(PermissionRequiredMixin, AdvancedEditView):
model = ExtraMark
form_class = ExtraMarkForm
permission_required = "alsijil.edit_extramark"
template_name = "alsijil/extra_mark/edit.html"
success_url = reverse_lazy("extra_marks")
success_message = _("The extra mark has been saved.")
class ExtraMarkDeleteView(PermissionRequiredMixin, RevisionMixin, AdvancedDeleteView):
"""Delete view for extra marks."""
permission_required = "alsijil.delete_extramark"
template_name = "core/pages/delete.html"
success_url = reverse_lazy("extra_marks")
success_message = _("The extra mark has been deleted.")
class ExcuseTypeListView(PermissionRequiredMixin, SingleTableView):
"""Table of all excuse types."""
model = ExcuseType
table_class = ExcuseTypeTable
template_name = "alsijil/excuse_type/list.html"
class ExcuseTypeCreateView(PermissionRequiredMixin, AdvancedCreateView):
"""Create view for excuse types."""
model = ExcuseType
form_class = ExcuseTypeForm
permission_required = "alsijil.add_excusetype"
template_name = "alsijil/excuse_type/create.html"
success_url = reverse_lazy("excuse_types")
success_message = _("The excuse type has been created.")
class ExcuseTypeEditView(PermissionRequiredMixin, AdvancedEditView):
"""Edit view for excuse types."""
model = ExcuseType
form_class = ExcuseTypeForm
permission_required = "alsijil.edit_excusetype"
template_name = "alsijil/excuse_type/edit.html"
success_url = reverse_lazy("excuse_types")
success_message = _("The excuse type has been saved.")
class ExcuseTypeDeleteView(PermissionRequiredMixin, RevisionMixin, AdvancedDeleteView):
"""Delete view for excuse types."""
permission_required = "alsijil.delete_excusetype"
template_name = "core/pages/delete.html"
success_url = reverse_lazy("excuse_types")
success_message = _("The excuse type has been deleted.")
class GroupRoleListView(PermissionRequiredMixin, SingleTableView):
"""Table of all group roles."""
model = GroupRole
table_class = GroupRoleTable
permission_required = "alsijil.view_grouproles"
template_name = "alsijil/group_role/list.html"
@method_decorator(never_cache, name="dispatch")
class GroupRoleCreateView(PermissionRequiredMixin, AdvancedCreateView):
"""Create view for group roles."""
model = GroupRole
form_class = GroupRoleForm
permission_required = "alsijil.add_grouprole"
template_name = "alsijil/group_role/create.html"
success_url = reverse_lazy("group_roles")
success_message = _("The group role has been created.")
@method_decorator(never_cache, name="dispatch")
class GroupRoleEditView(PermissionRequiredMixin, AdvancedEditView):
"""Edit view for group roles."""
model = GroupRole
form_class = GroupRoleForm
permission_required = "alsijil.edit_grouprole"
template_name = "alsijil/group_role/edit.html"
success_url = reverse_lazy("group_roles")
success_message = _("The group role has been saved.")
@method_decorator(never_cache, "dispatch")
class GroupRoleDeleteView(PermissionRequiredMixin, RevisionMixin, AdvancedDeleteView):
"""Delete view for group roles."""
model = GroupRole
permission_required = "alsijil.delete_grouprole"
template_name = "core/pages/delete.html"
success_url = reverse_lazy("group_roles")
success_message = _("The group role has been deleted.")
class AssignedGroupRolesView(PermissionRequiredMixin, DetailView):
permission_required = "alsijil.view_assigned_grouproles"
model = Group
template_name = "alsijil/group_role/assigned_list.html"
def get_context_data(self, **kwargs: Any) -> Dict[str, Any]:
context = super().get_context_data()
today = timezone.now().date()
context["today"] = today
self.roles = GroupRole.objects.with_assignments(today, [self.object])
context["roles"] = self.roles
assignments = (
GroupRoleAssignment.objects.filter(
Q(groups=self.object) | Q(groups__child_groups=self.object)
)
.distinct()
.order_by("-date_start")
)
context["assignments"] = assignments
return context
@method_decorator(never_cache, name="dispatch")
class AssignGroupRoleView(PermissionRequiredMixin, SuccessNextMixin, AdvancedCreateView):
model = GroupRoleAssignment
form_class = AssignGroupRoleForm
permission_required = "alsijil.assign_grouprole_for_group"
template_name = "alsijil/group_role/assign.html"
success_message = _("The group role has been assigned.")
def get_success_url(self) -> str:
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
return reverse("assigned_group_roles", args=[self.group.pk])
def get_permission_object(self):
self.group = get_object_or_404(Group, pk=self.kwargs.get("pk"))
try:
self.role = GroupRole.objects.get(pk=self.kwargs.get("role_pk"))
except GroupRole.DoesNotExist:
self.role = None
return self.group
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs["request"] = self.request
kwargs["initial"] = {"role": self.role, "groups": [self.group]}
return kwargs
def get_context_data(self, **kwargs: Any) -> Dict[str, Any]:
context = super().get_context_data(**kwargs)
context["role"] = self.role
context["group"] = self.group
return context
@method_decorator(never_cache, name="dispatch")
class AssignGroupRoleMultipleView(PermissionRequiredMixin, SuccessNextMixin, AdvancedCreateView):
model = GroupRoleAssignment
form_class = AssignGroupRoleForm
permission_required = "alsijil.assign_grouprole_for_multiple"
template_name = "alsijil/group_role/assign.html"
success_message = _("The group role has been assigned.")
def get_success_url(self) -> str:
return reverse("assign_group_role_multiple")
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs["request"] = self.request
return kwargs
@method_decorator(never_cache, name="dispatch")
class GroupRoleAssignmentEditView(PermissionRequiredMixin, SuccessNextMixin, AdvancedEditView):
"""Edit view for group role assignments."""
model = GroupRoleAssignment
form_class = GroupRoleAssignmentEditForm
permission_required = "alsijil.edit_grouproleassignment"
template_name = "alsijil/group_role/edit_assignment.html"
success_message = _("The group role assignment has been saved.")
def get_success_url(self) -> str:
pk = self.object.groups.first().pk
return reverse("assigned_group_roles", args=[pk])
@method_decorator(never_cache, "dispatch")
class GroupRoleAssignmentStopView(PermissionRequiredMixin, SuccessNextMixin, DetailView):
model = GroupRoleAssignment
permission_required = "alsijil.stop_grouproleassignment"
def get_success_url(self) -> str:
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
pk = self.object.groups.first().pk
return reverse("assigned_group_roles", args=[pk])
def get(self, request, *args, **kwargs):
self.object = self.get_object()
if not self.object.date_end:
self.object.date_end = timezone.now().date()
self.object.save()
messages.success(request, _("The group role assignment has been stopped."))
return redirect(self.get_success_url())
@method_decorator(never_cache, "dispatch")
class GroupRoleAssignmentDeleteView(
PermissionRequiredMixin, RevisionMixin, SuccessNextMixin, AdvancedDeleteView
):
"""Delete view for group role assignments."""
model = GroupRoleAssignment
permission_required = "alsijil.delete_grouproleassignment"
template_name = "core/pages/delete.html"
success_message = _("The group role assignment has been deleted.")
def get_success_url(self) -> str:
pk = self.object.groups.first().pk
return reverse("assigned_group_roles", args=[pk])