Remove python-hkp dependency. Closes gh-issue #170

This commit is contained in:
Roberto Rosario
2015-06-02 01:40:37 -04:00
parent 8176326a16
commit 97e884ae23
5 changed files with 37 additions and 47 deletions

View File

@@ -9,7 +9,6 @@ try:
except ImportError:
from StringIO import StringIO
from hkp import KeyServer
import gnupg
from django.utils.translation import ugettext_lazy as _
@@ -20,6 +19,16 @@ from .literals import KEY_TYPES
logger = logging.getLogger(__name__)
class KeyStub(object):
def __init__(self, raw):
self.key_id = raw['keyid']
self.key_type = raw['type']
self.date = raw['date']
self.expires = raw['expires']
self.length = raw['length']
self.uids = raw['uids']
class Key(object):
@staticmethod
def get_key_id(fingerprint):
@@ -268,14 +277,8 @@ class GPG(object):
def query(self, term):
results = {}
for keyserver in self.keyservers:
url = 'http://%s' % keyserver
server = KeyServer(url)
try:
key_list = server.search(term)
for key in key_list:
results[key.keyid] = key
except:
pass
for key_data in self.gpg.search_keys(query=term, keyserver=keyserver):
results[key_data['keyid']] = KeyStub(raw=key_data)
return results.values()

View File

@@ -3,11 +3,9 @@ from __future__ import unicode_literals
from django import apps
from django.utils.translation import ugettext_lazy as _
from hkp import Key as KeyServerKey
from common import menu_object, menu_setup, menu_sidebar
from .api import Key
from .api import Key, KeyStub
from .links import (
link_key_delete, link_key_query, link_key_receive, link_key_setup,
link_public_keys
@@ -20,6 +18,6 @@ class DjangoGPGApp(apps.AppConfig):
def ready(self):
menu_object.bind_links(links=[link_key_delete], sources=[Key])
menu_object.bind_links(links=[link_key_receive], sources=[KeyServerKey])
menu_object.bind_links(links=[link_key_receive], sources=[KeyStub])
menu_setup.bind_links(links=[link_key_setup])
menu_sidebar.bind_links(links=[link_public_keys, link_key_query], sources=['django_gpg:key_delete', 'django_gpg:key_public_list', 'django_gpg:key_query'])

View File

@@ -13,5 +13,5 @@ link_private_keys = Link(icon='fa fa-key', permissions=[PERMISSION_KEY_VIEW], te
link_public_keys = Link(icon='fa fa-key', permissions=[PERMISSION_KEY_VIEW], text=_('Public keys'), view='django_gpg:key_public_list')
link_key_delete = Link(permissions=[PERMISSION_KEY_DELETE], text=_('Delete'), view='django_gpg:key_delete', args=['object.fingerprint', 'object.type'])
link_key_query = Link(text=_('Query keyservers'), view='django_gpg:key_query', permissions=[PERMISSION_KEYSERVER_QUERY])
link_key_receive = Link(keep_query=True, permissions=[PERMISSION_KEY_RECEIVE], text=_('Import'), view='django_gpg:key_receive', args='object.keyid')
link_key_receive = Link(keep_query=True, permissions=[PERMISSION_KEY_RECEIVE], text=_('Import'), view='django_gpg:key_receive', args='object.key_id')
link_key_setup = Link(icon='fa fa-key', permissions=[PERMISSION_KEY_VIEW], text=_('Key management'), view='django_gpg:key_public_list')

View File

@@ -1,12 +1,13 @@
from __future__ import absolute_import, unicode_literals
from datetime import datetime
import logging
from django.conf import settings
from django.contrib import messages
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
from django.shortcuts import redirect, render_to_response
from django.template import RequestContext
from django.utils.translation import ugettext_lazy as _
@@ -28,33 +29,35 @@ logger = logging.getLogger(__name__)
def key_receive(request, key_id):
Permission.objects.check_permissions(request.user, [PERMISSION_KEY_RECEIVE])
post_action_redirect = None
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL))))
next = request.POST.get('next', request.GET.get('next', post_action_redirect if post_action_redirect else request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL))))
if request.method == 'POST':
try:
term = request.GET.get('term')
results = gpg.query(term)
keys_dict = dict([(key.keyid, key) for key in results])
key = gpg.import_key(keys_dict[key_id].key)
messages.success(request, _('Key: %s, imported successfully.') % key)
return HttpResponseRedirect(next)
except (KeyImportError, KeyError, TypeError) as exception:
gpg.receive_key(key_id=key_id)
except Exception as exception:
messages.error(
request,
_('Unable to import key id: %(key_id)s; %(error)s') %
_('Unable to import key: %(key_id)s; %(error)s') %
{
'key_id': key_id,
'error': exception,
}
)
return HttpResponseRedirect(previous)
else:
messages.success(
request,
_('Successfully received key: %(key_id)s') %
{
'key_id': key_id,
}
)
return redirect('django_gpg:key_public_list')
return render_to_response('appearance/generic_confirm.html', {
'title': _('Import key'),
'message': _('Are you sure you wish to import key id: %s?') % key_id,
'next': next,
'previous': previous,
'submit_method': 'GET',
@@ -146,40 +149,27 @@ def key_query(request):
'extra_columns': [
{
'name': _('ID'),
'attribute': 'keyid',
'attribute': 'key_id',
},
{
'name': _('Type'),
'attribute': 'algo',
'attribute': 'key_type',
},
{
'name': _('Creation date'),
'attribute': 'creation_date',
},
{
'name': _('Disabled'),
'attribute': 'disabled',
'attribute': encapsulate(lambda x: datetime.fromtimestamp(int(x.date)))
},
{
'name': _('Expiration date'),
'attribute': 'expiration_date',
},
{
'name': _('Expired'),
'attribute': 'expired',
'attribute': encapsulate(lambda x: datetime.fromtimestamp(int(x.expires)) if x.expires else _('No expiration'))
},
{
'name': _('Length'),
'attribute': 'key_length',
'attribute': 'length',
},
{
'name': _('Revoked'),
'attribute': 'revoked',
},
{
'name': _('Identifies'),
'attribute': encapsulate(lambda x: ', '.join([identity.uid for identity in x.identities])),
'name': _('Identities'),
'attribute': encapsulate(lambda x: ', '.join(x.uids)),
},
]
},

View File

@@ -25,7 +25,6 @@ pycountry==1.10
python-dateutil==2.4.2
pytz==2015.4
python-gnupg==0.3.7
python-hkp==0.1.3
python-magic==0.4.6
sh==1.11