def regenerate_sharing_key_view(request, usergroup_id): if not is_usergroup_owner(request.user, usergroup_id): raise PermissionDenied group = get_object_or_404( UserGroup.objects.select_related('sharing_config'), id=usergroup_id) group.sharing_config.key = generate_key() group.sharing_config.save() return redirect('teacher_usergroup_detail', usergroup_id=usergroup_id)
def set_sharing_view(request, usergroup_id, value): if not is_usergroup_owner(request.user, usergroup_id): raise PermissionDenied group = get_object_or_404( UserGroup.objects.select_related('sharing_config'), id=usergroup_id) group.sharing_config.enabled = value group.sharing_config.save() return redirect('teacher_usergroup_detail', usergroup_id=usergroup_id)
def delete_members_view(request, usergroup_id): if not is_usergroup_owner(request.user, usergroup_id): raise PermissionDenied group = get_object_or_404(UserGroup, id=usergroup_id) selected_members = User.objects.filter( id__in=request.POST.getlist('member')) group.members.remove(*list(selected_members)) messages.success(request, _("Deletion of selected members successful!")) return redirect('teacher_usergroup_detail', usergroup_id=usergroup_id)
def attach_to_contest_view(request): usergroup_id = request.POST.get('usergroup_id') if not is_usergroup_owner(request.user, usergroup_id): raise PermissionDenied usergroup = UserGroup.objects.get(id=usergroup_id) if is_usergroup_attached(request.contest, usergroup): messages.info(request, _("The group is already attached to the contest.")) else: usergroup.contests.add(request.contest) messages.info(request, _("The group was successfully attached to the contest!")) return redirect('show_members', contest_id=request.contest.id, member_type='pupil')
def delete_owners_view(request, usergroup_id): if not is_usergroup_owner(request.user, usergroup_id): raise PermissionDenied group = get_object_or_404(UserGroup, id=usergroup_id) selected_owners = User.objects.filter(id__in=request.POST.getlist('owner')) if selected_owners.filter(id=request.user.id).exists(): messages.error( request, _("You cannot renounce ownership. " "Consider deleting group instead.")) else: group.owners.remove(*list(selected_owners)) messages.success(request, _("Deletion of selected owners successful!")) return redirect('teacher_usergroup_detail', usergroup_id=usergroup_id)
def dispatch(self, request, *args, **kwargs): if not is_usergroup_owner(self.request.user, self.kwargs['usergroup_id']): raise PermissionDenied return super(GroupsDeleteView, self).dispatch(request, *args, **kwargs)