diff --git a/mayan/apps/django_gpg/urls.py b/mayan/apps/django_gpg/urls.py index a2007fcc7b..342f701585 100644 --- a/mayan/apps/django_gpg/urls.py +++ b/mayan/apps/django_gpg/urls.py @@ -1,13 +1,17 @@ +from __future__ import unicode_literals + from django.conf.urls import patterns, url +from .views import PrivateKeyListView, PublicKeyListView + urlpatterns = patterns( 'django_gpg.views', url( r'^delete/(?P.+)/(?P\w+)/$', 'key_delete', name='key_delete' ), - url(r'^list/private/$', 'key_list', {'secret': True}, 'key_private_list'), - url(r'^list/public/$', 'key_list', {'secret': False}, 'key_public_list'), + 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'^receive/(?P.+)/$', 'key_receive', name='key_receive'), ) diff --git a/mayan/apps/django_gpg/views.py b/mayan/apps/django_gpg/views.py index 5eb6e2288e..8afb48fcc7 100644 --- a/mayan/apps/django_gpg/views.py +++ b/mayan/apps/django_gpg/views.py @@ -11,6 +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.utils import encapsulate from permissions import Permission @@ -63,31 +64,38 @@ def key_receive(request, key_id): }, context_instance=RequestContext(request)) -def key_list(request, secret=True): - Permission.check_permissions(request.user, [permission_key_view]) +class PublicKeyListView(SingleObjectListView): + view_permission = permission_key_view - if secret: - object_list = Key.get_all(gpg, secret=True) - title = _('Private keys') - else: - object_list = Key.get_all(gpg) - title = _('Public keys') + def get_extra_context(self): + return { + 'extra_columns': [ + { + 'name': _('Key ID'), + 'attribute': 'key_id', + }, + { + 'name': _('Owner'), + 'attribute': encapsulate(lambda x: ', '.join(x.uids)), + }, + ], + 'hide_object': True, + 'title': self.get_title() + } - return render_to_response('appearance/generic_list.html', { - 'object_list': object_list, - 'title': title, - 'hide_object': True, - 'extra_columns': [ - { - 'name': _('Key ID'), - 'attribute': 'key_id', - }, - { - 'name': _('Owner'), - 'attribute': encapsulate(lambda x: ', '.join(x.uids)), - }, - ] - }, context_instance=RequestContext(request)) + def get_queryset(self): + return Key.get_all(gpg) + + def get_title(self): + return _('Public keys') + + +class PrivateKeyListView(PublicKeyListView): + def get_title(self): + return _('Private keys') + + def get_queryset(self): + return Key.get_all(gpg, secret=True) def key_delete(request, fingerprint, key_type):