Split key query view into query and results views. Convert key query results view to SingleObjectListView class.
This commit is contained in:
@@ -26,6 +26,6 @@ class DjangoGPGApp(MayanAppConfig):
|
||||
links=(link_public_keys, link_key_query),
|
||||
sources=(
|
||||
'django_gpg:key_delete', 'django_gpg:key_public_list',
|
||||
'django_gpg:key_query'
|
||||
'django_gpg:key_query', 'django_gpg:key_query_results',
|
||||
)
|
||||
)
|
||||
|
||||
@@ -2,7 +2,9 @@ from __future__ import unicode_literals
|
||||
|
||||
from django.conf.urls import patterns, url
|
||||
|
||||
from .views import PrivateKeyListView, PublicKeyListView
|
||||
from .views import (
|
||||
KeyQueryView, KeyQueryResultView, PrivateKeyListView, PublicKeyListView
|
||||
)
|
||||
|
||||
urlpatterns = patterns(
|
||||
'django_gpg.views',
|
||||
@@ -10,8 +12,17 @@ urlpatterns = patterns(
|
||||
r'^delete/(?P<fingerprint>.+)/(?P<key_type>\w+)/$', 'key_delete',
|
||||
name='key_delete'
|
||||
),
|
||||
url(r'^list/private/$', PrivateKeyListView.as_view(), name='key_private_list'),
|
||||
url(r'^list/public/$', PublicKeyListView.as_view(), name='key_public_list'),
|
||||
url(r'^query/$', 'key_query', name='key_query'),
|
||||
url(
|
||||
r'^list/private/$', PrivateKeyListView.as_view(),
|
||||
name='key_private_list'
|
||||
),
|
||||
url(
|
||||
r'^list/public/$', PublicKeyListView.as_view(), name='key_public_list'
|
||||
),
|
||||
url(r'^query/$', KeyQueryView.as_view(), name='key_query'),
|
||||
url(
|
||||
r'^query/results/$', KeyQueryResultView.as_view(),
|
||||
name='key_query_results'
|
||||
),
|
||||
url(r'^receive/(?P<key_id>.+)/$', 'key_receive', name='key_receive'),
|
||||
)
|
||||
|
||||
@@ -11,7 +11,7 @@ from django.shortcuts import redirect, render_to_response
|
||||
from django.template import RequestContext
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from common.generics import SingleObjectListView
|
||||
from common.generics import SimpleView, SingleObjectListView
|
||||
from common.utils import encapsulate
|
||||
from permissions import Permission
|
||||
|
||||
@@ -129,71 +129,74 @@ def key_delete(request, fingerprint, key_type):
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def key_query(request):
|
||||
Permission.check_permissions(request.user, (permission_keyserver_query,))
|
||||
class KeyQueryView(SimpleView):
|
||||
template_name = 'appearance/generic_form.html'
|
||||
view_permission = permission_keyserver_query
|
||||
|
||||
subtemplates_list = []
|
||||
term = request.GET.get('term')
|
||||
def get_form(self):
|
||||
if ('term' in self.request.GET) and self.request.GET['term'].strip():
|
||||
term = self.request.GET['term']
|
||||
return KeySearchForm(initial={'term': term})
|
||||
else:
|
||||
return KeySearchForm()
|
||||
|
||||
form = KeySearchForm(initial={'term': term})
|
||||
subtemplates_list.append(
|
||||
{
|
||||
'name': 'appearance/generic_form_subtemplate.html',
|
||||
'context': {
|
||||
'title': _('Query key server'),
|
||||
'form': form,
|
||||
'submit_method': 'GET',
|
||||
},
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
'form': self.get_form(),
|
||||
'form_action': reverse('django_gpg:key_query_results'),
|
||||
'submit_icon': 'fa fa-search',
|
||||
'submit_label': _('Search'),
|
||||
'submit_method': 'GET',
|
||||
'title': _('Query key server'),
|
||||
}
|
||||
)
|
||||
|
||||
if term:
|
||||
results = gpg.query(term)
|
||||
subtemplates_list.append(
|
||||
{
|
||||
'name': 'appearance/generic_list_subtemplate.html',
|
||||
'context': {
|
||||
'title': _('results'),
|
||||
'object_list': results,
|
||||
'hide_object': True,
|
||||
'extra_columns': [
|
||||
{
|
||||
'name': _('ID'),
|
||||
'attribute': encapsulate(
|
||||
lambda item: '...{0}'.format(item.key_id[-16:])
|
||||
),
|
||||
},
|
||||
{
|
||||
'name': _('Type'),
|
||||
'attribute': 'key_type',
|
||||
},
|
||||
{
|
||||
'name': _('Creation date'),
|
||||
'attribute': encapsulate(
|
||||
lambda x: datetime.fromtimestamp(int(x.date))
|
||||
)
|
||||
},
|
||||
{
|
||||
'name': _('Expiration date'),
|
||||
'attribute': encapsulate(
|
||||
lambda x: datetime.fromtimestamp(int(x.expires)) if x.expires else _('No expiration')
|
||||
)
|
||||
},
|
||||
{
|
||||
'name': _('Length'),
|
||||
'attribute': 'length',
|
||||
},
|
||||
{
|
||||
'name': _('Identities'),
|
||||
'attribute': encapsulate(
|
||||
lambda x: ', '.join(x.uids)
|
||||
),
|
||||
},
|
||||
]
|
||||
|
||||
class KeyQueryResultView(SingleObjectListView):
|
||||
view_permission = permission_keyserver_query
|
||||
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
'title': _('Key query results'),
|
||||
'hide_object': True,
|
||||
'extra_columns': (
|
||||
{
|
||||
'name': _('ID'),
|
||||
'attribute': encapsulate(
|
||||
lambda key: '...{0}'.format(key.key_id[-16:])
|
||||
),
|
||||
},
|
||||
}
|
||||
)
|
||||
{
|
||||
'name': _('Type'),
|
||||
'attribute': 'key_type',
|
||||
},
|
||||
{
|
||||
'name': _('Creation date'),
|
||||
'attribute': encapsulate(
|
||||
lambda key: datetime.fromtimestamp(int(key.date))
|
||||
)
|
||||
},
|
||||
{
|
||||
'name': _('Expiration date'),
|
||||
'attribute': encapsulate(
|
||||
lambda key: datetime.fromtimestamp(int(key.expires)) if key.expires else _('No expiration')
|
||||
)
|
||||
},
|
||||
{
|
||||
'name': _('Length'),
|
||||
'attribute': 'length',
|
||||
},
|
||||
{
|
||||
'name': _('Identities'),
|
||||
'attribute': encapsulate(
|
||||
lambda key: ', '.join(key.uids)
|
||||
),
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
return render_to_response('appearance/generic_form.html', {
|
||||
'subtemplates_list': subtemplates_list,
|
||||
}, context_instance=RequestContext(request))
|
||||
def get_queryset(self):
|
||||
term = self.request.GET.get('term')
|
||||
if term:
|
||||
return gpg.query(term)
|
||||
else:
|
||||
return ()
|
||||
|
||||
Reference in New Issue
Block a user