[PATCH] Parse, display and store gpg key ids.
Serafeim Zanikolas
serzan at hellug.gr
Tue Feb 3 00:56:26 CET 2009
---
debexpo/controllers/my.py | 6 ++++--
debexpo/lib/validators.py | 12 ++++++++++++
debexpo/model/users.py | 1 +
3 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/debexpo/controllers/my.py b/debexpo/controllers/my.py
index 32953b5..eea715f 100644
--- a/debexpo/controllers/my.py
+++ b/debexpo/controllers/my.py
@@ -41,6 +41,7 @@ import md5
from debexpo.lib.base import *
from debexpo.lib import constants, form
from debexpo.lib.schemas import DetailsForm, GpgForm, PasswordForm, OtherDetailsForm
+from debexpo.lib.utils import parse_key_id
from debexpo.model import meta
from debexpo.model.users import User
@@ -92,11 +93,13 @@ class MyController(BaseController):
if self.form_result['delete_gpg'] and self.user.gpg is not None:
log.debug('Deleting current GPG key')
self.user.gpg = None
+ self.user.gpg_id = None
# Should the key be updated.
if 'gpg' in self.form_result and self.form_result['gpg'] is not None:
log.debug('Setting a new GPG key')
self.user.gpg = self.form_result['gpg'].value
+ self.user.gpg_id = parse_key_id(self.user.gpg)
meta.session.commit()
@@ -207,8 +210,7 @@ class MyController(BaseController):
# Enable the form to show information on the user's GPG key.
if self.user.gpg is not None:
- # TODO: Make this display the right key ID.
- c.currentgpg = '0xXXXXXX'
+ c.currentgpg = c.user.gpg_id
log.debug('Rendering page')
return render('/my/index.mako')
diff --git a/debexpo/lib/validators.py b/debexpo/lib/validators.py
index e13bbfc..7c191ad 100644
--- a/debexpo/lib/validators.py
+++ b/debexpo/lib/validators.py
@@ -40,6 +40,7 @@ import logging
import md5
from debexpo.lib.base import *
+from debexpo.lib.utils import parse_key_id
from debexpo.model import meta
from debexpo.model.users import User
@@ -52,6 +53,9 @@ class GpgKey(formencode.validators.FieldStorageUploadConverter):
text.
"""
+ def __init__(self):
+ self.gpg_id = None
+
def _to_python(self, value, c):
"""
Validate the GPG key.
@@ -65,8 +69,16 @@ class GpgKey(formencode.validators.FieldStorageUploadConverter):
log.error('GPG key does not start with BEGIN PGP PUBLIC KEY BLOCK')
raise formencode.Invalid(_('Invalid GPG key'), value, c)
+ self.gpg_id = parse_key_id(value.value)
+ if self.gpg_id is None:
+ log.error("Failed to parse GPG key")
+ raise formencode.Invalid(_('Invalid GPG key'), value, c)
+
return formencode.validators.FieldStorageUploadConverter._to_python(self, value, c)
+ def key_id(self):
+ return self.gpg_id
+
class CurrentPassword(formencode.validators.String):
"""
Validator for a current password depending on the session's user_id.
diff --git a/debexpo/model/users.py b/debexpo/model/users.py
index a141300..c87df58 100644
--- a/debexpo/model/users.py
+++ b/debexpo/model/users.py
@@ -47,6 +47,7 @@ t_users = sa.Table('users', meta.metadata,
sa.Column('name', sa.types.String(200), nullable=False),
sa.Column('email', sa.types.String(200), nullable=False),
sa.Column('gpg', sa.types.Text, nullable=True),
+ sa.Column('gpg_id', sa.types.String(30), nullable=True),
sa.Column('password', sa.types.String(200), nullable=False),
sa.Column('lastlogin', sa.types.DateTime, nullable=False),
sa.Column('type', sa.types.Integer, nullable=False, default=USER_TYPE_NORMAL),
--
1.5.6.5
--LwW0XdcUbUexiWVK--
More information about the debexpo-devel
mailing list