def dc_user_modal_form(request): """ Ajax page for updating, removing and adding user. """ qs = request.GET.copy() if request.POST['action'] == 'update': user = get_edited_user(request, request.POST['adm-username']) else: user = None form = AdminUserModalForm(request, user, request.POST, prefix='adm') if form.is_valid(): args = (form.cleaned_data['username'],) status = form.save(args=args) if status == 204: return HttpResponse(None, status=status) elif status in (200, 201): if form.action == 'create': messages.success(request, _('User was successfully created')) return redirect('dc_user_profile', username=form.cleaned_data['username']) else: messages.success(request, _('User profile was successfully updated')) return redirect('dc_user_list', query_string=qs) return render(request, 'gui/dc/user_dc_form.html', {'form': form})
def dc_user_modal_form(request): """ Ajax page for updating, removing and adding user. """ qs = request.GET.copy() if request.POST['action'] == 'update': user = get_edited_user(request, request.POST['adm-username']) else: user = None form = AdminUserModalForm(request, user, request.POST, prefix='adm') if form.is_valid(): args = (form.cleaned_data['username'],) status = form.save(args=args) if status == 204: return HttpResponse(None, status=status) elif status in (200, 201): if form.action == 'create': messages.success(request, _('User was successfully created')) return redirect('dc_user_profile', username=form.cleaned_data['username']) else: messages.success(request, _('User profile was successfully updated')) user = user.__class__.objects.get(pk=user.pk) # Reload user object from DB (modified in API) # You can modify yourself and lose access to /dc - Issue #108 if request.user == user and not user.is_admin(dc=request.dc): redirect_to = '/' else: redirect_to = 'dc_user_list' return redirect(redirect_to, query_string=qs) return render(request, 'gui/dc/user_dc_form.html', {'form': form})
def dc_user_profile_sshkey_modal_form(request, username, action): """ Ajax page for adding or deleting SSH keys. """ user = get_edited_user(request, username) if action == 'add': sform = SSHKeyForm(request, None, request.POST) if sform.is_valid(): status = sform.save(action='create', args=(user.username, sform.cleaned_data['name'])) if status == 201: messages.success(request, _('SSH key was successfully saved')) return redirect('dc_user_profile', user.username) return render(request, 'gui/profile/profile_sshkey_form.html', { 'user': user, 'sform': sform }, status=200) elif action == 'delete': res = SSHKeyForm.api_call('delete', None, request, args=(user.username, request.POST.get('name'))) status = res.status_code if status == 200: messages.success(request, _('SSH key was successfully removed')) return redirect('dc_user_profile', user.username) return render(request, 'gui/profile/profile_sshkey_list.html', { 'user': user, 'ssh_keys': user.usersshkey_set.all().order_by('id') }, status=status)
def dc_user_profile_apikeys(request, username): """ Ajax page for displaying API keys. """ user = get_edited_user(request, username) display = get_boolean_value(request.GET.get('display', False)) return render(request, 'gui/profile/profile_api_keys_list.html', { 'user': user, 'display_keys': display })
def dc_user_profile_form(request, username): """ Ajax page for updating user profile. """ user = get_edited_user(request, username, sr=('dc_bound', 'userprofile')) profile = user.userprofile if request.POST['action'] == 'update': uform = AdminUserForm(request, user, request.POST) upform = AdminUserProfileForm(request, profile, request.POST) if uform.is_valid() and upform.is_valid( ): # The real validation is not happening here but below args = (uform.cleaned_data['username'], ) # The validation happens in these two forms and they inform about the result which we process. # However, if upform save fails, uform is saved already and we cannot do anything about that. # FIXME bad design here and in gui.profile.views.update ustatus = uform.save(action='update', args=args) upstatus = upform.save(action='update', args=args) if (ustatus == 200 and upstatus in (200, 204)) or (upstatus == 200 and ustatus in (200, 204)): messages.success(request, _('User profile was successfully updated')) user = user.__class__.objects.get( pk=user.pk) # Reload user object from DB (modified in API) # You can modify yourself and lose access to /dc - Issue #108 if request.user == user and not user.is_admin(dc=request.dc): redirect_to = '/' else: redirect_to = 'dc_user_list' return redirect(redirect_to) else: uform = AdminUserForm(request, user, init=True) upform = AdminUserProfileForm(request, profile, init=True) context = { 'uform': uform, 'upform': upform, 'user': user, 'profile': profile, 'ssh_keys': user.usersshkey_set.all().order_by('id'), } if not request.user.is_staff: context['disabled_api_key'] = True return render(request, 'gui/dc/profile/profile_page.html', context)
def dc_user_profile_password_modal_form(request, username): """ Ajax page for changing user password. """ user = get_edited_user(request, username) status = 200 pform = AdminChangePasswordForm(user, request.POST) if pform.is_valid(): status = pform.save(request) if status == 200: messages.success(request, _('User password was successfully changed')) return redirect('dc_user_profile', user.username) return render(request, 'gui/dc/profile/profile_password_form.html', { 'user': user, 'pform': pform, }, status=status)
def dc_user_profile(request, username): """ User Profile management. """ user = get_edited_user(request, username, sr=('dc_bound', 'userprofile')) profile = user.userprofile context = collect_view_data(request, 'dc_user_list') context['uform'] = AdminUserForm(request, user, init=True) context['upform'] = AdminUserProfileForm(request, profile, init=True) context['pform'] = AdminChangePasswordForm(user) context['sform'] = SSHKeyForm(request, user) context['user'] = user context['profile'] = profile context['ssh_keys'] = user.usersshkey_set.all().order_by('id') if not request.user.is_staff: context['disabled_api_key'] = True return render(request, 'gui/dc/profile/user_profile.html', context)
def dc_user_profile_form(request, username): """ Ajax page for updating user profile. """ user = get_edited_user(request, username, sr=('dc_bound', 'userprofile')) profile = user.userprofile if request.POST['action'] == 'update': uform = AdminUserForm(request, user, request.POST) upform = AdminUserProfileForm(request, profile, request.POST) if uform.is_valid() and upform.is_valid(): args = (uform.cleaned_data['username'],) ustatus = uform.save(action='update', args=args) upstatus = upform.save(action='update', args=args) if (ustatus == 200 and upstatus in (200, 204)) or (upstatus == 200 and ustatus in (200, 204)): messages.success(request, _('User profile was successfully updated')) return redirect('dc_user_list') else: uform = AdminUserForm(request, user, init=True) upform = AdminUserProfileForm(request, profile, init=True) context = { 'uform': uform, 'upform': upform, 'user': user, 'profile': profile, 'ssh_keys': user.usersshkey_set.all().order_by('id'), } if not request.user.is_staff: context['disabled_api_key'] = True return render(request, 'gui/dc/profile/profile_page.html', context)