コード例 #1
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})
コード例 #2
0
def pdf_file(request):
    """
    Generate ssh key into pdf
    :param request:
    :return: keys.pdf
    """
    data = SSHStore.objects.filter(user_link=request.user.id).values('user_salt', 'ssh_key_pub',
                                                                     'ssh_key_privat', 'description',
                                                                     'was_added', 'last_changes')
    data = forming_data(data)
    response = create_pdf(data)
    return response
コード例 #3
0
def profile(request):
    """
    User profile page.
    :param request: object
    :return: 'SSHKeyStoreApp/profile.html', contacts (current user SSHKeys)
    """
    data = SSHStore.objects.filter(user_link=request.user.id).values('id', 'user_salt', 'ssh_key_pub',
                                                                     'ssh_key_privat', 'description',
                                                                     'was_added', 'last_changes')
    data = forming_data(data)
    paginator = Paginator(data, 3)
    page = request.GET.get('page')
    try:
        contacts = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        contacts = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        contacts = paginator.page(paginator.num_pages)
    return render(request, 'SSHKeyStoreApp/profile.html', {'contacts': contacts})