From 2aec4f8f980794656d7e4a50f29d88838e7fde09 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Fri, 4 Jun 2010 00:24:15 +0200 Subject: [PATCH] add support for non-url information * add ssh commands for MIA information, owned debian.net domains and group membership * add support for specifying type of pattern --- ChangeLog | 2 + ddportfolioservice/controllers/ddportfolio.py | 10 ++++- ddportfolioservice/model/ddportfolio.ini | 18 ++++---- ddportfolioservice/model/urlbuilder.py | 43 +++++++++++-------- ddportfolioservice/templates/showurls.mako | 11 ++++- 5 files changed, 55 insertions(+), 29 deletions(-) diff --git a/ChangeLog b/ChangeLog index 58bea88..6a28e79 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,3 +3,5 @@ * add support for extra parameters forumsid and wikihomepage * add new patterns wiki and forum to section membership * update copyright information + * add support for non-URL type information + * add ssh commands for MIA, owned debian.net-Domains and group membership diff --git a/ddportfolioservice/controllers/ddportfolio.py b/ddportfolioservice/controllers/ddportfolio.py index a84d3a0..8f6c0ff 100644 --- a/ddportfolioservice/controllers/ddportfolio.py +++ b/ddportfolioservice/controllers/ddportfolio.py @@ -100,6 +100,12 @@ developer name on all bug logs)'), 'website' : N_('Debian website'), 'search' : N_('Debian search'), }, + 'ssh' : { + 'label' : N_('Information reachable via ssh (for DDs)'), + 'owndndoms' : N_('owned debian.net domains'), + 'miainfo' : N_('MIA database information'), + 'groupinfo' : N_('Group membership information'), + }, 'ubuntu' : { 'label' : N_('Ubuntu'), 'ubuntudiff' : N_('Available patches from Ubuntu'), @@ -165,11 +171,11 @@ developer name on all bug logs)'), response.headers['Content-Type'] = 'text/javascript' return simplejson.dumps( dict([("%s.%s" % \ - (entry[1], entry[2]), entry[3]) \ + (entry[1], entry[2].name), entry[3]) \ for entry in data if entry[0] == 'url'])) for entry in data: if entry[0] in ('url', 'error'): - entry.append(_(self._get_label(entry[1], entry[2]))) + entry.append(_(self._get_label(entry[1], entry[2].name))) elif entry[0] == 'section': entry.append(_(self._get_label(entry[1]))) c.urldata = data diff --git a/ddportfolioservice/model/ddportfolio.ini b/ddportfolioservice/model/ddportfolio.ini index d4af662..5e345e3 100644 --- a/ddportfolioservice/model/ddportfolio.ini +++ b/ddportfolioservice/model/ddportfolio.ini @@ -21,7 +21,7 @@ [DEFAULT] keyring.dir=~/debian/keyring.debian.org/keyrings urlbuilder.sections=overview,bugs,build,qa,upload,lists,files,membership, - miscellaneous,ubuntu + miscellaneous,ssh,ubuntu [overview] urls=ddpo,alladdresses @@ -86,17 +86,19 @@ debtags.pattern=http://debtags.alioth.debian.org/todo.html?maint=%(email)s links.pattern=http://www.google.com/search?hl=en&lr=&q=site%%3Adebian.org+%%22%(name)s%%22+-site%%3Anm.debian.org+-site%%3Alintian.debian.org+-site%%3Abugs.debian.org+-site%%3Alists.debian.org+-site%%3Apackages.debian.org+-site%%3Alists.alioth.debian.org+-site%%3Aftp.debian.org++-site%%3Apackages.qa.debian.org++-site%%3Aftp*.*.debian.org+-inurl%%3Adebian.org%%2Fdevel%%2Fpeople.+-inurl%%3Aindices%%2FMaintainers+-inurl%%3Adebian.org%%2Fdebian%%2Fproject++-inurl%%3A%%2Fdists%%2F&btnG=Search website.pattern=http://www.google.com/search?q=site:www.debian.org+%(name)s search.pattern=http://search.debian.org/?q=%%22%(name)s%%22 + +[ssh] # SSH functions -# +urls=owndndoms,miainfo,groupinfo # owned *.debian.net domains -# ssh merkel.debian.org ldapsearch -u -x -H ldap://db.debian.org -b dc=debian,dc=org \ -# uid=%(username)s dnsZoneEntry -# +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 # MIA information -# 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 %(username)s +miainfo.type=ssh # Group information -# ssh merkel.debian.org id %(username)s +groupinfo.pattern=ssh merkel.debian.org id %(username)s +groupinfo.type=ssh [ubuntu] urls=ubuntudiff diff --git a/ddportfolioservice/model/urlbuilder.py b/ddportfolioservice/model/urlbuilder.py index 4c398b1..1f63185 100644 --- a/ddportfolioservice/model/urlbuilder.py +++ b/ddportfolioservice/model/urlbuilder.py @@ -46,6 +46,17 @@ _FIELDNAMES_MAP = { } +class DDPortfolioEntry(object): + def __init__(self, config, section, key): + self.name = key + self.optional = config.has_option(section, key + '.optional') and \ + config.getboolean(section, key + '.optional') or False + if config.has_option(section, key + '.type'): + self.type = config.get(section, key + '.type') + else: + self.type = 'url' + + def build_urls(fields): """Build personalized URLs using the developer information in fields.""" @@ -70,22 +81,20 @@ def build_urls(fields): 'urlbuilder.sections').split(',')]: data.append(['section', section]) if my_config.has_option(section, 'urls'): - for url in my_config.get(section, 'urls').split(','): - if my_config.has_option(section, url + '.pattern'): - optional = my_config.has_option(section, url + '.optional') \ - and my_config.getboolean(section, url + '.optional') or False - try: - data.append( - ['url', section, url, - my_config.get(section, url + '.pattern', + for entry in ([DDPortfolioEntry(my_config, section, url) for url in \ + my_config.get(section, 'urls').split(',')]): + try: + data.append( + ['url', section, entry, + my_config.get(section, entry.name + '.pattern', False, qfields)]) - except InterpolationMissingOptionError, e: - if not optional: - if e.reference in _FIELDNAMES_MAP: - data.append(['error', section, url, - _('Missing input: %s') % \ - _(_FIELDNAMES_MAP[e.reference])]) - else: - data.append(['error', section, url, - _('Missing input: %s') % e.reference]) + except InterpolationMissingOptionError, e: + if not entry.optional: + if e.reference in _FIELDNAMES_MAP: + data.append(['error', section, entry, + _('Missing input: %s') % \ + _(_FIELDNAMES_MAP[e.reference])]) + else: + data.append(['error', section, entry, + _('Missing input: %s') % e.reference]) return data diff --git a/ddportfolioservice/templates/showurls.mako b/ddportfolioservice/templates/showurls.mako index 29f7f3a..2ececca 100644 --- a/ddportfolioservice/templates/showurls.mako +++ b/ddportfolioservice/templates/showurls.mako @@ -1,7 +1,8 @@ +## -*- coding: utf-8 -*- \ <%inherit file="base.mako" /> <%doc> Template for the url output page. -Copyright (c) 2009 Jan Dittberner +Copyright © 2009, 2010 Jan Dittberner This file is part of DDPortfolio service. @@ -44,7 +45,13 @@ License along with this program. If not, see % else: ${h.textile(row[4])} - ${h.link_to(h.truncate(row[3], length=120), row[3])} + + % if row[2].type == 'url': + ${h.link_to(h.truncate(row[3], length=120), row[3])} + % else: + ${row[3]} + % endif + <% if urlclass == 'odd':