def add_user_to_sheet(request, slug): sheet = get_object_or_404(Sheet, slug=slug) form_by_username = AddUserForm(request.POST or None) groups = UserAPI.get_groups_and_users_dict().keys() by_username_valid = form_by_username.is_valid() if by_username_valid: users = list() username = form_by_username.cleaned_data['username'] if username: users.append(get_object_or_404(User, username=username)) for group in groups: selected_users_pk = form_by_username.cleaned_data[group] for pk in selected_users_pk: users.append(get_object_or_404(User, pk=pk)) for user in users: if user != request.user: remove_perm('sheets.change_sheet', user, sheet) assign_perm('sheets.view_sheet', user, sheet) if form_by_username.cleaned_data['role'] == 'T': assign_perm('sheets.change_sheet', user, sheet) else: MarkAPI.create_marks_for_student(sheet, user) return redirect('sheet_detail', slug=slug) return render(request, 'add_user_to_sheet.html', { 'form_by_username': form_by_username, 'sheet': sheet })