diff --git a/ddportfolioservice/controllers/ddportfolio.py b/ddportfolioservice/controllers/ddportfolio.py index 8f6c0ff..dcc582b 100644 --- a/ddportfolioservice/controllers/ddportfolio.py +++ b/ddportfolioservice/controllers/ddportfolio.py @@ -144,12 +144,19 @@ developer name on all bug logs)'), return render('/showform.mako') fields = dddatabuilder.build_data(form_result['email']) rp = request.params.copy() - if fields['isdd']: - for tuple in (('name', 'name'), - ('gpgfp', 'gpgfp'), - ('username', 'username'), - ('aliothusername', 'username'), - ('nonddemail', 'email')): + + DM_TUPLES = (('name', 'name'), + ('gpgfp', 'gpgfp'), + ('nonddemail', 'email')) + DD_TUPLES = (('username', 'username'), + ('aliothusername', 'username')) + + if fields['type'] in (dddatabuilder.TYPE_DD, dddatabuilder.TYPE_DM): + for tuple in DM_TUPLES: + if not tuple[0] in rp or not rp[tuple[0]]: + rp[tuple[0]] = fields[tuple[1]] + if fields['type'] == dddatabuilder.TYPE_DD: + for tuple in DD_TUPLES: if not tuple[0] in rp or not rp[tuple[0]]: rp[tuple[0]] = fields[tuple[1]] diff --git a/ddportfolioservice/model/dddatabuilder.py b/ddportfolioservice/model/dddatabuilder.py index 455ad35..4128a5f 100644 --- a/ddportfolioservice/model/dddatabuilder.py +++ b/ddportfolioservice/model/dddatabuilder.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # DDPortfolio service DD data builder -# Copyright (c) 2009 Jan Dittberner +# Copyright © 2009, 2010 Jan Dittberner # # This file is part of DDPortfolio service. # @@ -20,8 +20,14 @@ # License along with this program. If not, see # . # +"""This file contains code to build a representation of a person based +on keyring data associated to a given email address.""" from ddportfolioservice.model import keyfinder +TYPE_NO = 0 +TYPE_DM = 1 +TYPE_DD = 2 + def build_data(email_address): """Build a DD data structure from a given email address.""" @@ -32,7 +38,9 @@ def build_data(email_address): ('username', keyfinder.getLoginByEmail)]]) fields['email'] = email_address if fields['username'] and fields['gpgfp'] and fields['name']: - fields['isdd'] = 1 + fields['type'] = TYPE_DD + elif fields['name'] and fields['gpgfp']: + fields['type'] = TYPE_DM else: - fields['isdd'] = 0 + fields['type'] = TYPE_NO return fields diff --git a/ddportfolioservice/templates/showformscript.mako b/ddportfolioservice/templates/showformscript.mako index b951a78..93a85bc 100644 --- a/ddportfolioservice/templates/showformscript.mako +++ b/ddportfolioservice/templates/showformscript.mako @@ -1,7 +1,7 @@ ## -*- coding: utf-8 -*- <%doc> Helper JavaScript for the data input form. -Copyright (c) 2009 Jan Dittberner +Copyright © 2009, 2010 Jan Dittberner This file is part of DDPortfolio service. @@ -21,7 +21,7 @@ License along with this program. If not, see function updateFields(data, textStatus) { - if (data.isdd == 1) { + if (data.type == 2) { // DD $('#name').attr('value', data.name).attr('readonly', 'readonly'); $('#gpgfp').attr('value', data.gpgfp); $('#username').attr('value', data.username).attr( @@ -36,6 +36,19 @@ function updateFields(data, textStatus) { $('#aliothusernamefield').show(); $('#nonddemail').focus().select(); + } else if (data.type == 1) { // DM + $('#name').attr('value', data.name).attr('readonly', 'readonly'); + $('#gpgfp').attr('value', data.gpgfp); + $('#username').attr('value', ''); + $('#nonddemail').attr('value', data.email).focus(); + + $('#namefield').show(); + $('#gpgfpfield').show(); + $('#usernamefield').hide(); + $('#nonddemailfield').hide(); + $('#aliothusernamefield').show(); + + $('#aliothusername').focus().select(); } else { $('#nonddemail').attr('value', data.email); $('#name').removeAttr('readonly');