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/model/ddportfolio.ini b/ddportfolioservice/model/ddportfolio.ini index 5e345e3..2e4b5ae 100644 --- a/ddportfolioservice/model/ddportfolio.ini +++ b/ddportfolioservice/model/ddportfolio.ini @@ -54,6 +54,7 @@ patchtracker.pattern=http://patch-tracker.debian.org/email/%(email)s [upload] urls=keylog keylog.pattern=http://merkel.debian.org/~enrico/keylog/%(gpgfp)s.html +keylog.optional=true [lists] urls=dolists,adolists,gmane @@ -69,13 +70,17 @@ gmane.pattern=http://search.gmane.org/?email=%(name)s&group=gmane.linux.debi [files] urls=people,alioth people.pattern=http://people.debian.org/~%(username)s/ +people.optional=true alioth.pattern=http://alioth.debian.org/~%(aliothusername)s/ +alioth.optional=true [membership] urls=nm,db,alioth,wiki,forum nm.pattern=https://nm.debian.org/nmstatus.php?email=%(nonddemail)s db.pattern=http://db.debian.org/search.cgi?uid=%(username)s&dosearch=Search +db.optional=true alioth.pattern=http://alioth.debian.org/users/%(aliothusername)s/ +alioth.optional=true wiki.pattern=http://wiki.debian.org/%(wikihomepage)s forum.pattern=http://forums.debian.net/memberlist.php?mode=viewprofile&u=%(forumsid)d forum.optional=true @@ -93,12 +98,14 @@ urls=owndndoms,miainfo,groupinfo # owned *.debian.net domains owndndoms.pattern=ssh merkel.debian.org ldapsearch -u -x -H ldap://db.debian.org -b dc=debian,dc=org uid=%(username)s dnsZoneEntry owndndoms.type=ssh +owndndoms.optional=true # MIA information -miainfo.pattern=ssh merkel.debian.org /srv/qa.debian.org/mia/mia-query %(username)s +miainfo.pattern=ssh merkel.debian.org /srv/qa.debian.org/mia/mia-query %(emailnoq)s miainfo.type=ssh # Group information groupinfo.pattern=ssh merkel.debian.org id %(username)s groupinfo.type=ssh +groupinfo.optional=true [ubuntu] urls=ubuntudiff diff --git a/ddportfolioservice/model/urlbuilder.py b/ddportfolioservice/model/urlbuilder.py index 1f63185..1a7ebc3 100644 --- a/ddportfolioservice/model/urlbuilder.py +++ b/ddportfolioservice/model/urlbuilder.py @@ -76,6 +76,7 @@ def build_urls(fields): if fpr: qfields['gpgfp'] = fpr[0] qfields['firstchar'] = fields['email'][0].encode('utf8') + qfields['emailnoq'] = fields['email'].encode('utf8') for section in [section.strip() for section in \ my_config.get('DEFAULT', 'urlbuilder.sections').split(',')]: 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');