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/i18n/ddportfolioservice.pot b/ddportfolioservice/i18n/ddportfolioservice.pot index e8f2999..84b1240 100644 --- a/ddportfolioservice/i18n/ddportfolioservice.pot +++ b/ddportfolioservice/i18n/ddportfolioservice.pot @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: ddportfolioservice 0.1\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2010-06-03 23:32+0200\n" +"POT-Creation-Date: 2010-06-04 00:25+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -191,10 +191,28 @@ msgid "Debian search" msgstr "" #: ddportfolioservice/controllers/ddportfolio.py:104 -msgid "Ubuntu" +msgid "Information reachable via ssh (for DDs)" msgstr "" #: ddportfolioservice/controllers/ddportfolio.py:105 +msgid "owned debian.net domains" +msgstr "" + +#: ddportfolioservice/controllers/ddportfolio.py:106 +msgid "" +"MIA database " +"information" +msgstr "" + +#: ddportfolioservice/controllers/ddportfolio.py:107 +msgid "Group membership information" +msgstr "" + +#: ddportfolioservice/controllers/ddportfolio.py:110 +msgid "Ubuntu" +msgstr "" + +#: ddportfolioservice/controllers/ddportfolio.py:111 msgid "Available patches from Ubuntu" msgstr "" @@ -222,8 +240,8 @@ msgstr "" msgid "Alioth user name" msgstr "" -#: ddportfolioservice/model/urlbuilder.py:86 -#: ddportfolioservice/model/urlbuilder.py:90 +#: ddportfolioservice/model/urlbuilder.py:95 +#: ddportfolioservice/model/urlbuilder.py:99 #, python-format msgid "Missing input: %s" msgstr "" @@ -269,7 +287,7 @@ msgid "Enter your personal information" msgstr "" #: ddportfolioservice/templates/showform.mako:30 -#: ddportfolioservice/templates/showurls.mako:27 +#: ddportfolioservice/templates/showurls.mako:28 msgid "Debian Developer Portfolio" msgstr "" @@ -313,23 +331,23 @@ msgstr "" msgid "Build DD Portfolio URLs" msgstr "" -#: ddportfolioservice/templates/showurls.mako:23 +#: ddportfolioservice/templates/showurls.mako:24 msgid "Your personal links" msgstr "" -#: ddportfolioservice/templates/showurls.mako:30 +#: ddportfolioservice/templates/showurls.mako:31 msgid "Usage" msgstr "" -#: ddportfolioservice/templates/showurls.mako:30 +#: ddportfolioservice/templates/showurls.mako:31 msgid "URL" msgstr "" -#: ddportfolioservice/templates/showurls.mako:40 +#: ddportfolioservice/templates/showurls.mako:41 msgid "Error during URL creation:" msgstr "" -#: ddportfolioservice/templates/showurls.mako:61 +#: ddportfolioservice/templates/showurls.mako:68 msgid "Restart" msgstr "" diff --git a/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.mo b/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.mo index b7c74af..232bdcb 100644 Binary files a/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.mo and b/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.mo differ diff --git a/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.po b/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.po index 6c84365..a6b5083 100644 --- a/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.po +++ b/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.po @@ -9,9 +9,9 @@ msgstr "" "Project-Id-Version: ddportfolioservice 0.1\n" "Report-Msgid-Bugs-To: jan@dittberner.info\n" "POT-Creation-Date: 2009-01-20 23:13+0100\n" -"PO-Revision-Date: 2010-06-03 23:31+0200\n" +"PO-Revision-Date: 2010-06-04 00:27+0200\n" "Last-Translator: Jan Dittberner \n" -"Language-Team: de \n" +"Language-Team: de \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" @@ -203,10 +203,29 @@ msgid "Debian search" msgstr "Debian-Suche" #: ddportfolioservice/controllers/ddportfolio.py:104 +msgid "Information reachable via ssh (for DDs)" +msgstr "Per ssh erreichbare Informationen (für DDs)" + +#: ddportfolioservice/controllers/ddportfolio.py:105 +msgid "owned debian.net domains" +msgstr "Besitz von debian.net-Domains" + +#: ddportfolioservice/controllers/ddportfolio.py:106 +msgid "" +"MIA database" +" information" +msgstr "Informationen in der MIA-Datenbank" + +#: ddportfolioservice/controllers/ddportfolio.py:107 +#| msgid "Enter your personal information" +msgid "Group membership information" +msgstr "Information über Gruppenmitgliedschaften" + +#: ddportfolioservice/controllers/ddportfolio.py:110 msgid "Ubuntu" msgstr "Ubuntu" -#: ddportfolioservice/controllers/ddportfolio.py:105 +#: ddportfolioservice/controllers/ddportfolio.py:111 msgid "Available patches from Ubuntu" msgstr "Verfügbare Patches aus Ubuntu" @@ -234,8 +253,8 @@ msgstr "Nicht-DD E-Mailadresse:" msgid "Alioth user name" msgstr "Alioth-Benutzername" -#: ddportfolioservice/model/urlbuilder.py:86 -#: ddportfolioservice/model/urlbuilder.py:90 +#: ddportfolioservice/model/urlbuilder.py:95 +#: ddportfolioservice/model/urlbuilder.py:99 #, python-format msgid "Missing input: %s" msgstr "Fehlende Eingabe: %s" @@ -293,7 +312,7 @@ msgid "Enter your personal information" msgstr "Eingabe der persönlichen Informationen" #: ddportfolioservice/templates/showform.mako:30 -#: ddportfolioservice/templates/showurls.mako:27 +#: ddportfolioservice/templates/showurls.mako:28 msgid "Debian Developer Portfolio" msgstr "Debian-Entwicklerportfolio" @@ -337,23 +356,23 @@ msgstr "JSON" msgid "Build DD Portfolio URLs" msgstr "Debian-Entwicklerportfolio-URLs bauen" -#: ddportfolioservice/templates/showurls.mako:23 +#: ddportfolioservice/templates/showurls.mako:24 msgid "Your personal links" msgstr "Ihre personalisierten Links" -#: ddportfolioservice/templates/showurls.mako:30 +#: ddportfolioservice/templates/showurls.mako:31 msgid "Usage" msgstr "Verwendung" -#: ddportfolioservice/templates/showurls.mako:30 +#: ddportfolioservice/templates/showurls.mako:31 msgid "URL" msgstr "URL" -#: ddportfolioservice/templates/showurls.mako:40 +#: ddportfolioservice/templates/showurls.mako:41 msgid "Error during URL creation:" msgstr "Fehler bei der URL-Erzeugung:" -#: ddportfolioservice/templates/showurls.mako:61 +#: ddportfolioservice/templates/showurls.mako:68 msgid "Restart" msgstr "Neu beginnen" 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':