Esempio n. 1
0
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})
Esempio n. 2
0
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})