Split key query view into query and results views. Convert key query results view to SingleObjectListView class.

This commit is contained in:
Roberto Rosario
2015-08-14 16:08:35 -04:00
parent 4175866ee5
commit 8cc685ede7
3 changed files with 82 additions and 68 deletions

View File

@@ -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',
)
)

View File

@@ -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'),
)

View File

@@ -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 ()