def add_key(request): """ Add key. Get data and save it in database. :param request: object, POST (user_salt, ssh_key_pub, ssh_key_privat, description) :return: 'SSHKeyStoreApp/add_key.html', form """ if request.method == 'POST': form = ProfileAddEditForm(request.POST) if form.is_valid(): user_salt = form.cleaned_data['user_salt'] ssh_key_pub = form.cleaned_data['ssh_key_pub'] ssh_key_privat = form.cleaned_data['ssh_key_privat'] description = form.cleaned_data['description'] store = SSHStore() user = User.objects.get(pk=request.user.id) store.user_link = user store.user_salt = user_salt value_pub = signing.dumps((ssh_key_pub,), key=settings.SECRET_KEY, salt=user_salt) store.ssh_key_pub = value_pub if ssh_key_privat: value_private = signing.dumps((ssh_key_privat,), key=settings.SECRET_KEY, salt=user_salt) store.ssh_key_privat = value_private store.description = description store.save() return HttpResponseRedirect(reverse('profile:user')) else: form = ProfileAddEditForm() return render(request, 'SSHKeyStoreApp/add_key.html', {'form': form})
def edit_key(request, code): """ Edit data and save it in database. :param request: object, POST (user_salt, ssh_key_pub, ssh_key_privat, description) :param code: models.SSHStore.id :return: Http404 or redirect to views.profile() or "SSHKeyStoreApp/edit_key.html" with form, code """ data = SSHStore.objects.filter(user_link=request.user.id).filter(id=code).values('user_salt', 'ssh_key_pub', 'ssh_key_privat', 'description') if not data: raise Http404("Key error") if request.method == "POST": form = ProfileAddEditForm(request.POST) if form.is_valid(): user_salt = form.cleaned_data['user_salt'] ssh_key_pub = form.cleaned_data['ssh_key_pub'] ssh_key_privat = form.cleaned_data['ssh_key_privat'] description = form.cleaned_data['description'] value_pub = signing.dumps((ssh_key_pub,), key=settings.SECRET_KEY, salt=user_salt) value_private = signing.dumps((ssh_key_privat,), key=settings.SECRET_KEY, salt=user_salt) store = SSHStore.objects.filter(user_link=request.user.id).filter(id=code)[0] store.user_salt = user_salt store.ssh_key_pub = value_pub store.ssh_key_privat = value_private store.description = description store.save() return HttpResponseRedirect(reverse('profile:user')) else: data = forming_data(data) form = ProfileAddEditForm(data[0]) return render(request, "SSHKeyStoreApp/edit_key.html", {'form': form, 'code': code})