From 5d86ee1032cf173f1afcefada70dd4c872a5b663 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Thu, 29 Jan 2009 01:32:05 +0100 Subject: [PATCH 001/332] fix Google search URL --- ddportfolioservice/model/ddportfolio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ddportfolioservice/model/ddportfolio.ini b/ddportfolioservice/model/ddportfolio.ini index bf0e1c9..3c16d61 100644 --- a/ddportfolioservice/model/ddportfolio.ini +++ b/ddportfolioservice/model/ddportfolio.ini @@ -74,4 +74,4 @@ alioth.pattern=http://alioth.debian.org/users/%(aliothusername)s/ [miscellaneous] urls=debtags,links 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 +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 From 049848d66050ce1d547361031cfa4157f47d2f8e Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Thu, 29 Jan 2009 15:45:55 +0100 Subject: [PATCH 002/332] allow PGP keys with shorter fingerprint --- ddportfolioservice/model/form.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ddportfolioservice/model/form.py b/ddportfolioservice/model/form.py index b097c45..ecd0a03 100644 --- a/ddportfolioservice/model/form.py +++ b/ddportfolioservice/model/form.py @@ -29,7 +29,7 @@ class DeveloperData(formencode.Schema): email = formencode.validators.Email(not_empty=True) name = formencode.validators.String(not_empty=True) gpgfp = formencode.All(formencode.validators.PlainText(), - formencode.validators.MinLength(40), + formencode.validators.MinLength(32), formencode.validators.MaxLength(40)) username = formencode.validators.PlainText() nonddemail = formencode.validators.Email() From 9234d81ed7de4313d34ef39266f07c68516209f0 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Tue, 10 Feb 2009 21:15:04 +0100 Subject: [PATCH 003/332] fix XSS vulnerability reported by Moritz Naumann --- ddportfolioservice/lib/helpers.py | 1 + ddportfolioservice/templates/showform.mako | 42 ++++++++++++---------- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/ddportfolioservice/lib/helpers.py b/ddportfolioservice/lib/helpers.py index 79d12f4..bf113c2 100644 --- a/ddportfolioservice/lib/helpers.py +++ b/ddportfolioservice/lib/helpers.py @@ -27,6 +27,7 @@ available to Controllers. This module is available to both as 'h'. """ from webhelpers import * from webhelpers.html.tags import * +from webhelpers.html.builder import escape from webhelpers.text import * from webhelpers.textile import * from routes.util import * diff --git a/ddportfolioservice/templates/showform.mako b/ddportfolioservice/templates/showform.mako index a520ae1..0458394 100644 --- a/ddportfolioservice/templates/showform.mako +++ b/ddportfolioservice/templates/showform.mako @@ -36,10 +36,11 @@ ${h.form(h.url_for(action='urllist'), method='get')}
- ${h.text('email', request.params.get('email', None), id='email')}
+ ${h.text('email', + h.escape(request.params.get('email', None), True), id='email')}
${_('Name:')} % if 'name' in c.messages['errors']:
- ${c.messages['errors']['name']} + ${c.messages['errors']['name'] | h} % endif
- ${h.text('name', request.params.get('name', None), id='name')}
+ ${h.text('name', + h.escape(request.params.get('name', None)), id='name')}
${_('Debian user name:')} % if 'username' in c.messages['errors']:
- ${c.messages['errors']['username']} + ${c.messages['errors']['username'] | h} % endif
- ${h.text('username', request.params.get('username', None), - id='username')}
+ ${h.text('username', + h.escape(request.params.get('username', None)), + id='username')}
-
${c.messages['errors']['aliothusername']} + class="errormsg">${c.messages['errors']['aliothusername'] | h} % endif
- ${h.text('aliothusername', request.params.get('username', None), - id='aliothusername')}
+ ${h.text('aliothusername', + h.escape(request.params.get('username', None)), + id='aliothusername')}

${_('HTML')} ${h.radio('mode', 'html', From 2b0b098d1d810cd0030f5d12f7daaef0890050d3 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Tue, 17 Feb 2009 19:05:01 +0100 Subject: [PATCH 004/332] fix rendering of git repository URL --- .gitignore | 3 ++ .../i18n/ddportfolioservice.pot | 25 ++++++++------- .../i18n/de/LC_MESSAGES/ddportfolioservice.mo | Bin 5665 -> 5527 bytes .../i18n/de/LC_MESSAGES/ddportfolioservice.po | 30 +++++++++--------- ddportfolioservice/model/.gitignore | 1 + ddportfolioservice/public/.gitignore | 1 + ddportfolioservice/templates/base.mako | 2 +- 7 files changed, 34 insertions(+), 28 deletions(-) create mode 100644 .gitignore create mode 100644 ddportfolioservice/model/.gitignore create mode 100644 ddportfolioservice/public/.gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..51f1148 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +data/ +*.pyc +*.egg-info/ diff --git a/ddportfolioservice/i18n/ddportfolioservice.pot b/ddportfolioservice/i18n/ddportfolioservice.pot index e570fb5..6f4338f 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: 2009-01-23 18:07+0100\n" +"POT-Creation-Date: 2009-02-17 19:01+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -213,13 +213,14 @@ msgid "AGPL - Free Software" msgstr "" #: ddportfolioservice/templates/base.mako:42 +#, python-format msgid "" "The service is available under the terms of the GNU Affero General Public " "License as published by the Free Software Foundation, either version 3 of" " the License, or (at your option) any later version. You can download" -" the source code using git." +"href=\"%s\">download the source code using git." msgstr "" #: ddportfolioservice/templates/base.mako:43 @@ -239,39 +240,39 @@ msgstr "" msgid "Email address:" msgstr "" -#: ddportfolioservice/templates/showform.mako:49 +#: ddportfolioservice/templates/showform.mako:50 msgid "Name:" msgstr "" -#: ddportfolioservice/templates/showform.mako:58 +#: ddportfolioservice/templates/showform.mako:60 msgid "GPG fingerprint:" msgstr "" -#: ddportfolioservice/templates/showform.mako:72 +#: ddportfolioservice/templates/showform.mako:75 msgid "Debian user name:" msgstr "" -#: ddportfolioservice/templates/showform.mako:86 +#: ddportfolioservice/templates/showform.mako:90 msgid "Non DD email address:" msgstr "" -#: ddportfolioservice/templates/showform.mako:100 +#: ddportfolioservice/templates/showform.mako:105 msgid "Alioth user name:" msgstr "" -#: ddportfolioservice/templates/showform.mako:111 +#: ddportfolioservice/templates/showform.mako:117 msgid "Output format:" msgstr "" -#: ddportfolioservice/templates/showform.mako:117 +#: ddportfolioservice/templates/showform.mako:123 msgid "HTML" msgstr "" -#: ddportfolioservice/templates/showform.mako:119 +#: ddportfolioservice/templates/showform.mako:125 msgid "JSON" msgstr "" -#: ddportfolioservice/templates/showform.mako:121 +#: ddportfolioservice/templates/showform.mako:127 msgid "Build DD Portfolio URLs" msgstr "" diff --git a/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.mo b/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.mo index c2512eee7dd30586a48759ed30fd08a3995db2e2..a9a3778a8e1b96f6f0c5723540eea78b687faca1 100644 GIT binary patch delta 751 zcmXZaPbdU&6u|MfJFH#%2jgGS%GNFi+H!D^MD2n6J0MCaHWG(z#g?R|)6P*=1sr%d+*I;n|GT|rXALpL&RSs;>8)ah#?{i z9uXI&unlFrh6!Iqzejx>aa zj53N`cZM^vcsk|Ic+__D&G-Ww C>qmzG delta 888 zcmb`_ze`(D6u|ML(Q1tGXRBZLiuz-9d#TR!-+Ho7nDH$xpLnnTUCWT+1kN6v^d4yA_4J@J-zKjns z?Zkhg7PRlRMe11`5vap!%*Llhch9w0#d9y#;4nVJ&)9?Ckh|py^`aZpi%RH*R8o(G zV&@7EJ|6-Vi~St4sJSbp(ffvO|*wPnO~?Eoud|fje71DwKG?VNF}%HTqwe;8!}zNz{WMQQ!3p4qysb@DFMuOH}n7 z*D!!*sGT\n" "Language-Team: de \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" @@ -230,22 +230,22 @@ msgid "AGPL - Free Software" msgstr "AGPL - Freie Software" #: ddportfolioservice/templates/base.mako:42 +#, python-format msgid "" "The service is available under the terms of the GNU Affero General Public " "License as published by the Free Software Foundation, either version " "3 of the License, or (at your option) any later version. You can download" -" the source code using git." +"href=\"%s\">download the source code using git." msgstr "" "Dieser Dienst wird unter den Bedingungen der GNU Affero General Public " "License, so wie sie von der Free Software Foundation veröffentlicht " "ist, bereitgestellt. Sie können entweder Version 3 oder (auf Ihren Wunsch" " hin) jede spätere Version der Lizenz verwenden. Sie können sich mittels " -"git den" -" Quelltext herunterladen." +"git den Quelltext " +"herunterladen." #: ddportfolioservice/templates/base.mako:43 msgid "Copyright © 2009 Jan Dittberner" @@ -264,39 +264,39 @@ msgstr "Debian-Entwicklerportfolio" msgid "Email address:" msgstr "E-Mailadresse:" -#: ddportfolioservice/templates/showform.mako:49 +#: ddportfolioservice/templates/showform.mako:50 msgid "Name:" msgstr "Name:" -#: ddportfolioservice/templates/showform.mako:58 +#: ddportfolioservice/templates/showform.mako:60 msgid "GPG fingerprint:" msgstr "GPG-Fingerabdruck:" -#: ddportfolioservice/templates/showform.mako:72 +#: ddportfolioservice/templates/showform.mako:75 msgid "Debian user name:" msgstr "Debian-Benutzername:" -#: ddportfolioservice/templates/showform.mako:86 +#: ddportfolioservice/templates/showform.mako:90 msgid "Non DD email address:" msgstr "Nicht-DD-E-Mailadresse" -#: ddportfolioservice/templates/showform.mako:100 +#: ddportfolioservice/templates/showform.mako:105 msgid "Alioth user name:" msgstr "Alioth-Benutzername:" -#: ddportfolioservice/templates/showform.mako:111 +#: ddportfolioservice/templates/showform.mako:117 msgid "Output format:" msgstr "Ausgabeformat:" -#: ddportfolioservice/templates/showform.mako:117 +#: ddportfolioservice/templates/showform.mako:123 msgid "HTML" msgstr "HTML" -#: ddportfolioservice/templates/showform.mako:119 +#: ddportfolioservice/templates/showform.mako:125 msgid "JSON" msgstr "JSON" -#: ddportfolioservice/templates/showform.mako:121 +#: ddportfolioservice/templates/showform.mako:127 msgid "Build DD Portfolio URLs" msgstr "Debian-Entwicklerportfolio-URLs bauen" diff --git a/ddportfolioservice/model/.gitignore b/ddportfolioservice/model/.gitignore new file mode 100644 index 0000000..bb8a9be --- /dev/null +++ b/ddportfolioservice/model/.gitignore @@ -0,0 +1 @@ +keyringcache diff --git a/ddportfolioservice/public/.gitignore b/ddportfolioservice/public/.gitignore new file mode 100644 index 0000000..a059bb7 --- /dev/null +++ b/ddportfolioservice/public/.gitignore @@ -0,0 +1 @@ +javascript diff --git a/ddportfolioservice/templates/base.mako b/ddportfolioservice/templates/base.mako index 26a9d12..6c48112 100644 --- a/ddportfolioservice/templates/base.mako +++ b/ddportfolioservice/templates/base.mako @@ -39,7 +39,7 @@ License along with this program. If not, see From 6d9b5b85c83430e51e88b4affc4955913f427408 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Tue, 17 Feb 2009 23:30:03 +0100 Subject: [PATCH 005/332] pre-fill fields if enough necessary information is given - the email address is enough information for DDs - default to JSON mode - use text/javascript content type for JSON response in ddportfolio controller --- ddportfolioservice/controllers/ddportfolio.py | 31 +++++++++++++-- .../controllers/showformscripts.py | 15 +------- ddportfolioservice/model/dddatabuilder.py | 38 +++++++++++++++++++ ddportfolioservice/model/form.py | 3 +- ddportfolioservice/model/keyfinder.py | 2 +- 5 files changed, 70 insertions(+), 19 deletions(-) create mode 100644 ddportfolioservice/model/dddatabuilder.py diff --git a/ddportfolioservice/controllers/ddportfolio.py b/ddportfolioservice/controllers/ddportfolio.py index d578f18..0c1e7f6 100644 --- a/ddportfolioservice/controllers/ddportfolio.py +++ b/ddportfolioservice/controllers/ddportfolio.py @@ -26,6 +26,7 @@ import simplejson from ddportfolioservice.lib.base import * from ddportfolioservice.model.form import * from ddportfolioservice.model.urlbuilder import * +from ddportfolioservice.model import dddatabuilder log = logging.getLogger(__name__) @@ -115,7 +116,7 @@ developer name on all bug logs)'), def urllist(self): """Handle the actual data.""" - schema = DeveloperData() + schema = DDDataRequest() try: formencode.api.set_stdtranslation( domain="FormEncode", @@ -124,9 +125,31 @@ developer name on all bug logs)'), except formencode.validators.Invalid, error: c.messages = { 'errors' : error.unpack_errors() } return render('/showform.mako') - data = build_urls(form_result) - if 'mode' in request.params and request.params['mode'] == 'json': - response.headers['Content-Type'] = 'text/json' + 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')): + if not tuple[0] in rp or not rp[tuple[0]]: + rp[tuple[0]] = fields[tuple[1]] + if not 'mode' in rp or not rp['mode']: + rp['mode'] = 'json' + + schema = DeveloperData() + try: + formencode.api.set_stdtranslation( + domain="FormEncode", + languages=[lang[0:2] for lang in request.languages]) + form_result = schema.to_python(rp) + except formencode.validators.Invalid, error: + c.messages = { 'errors' : error.unpack_errors() } + return render('/showform.mako') + data = build_urls(rp) + if 'mode' in rp and rp['mode'] == 'json': + response.headers['Content-Type'] = 'text/javascript' return simplejson.dumps( dict([("%s.%s" % \ (entry[1], entry[2]), entry[3]) \ diff --git a/ddportfolioservice/controllers/showformscripts.py b/ddportfolioservice/controllers/showformscripts.py index 72a0aeb..22f80e9 100644 --- a/ddportfolioservice/controllers/showformscripts.py +++ b/ddportfolioservice/controllers/showformscripts.py @@ -25,8 +25,7 @@ import simplejson from ddportfolioservice.lib.base import * from ddportfolioservice.model.form import * -from ddportfolioservice.model import keyfinder -from webob.exc import HTTPBadRequest +from ddportfolioservice.model import dddatabuilder log = logging.getLogger(__name__) @@ -53,17 +52,7 @@ class ShowformscriptsController(BaseController): errors = error.unpack_errors() abort(400, "\n".join( ["%s: %s" % (key, errors[key]) for key in errors])) - - fields = dict([(field, func(str(form_result['email']))) \ - for (field, func) in \ - [('gpgfp', keyfinder.getFingerprintByEmail), - ('name', keyfinder.getRealnameByEmail), - ('username', keyfinder.getLoginByEmail)]]) - fields['email'] = form_result['email'] - if fields['username'] and fields['gpgfp'] and fields['name']: - fields['isdd'] = 1 - else: - fields['isdd'] = 0 + fields = dddatabuilder.build_data(form_result['email']) log.debug(fields) response.headers['Content-Type'] = 'text/plain' return simplejson.dumps(fields) diff --git a/ddportfolioservice/model/dddatabuilder.py b/ddportfolioservice/model/dddatabuilder.py new file mode 100644 index 0000000..455ad35 --- /dev/null +++ b/ddportfolioservice/model/dddatabuilder.py @@ -0,0 +1,38 @@ +# -*- python -*- +# -*- coding: utf-8 -*- +# +# DDPortfolio service DD data builder +# Copyright (c) 2009 Jan Dittberner +# +# This file is part of DDPortfolio service. +# +# DDPortfolio service is free software: you can redistribute it and/or +# modify it under the terms of the GNU Affero General Public License +# as published by the Free Software Foundation, either version 3 of +# the License, or (at your option) any later version. +# +# DDPortfolio service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty +# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public +# License along with this program. If not, see +# . +# +from ddportfolioservice.model import keyfinder + + +def build_data(email_address): + """Build a DD data structure from a given email address.""" + fields = dict([(field, func(str(email_address))) \ + for (field, func) in \ + [('gpgfp', keyfinder.getFingerprintByEmail), + ('name', keyfinder.getRealnameByEmail), + ('username', keyfinder.getLoginByEmail)]]) + fields['email'] = email_address + if fields['username'] and fields['gpgfp'] and fields['name']: + fields['isdd'] = 1 + else: + fields['isdd'] = 0 + return fields diff --git a/ddportfolioservice/model/form.py b/ddportfolioservice/model/form.py index ecd0a03..b88640c 100644 --- a/ddportfolioservice/model/form.py +++ b/ddportfolioservice/model/form.py @@ -38,5 +38,6 @@ class DeveloperData(formencode.Schema): class DDDataRequest(formencode.Schema): """Validation schema for DDData request.""" - allow_extra_fields = False + allow_extra_fields = True + filter_extra_fields = False email = formencode.validators.Email(not_empty=True) diff --git a/ddportfolioservice/model/keyfinder.py b/ddportfolioservice/model/keyfinder.py index f70566c..59318e1 100644 --- a/ddportfolioservice/model/keyfinder.py +++ b/ddportfolioservice/model/keyfinder.py @@ -42,7 +42,7 @@ def _get_keyring_cache(): def _get_cached(cachekey): cache = _get_keyring_cache() if cachekey in cache: - return cache[cachekey].split(':') + return cache[cachekey] return None def getFingerprintByEmail(email): From b90fee99fa1702c3a3f54703e81947cd8f6f1508 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Wed, 18 Feb 2009 09:28:37 +0100 Subject: [PATCH 006/332] switch to html as default output format --- ddportfolioservice/controllers/ddportfolio.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ddportfolioservice/controllers/ddportfolio.py b/ddportfolioservice/controllers/ddportfolio.py index 0c1e7f6..3bb712d 100644 --- a/ddportfolioservice/controllers/ddportfolio.py +++ b/ddportfolioservice/controllers/ddportfolio.py @@ -136,7 +136,7 @@ developer name on all bug logs)'), if not tuple[0] in rp or not rp[tuple[0]]: rp[tuple[0]] = fields[tuple[1]] if not 'mode' in rp or not rp['mode']: - rp['mode'] = 'json' + rp['mode'] = 'html' schema = DeveloperData() try: From 358e2083ffe936a57c4330ddf12dfbcad4ba2997 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Fri, 14 Aug 2009 21:52:45 +0200 Subject: [PATCH 007/332] add correspondent query for bugs --- ddportfolioservice/model/ddportfolio.ini | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ddportfolioservice/model/ddportfolio.ini b/ddportfolioservice/model/ddportfolio.ini index 3c16d61..5a38bf8 100644 --- a/ddportfolioservice/model/ddportfolio.ini +++ b/ddportfolioservice/model/ddportfolio.ini @@ -29,13 +29,14 @@ ddpo.pattern=http://qa.debian.org/developer.php?login=%(email)s alladdresses.pattern=http://qa.debian.org/developer.php?login=%(name)s [bugs] -urls=received,reported,bugstats,usertags,searchall,wnpp +urls=received,reported,bugstats,usertags,searchall,wnpp,correspondent received.pattern=http://bugs.debian.org/%(email)s reported.pattern=http://bugs.debian.org/from:%(email)s bugstats.pattern=http://asdfasdf.debian.net/~tar/bugstats/?%(email)s usertags.pattern=http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=%(email)s searchall.pattern=http://merkel.debian.org/~don/cgi/search.cgi?phrase=%(name)s&search=search wnpp.pattern=http://qa.debian.org/developer.php?wnpp=%(email)s +correspondent.pattern=http://bugs.debian.org/cgi-bin/pkgreport.cgi?correspondent=%(email)s [build] urls=buildd,igloo,svnbuildstat From 43fa4658475f26400429fa7c4850d2dcf1a80327 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Fri, 14 Aug 2009 22:04:24 +0200 Subject: [PATCH 008/332] added translation for bugs.correspondent --- ddportfolioservice/controllers/ddportfolio.py | 1 + .../i18n/ddportfolioservice.pot | 78 ++++++++++--------- .../i18n/de/LC_MESSAGES/ddportfolioservice.po | 78 ++++++++++--------- 3 files changed, 83 insertions(+), 74 deletions(-) diff --git a/ddportfolioservice/controllers/ddportfolio.py b/ddportfolioservice/controllers/ddportfolio.py index 3bb712d..4844a1a 100644 --- a/ddportfolioservice/controllers/ddportfolio.py +++ b/ddportfolioservice/controllers/ddportfolio.py @@ -50,6 +50,7 @@ bug=430986">#430986)'''), 'searchall' : N_('all messages (i.e., full text search for \ developer name on all bug logs)'), 'wnpp' : N_('WNPP'), + 'correspondent' : N_('correspondent for bugs'), }, 'build' : { 'label' : N_('Build'), diff --git a/ddportfolioservice/i18n/ddportfolioservice.pot b/ddportfolioservice/i18n/ddportfolioservice.pot index 6f4338f..86a7941 100644 --- a/ddportfolioservice/i18n/ddportfolioservice.pot +++ b/ddportfolioservice/i18n/ddportfolioservice.pot @@ -9,156 +9,160 @@ msgid "" msgstr "" "Project-Id-Version: ddportfolioservice 0.1\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2009-02-17 19:01+0100\n" +"POT-Creation-Date: 2009-08-14 22:02+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 0.9.1\n" +"Generated-By: Babel 0.9.4\n" -#: ddportfolioservice/controllers/ddportfolio.py:35 +#: ddportfolioservice/controllers/ddportfolio.py:36 msgid "Overview" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:36 +#: ddportfolioservice/controllers/ddportfolio.py:37 msgid "Debian Developer's Package Overview" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:37 +#: ddportfolioservice/controllers/ddportfolio.py:38 msgid "" "Debian Developer's Package Overview\n" "... showing all email addresses" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:41 +#: ddportfolioservice/controllers/ddportfolio.py:42 msgid "Bugs" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:42 +#: ddportfolioservice/controllers/ddportfolio.py:43 msgid "" "bugs received\n" "(note: co-maintainers not listed, see #430986)" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:46 +#: ddportfolioservice/controllers/ddportfolio.py:47 msgid "bugs reported" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:47 +#: ddportfolioservice/controllers/ddportfolio.py:48 msgid "bugstats AKA karma" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:48 +#: ddportfolioservice/controllers/ddportfolio.py:49 msgid "user tags" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:49 +#: ddportfolioservice/controllers/ddportfolio.py:50 msgid "all messages (i.e., full text search for developer name on all bug logs)" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:51 +#: ddportfolioservice/controllers/ddportfolio.py:52 msgid "WNPP" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:54 +#: ddportfolioservice/controllers/ddportfolio.py:53 +msgid "correspondent for bugs" +msgstr "" + +#: ddportfolioservice/controllers/ddportfolio.py:56 msgid "Build" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:55 +#: ddportfolioservice/controllers/ddportfolio.py:57 msgid "buildd.d.o (note: co-maintainers not listed)" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:57 +#: ddportfolioservice/controllers/ddportfolio.py:59 msgid "igloo" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:58 +#: ddportfolioservice/controllers/ddportfolio.py:60 msgid "svnbuildstat" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:61 +#: ddportfolioservice/controllers/ddportfolio.py:63 msgid "Quality Assurance" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:62 +#: ddportfolioservice/controllers/ddportfolio.py:64 msgid "lintian reports" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:63 +#: ddportfolioservice/controllers/ddportfolio.py:65 msgid "full lintian reports (i.e. including \"info\"-level messages)" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:65 +#: ddportfolioservice/controllers/ddportfolio.py:67 msgid "DEHS (Debian External Health Status)" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:68 +#: ddportfolioservice/controllers/ddportfolio.py:70 msgid "Upload" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:69 +#: ddportfolioservice/controllers/ddportfolio.py:71 msgid "" "keylog (per-key upload list)\n" "(note: uses key fingerprint)" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:73 +#: ddportfolioservice/controllers/ddportfolio.py:75 msgid "Mailing Lists" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:74 +#: ddportfolioservice/controllers/ddportfolio.py:76 msgid "lists.d.o" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:75 +#: ddportfolioservice/controllers/ddportfolio.py:77 msgid "lists.a.d.o" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:76 +#: ddportfolioservice/controllers/ddportfolio.py:78 msgid "gmane" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:79 +#: ddportfolioservice/controllers/ddportfolio.py:81 msgid "Files" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:80 +#: ddportfolioservice/controllers/ddportfolio.py:82 msgid "people.d.o" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:81 +#: ddportfolioservice/controllers/ddportfolio.py:83 msgid "oldpeople" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:82 -#: ddportfolioservice/controllers/ddportfolio.py:88 +#: ddportfolioservice/controllers/ddportfolio.py:84 +#: ddportfolioservice/controllers/ddportfolio.py:90 msgid "Alioth" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:85 +#: ddportfolioservice/controllers/ddportfolio.py:87 msgid "Membership" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:86 +#: ddportfolioservice/controllers/ddportfolio.py:88 msgid "NM" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:87 +#: ddportfolioservice/controllers/ddportfolio.py:89 msgid "DB" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:91 +#: ddportfolioservice/controllers/ddportfolio.py:93 msgid "Miscellaneous" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:92 +#: ddportfolioservice/controllers/ddportfolio.py:94 msgid "debtags" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:93 +#: ddportfolioservice/controllers/ddportfolio.py:95 msgid "links" msgstr "" diff --git a/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.po b/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.po index 19db880..09696b1 100644 --- a/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.po +++ b/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.po @@ -9,24 +9,24 @@ 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: 2009-02-17 19:01+0100\n" +"PO-Revision-Date: 2009-08-14 22:03+0200\n" "Last-Translator: Jan Dittberner \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" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 0.9.1\n" +"Generated-By: Babel 0.9.4\n" -#: ddportfolioservice/controllers/ddportfolio.py:35 +#: ddportfolioservice/controllers/ddportfolio.py:36 msgid "Overview" msgstr "Überblick" -#: ddportfolioservice/controllers/ddportfolio.py:36 +#: ddportfolioservice/controllers/ddportfolio.py:37 msgid "Debian Developer's Package Overview" msgstr "Paketübersicht des Debian-Entwicklers" -#: ddportfolioservice/controllers/ddportfolio.py:37 +#: ddportfolioservice/controllers/ddportfolio.py:38 msgid "" "Debian Developer's Package Overview\n" "... showing all email addresses" @@ -34,11 +34,11 @@ msgstr "" "Paketübersicht des Debian-Entwicklers\n" "... mit allen E-Mailadressen" -#: ddportfolioservice/controllers/ddportfolio.py:41 +#: ddportfolioservice/controllers/ddportfolio.py:42 msgid "Bugs" msgstr "Fehler" -#: ddportfolioservice/controllers/ddportfolio.py:42 +#: ddportfolioservice/controllers/ddportfolio.py:43 msgid "" "bugs received\n" "(note: co-maintainers not listed, see #430986)" -#: ddportfolioservice/controllers/ddportfolio.py:46 +#: ddportfolioservice/controllers/ddportfolio.py:47 msgid "bugs reported" msgstr "Berichtete Fehler" -#: ddportfolioservice/controllers/ddportfolio.py:47 +#: ddportfolioservice/controllers/ddportfolio.py:48 msgid "bugstats AKA karma" msgstr "Fehlerstatistiken auch bekannt als Karma" -#: ddportfolioservice/controllers/ddportfolio.py:48 +#: ddportfolioservice/controllers/ddportfolio.py:49 msgid "user tags" msgstr "User Tags" -#: ddportfolioservice/controllers/ddportfolio.py:49 +#: ddportfolioservice/controllers/ddportfolio.py:50 msgid "all messages (i.e., full text search for developer name on all bug logs)" msgstr "" "Alle Nachrichten (d.h. Volltextsuche nach dem Entwicklernamen in allen " "Fehlerlogs)" -#: ddportfolioservice/controllers/ddportfolio.py:51 +#: ddportfolioservice/controllers/ddportfolio.py:52 msgid "WNPP" msgstr "WNPP" -#: ddportfolioservice/controllers/ddportfolio.py:54 +#: ddportfolioservice/controllers/ddportfolio.py:53 +msgid "correspondent for bugs" +msgstr "Beitragender zu Fehlern" + +#: ddportfolioservice/controllers/ddportfolio.py:56 msgid "Build" msgstr "Build" -#: ddportfolioservice/controllers/ddportfolio.py:55 +#: ddportfolioservice/controllers/ddportfolio.py:57 msgid "buildd.d.o (note: co-maintainers not listed)" msgstr "buildd.d.o (Anmerkung: Co-Maintainer werden nicht aufgeführt)" -#: ddportfolioservice/controllers/ddportfolio.py:57 +#: ddportfolioservice/controllers/ddportfolio.py:59 msgid "igloo" msgstr "Igloo" -#: ddportfolioservice/controllers/ddportfolio.py:58 +#: ddportfolioservice/controllers/ddportfolio.py:60 msgid "svnbuildstat" msgstr "SVN-Buildstat" -#: ddportfolioservice/controllers/ddportfolio.py:61 +#: ddportfolioservice/controllers/ddportfolio.py:63 msgid "Quality Assurance" msgstr "Qualitätssicherung" -#: ddportfolioservice/controllers/ddportfolio.py:62 +#: ddportfolioservice/controllers/ddportfolio.py:64 msgid "lintian reports" msgstr "Lintian-Berichte" -#: ddportfolioservice/controllers/ddportfolio.py:63 +#: ddportfolioservice/controllers/ddportfolio.py:65 msgid "full lintian reports (i.e. including \"info\"-level messages)" msgstr "" "vollständige Lintian-Berichte (d.h. inklusive Meldungen der Stufe " "\"info\")" -#: ddportfolioservice/controllers/ddportfolio.py:65 +#: ddportfolioservice/controllers/ddportfolio.py:67 msgid "DEHS (Debian External Health Status)" msgstr "DEHS (Debian External Health Status)" -#: ddportfolioservice/controllers/ddportfolio.py:68 +#: ddportfolioservice/controllers/ddportfolio.py:70 msgid "Upload" msgstr "Upload" -#: ddportfolioservice/controllers/ddportfolio.py:69 +#: ddportfolioservice/controllers/ddportfolio.py:71 msgid "" "keylog (per-key upload list)\n" "(note: uses key fingerprint)" @@ -117,60 +121,60 @@ msgstr "" "Keylog\n" "(Anmerkung: verwendet den Fingerabdruck des Schlüssels)" -#: ddportfolioservice/controllers/ddportfolio.py:73 +#: ddportfolioservice/controllers/ddportfolio.py:75 msgid "Mailing Lists" msgstr "Mailinglisten" -#: ddportfolioservice/controllers/ddportfolio.py:74 +#: ddportfolioservice/controllers/ddportfolio.py:76 msgid "lists.d.o" msgstr "lists.d.o" -#: ddportfolioservice/controllers/ddportfolio.py:75 +#: ddportfolioservice/controllers/ddportfolio.py:77 msgid "lists.a.d.o" msgstr "lists.a.d.o" -#: ddportfolioservice/controllers/ddportfolio.py:76 +#: ddportfolioservice/controllers/ddportfolio.py:78 msgid "gmane" msgstr "Gmane" -#: ddportfolioservice/controllers/ddportfolio.py:79 +#: ddportfolioservice/controllers/ddportfolio.py:81 msgid "Files" msgstr "Dateien" -#: ddportfolioservice/controllers/ddportfolio.py:80 +#: ddportfolioservice/controllers/ddportfolio.py:82 msgid "people.d.o" msgstr "people.d.o" -#: ddportfolioservice/controllers/ddportfolio.py:81 +#: ddportfolioservice/controllers/ddportfolio.py:83 msgid "oldpeople" msgstr "oldpeople" -#: ddportfolioservice/controllers/ddportfolio.py:82 -#: ddportfolioservice/controllers/ddportfolio.py:88 +#: ddportfolioservice/controllers/ddportfolio.py:84 +#: ddportfolioservice/controllers/ddportfolio.py:90 msgid "Alioth" msgstr "Alioth" -#: ddportfolioservice/controllers/ddportfolio.py:85 +#: ddportfolioservice/controllers/ddportfolio.py:87 msgid "Membership" msgstr "Mitgliedschaft" -#: ddportfolioservice/controllers/ddportfolio.py:86 +#: ddportfolioservice/controllers/ddportfolio.py:88 msgid "NM" msgstr "NM" -#: ddportfolioservice/controllers/ddportfolio.py:87 +#: ddportfolioservice/controllers/ddportfolio.py:89 msgid "DB" msgstr "DB" -#: ddportfolioservice/controllers/ddportfolio.py:91 +#: ddportfolioservice/controllers/ddportfolio.py:93 msgid "Miscellaneous" msgstr "Sonstiges" -#: ddportfolioservice/controllers/ddportfolio.py:92 +#: ddportfolioservice/controllers/ddportfolio.py:94 msgid "debtags" msgstr "debtags" -#: ddportfolioservice/controllers/ddportfolio.py:93 +#: ddportfolioservice/controllers/ddportfolio.py:95 msgid "links" msgstr "Links" From c23223dc83194e6816c7ba7da40eb92cf4c217f3 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Fri, 14 Aug 2009 22:05:49 +0200 Subject: [PATCH 009/332] compile translations for bugs.correspondent --- .../i18n/de/LC_MESSAGES/ddportfolioservice.mo | Bin 5527 -> 5637 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.mo b/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.mo index a9a3778a8e1b96f6f0c5723540eea78b687faca1..a9b946d178d88bed007492d08baa5ece8c8c621c 100644 GIT binary patch delta 1322 zcmYMyT}TvB6u|LonwIWr*{YyPW7(&!teZ-%ADNk%EDMK z6<2wDy^$9cxCz^EFP_CToIwfn0wvG_I`Ipp<8R!6PO@S`wD8*l8acfOb zDj(A@#z%?t53Ht=#8-nn$i!E09S&g=-of+u8D+&LS?1w6EXV7ZjjvDweZ(sKiZY*@ z@`*dK5-aVtg;JS5jB}~W+=!t@Y;PiSs0no71G|3)M_Iuf%9#j~l~iCDS+tr!S-=!Z zg`V5}Z&4C?hnw*O7NR4a`b&vRsh@O|q3mHB7GM;&;8m0}@dSyj5=dVHIZ*-?Aakk; z2KAS{ouxyZLz(C$%0vq&m03gy^b;jv2PaCt&p=t3 z3+1%uqHKv5W&8n@N*+Z?xC5o4r|~wGyb$Lhn};2wBZp!SUr8zVp$zn+?0G95MhnMr z7G)(}WL1j&xF7GLB=Q|)#SZqT8C@uep0L$%H|>T~cE===i@JwW;%6u;pSOL3lF)mU z3N70Gzi`;;^i6jr9ZSych?u5s^+t@KZbY@th^e*5Le}(5s+AD;dOVeG&n|aqndbHS zJmp0mdQ$xXE9!1B1BMk2L?fn8YYrG%Lw7XVuA7E#YSkwLMqTh{^O8fgp={dW97@Tl*Sn)8bCSEM^~bbEy(>%(!#7+@e*kEws{{Z5 delta 1209 zcmYMyQAkr!9LMpaPOZ6Vtu&~tS<@bJf)7D1H7~ldi1A2r4i_D0&e3{^CO8?tacW_n!0rpZ~d6DrXL+SA4FU zhM&cMH~&DkdjEfwE@P_b25~!{#ylLsEjWQ&@fvcOyWDc|0q($g4B!%K>CaC83+^-~ zZ3=jM9}g;UKel2c4q^d5Lj`(?3iKYmxQd0ihI?@XSi?ALwKZ?XOXB~Ud zOMKH$!_9*W{|1c7paM;yGJc4fIEPyJF{%3W}Jo=zJ%K_gDrRqGx!O$;~uiyg~NCVZ=eFa!Xx+=wN4&olOC)=pVPNd z6^S92>EV`UZIh%SCy+Hv20b|GjNie2GJk~n77EEmJFi1FY1&bVccUtkbjB~E61k4$ zIE4XRL{)ZK_1C}(13J4L>R5(*umT%U-$DY3ZJwY4Jx2w4hfFoA$Ys{J9l#AN#d5Z* z3N@mRSXE;|yq_i>QUJqAD_j3N(w#coFsf3)Ie*P+$3LEWwYc`Rk}k zX7lAKVK1tpWjIGAtFQz=q)AI3!*|kBDSx0Q{z9E~7PDhminBP3+KG>>sxg4gcoMbK z`*7wqVZ4~G1<6>aXcnt9K*8wUEThEj?8={3)2cC~xD))iW~=k3a$ I_7wm53;V@`%K!iX From e9da0c648900f703b4bb81a25b10fccac4b24f42 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Fri, 14 Aug 2009 22:13:05 +0200 Subject: [PATCH 010/332] use keyrings as keycheck.sh does, add script for synchronizing (thanks to keycheck.sh) --- ddportfolioservice/model/ddportfolio.ini | 2 +- synckeyrings.sh | 28 ++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100755 synckeyrings.sh diff --git a/ddportfolioservice/model/ddportfolio.ini b/ddportfolioservice/model/ddportfolio.ini index 5a38bf8..a476c2d 100644 --- a/ddportfolioservice/model/ddportfolio.ini +++ b/ddportfolioservice/model/ddportfolio.ini @@ -19,7 +19,7 @@ # . # [DEFAULT] -keyring.dir=/usr/share/keyrings +keyring.dir=~/debian/keyring.debian.org/keyrings urlbuilder.sections=overview,bugs,build,qa,upload,lists,files,membership, miscellaneous diff --git a/synckeyrings.sh b/synckeyrings.sh new file mode 100755 index 0000000..20d11f4 --- /dev/null +++ b/synckeyrings.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Copyright (C) 2009 Jan Dittberner and others This +# little script is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; version 3. +# +# On Debian systems, the complete text of the GNU General Public +# License can be found in /usr/share/common-licenses/GPL-3 file. +# +# This script syncs local copies of the debian-keyring with +# keyring.d.o (the keyring package is too old). +# +# ~/debian/keyring.debian.org/keyrings/ will be created if it doesn't exist. + +# Always exit if there is an error +set -e + +# For the rsync of the debian keyrings and for the nm.gpg +DESTDIR="${DEBHOME:-"$HOME/debian"}/keyring.debian.org/keyrings" +# For the following calls use LANG=C - some output is used for +# reports to a list / for an english report. +LANG=C +export LANG + +test -d $DESTDIR || mkdir -p $DESTDIR + +rsync -qcltz --block-size=8192 --partial --progress --exclude='emeritus-*' --exclude='removed-*' 'keyring.debian.org::keyrings/keyrings/*' $DESTDIR/. From a0ef7157a6f989a91f6a1452a3f8d2876cde0b20 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Thu, 3 Sep 2009 22:10:02 +0200 Subject: [PATCH 011/332] use keyring files from ~/debian/keyring.debian.org --- ddportfolioservice/model/ddportfolio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ddportfolioservice/model/ddportfolio.ini b/ddportfolioservice/model/ddportfolio.ini index a476c2d..6cdbcdf 100644 --- a/ddportfolioservice/model/ddportfolio.ini +++ b/ddportfolioservice/model/ddportfolio.ini @@ -19,7 +19,7 @@ # . # [DEFAULT] -keyring.dir=~/debian/keyring.debian.org/keyrings +keyring.dir=/home/www/usr01/debian/keyring.debian.org/keyrings urlbuilder.sections=overview,bugs,build,qa,upload,lists,files,membership, miscellaneous From 2a41af20f9013f5fde925f4c8c2a84f162f0bf3b Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Thu, 3 Sep 2009 22:10:24 +0200 Subject: [PATCH 012/332] remove oldpeople urls --- ddportfolioservice/model/ddportfolio.ini | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/ddportfolioservice/model/ddportfolio.ini b/ddportfolioservice/model/ddportfolio.ini index 6cdbcdf..f8835a7 100644 --- a/ddportfolioservice/model/ddportfolio.ini +++ b/ddportfolioservice/model/ddportfolio.ini @@ -39,9 +39,8 @@ wnpp.pattern=http://qa.debian.org/developer.php?wnpp=%(email)s correspondent.pattern=http://bugs.debian.org/cgi-bin/pkgreport.cgi?correspondent=%(email)s [build] -urls=buildd,igloo,svnbuildstat +urls=buildd,svnbuildstat buildd.pattern=http://buildd.debian.org/pkg.cgi?maint=%(email)s -igloo.pattern=http://oldpeople.debian.org/~igloo/status.php?email=%(email)s&thin=on svnbuildstat.pattern=http://svnbuildstat.debian.net/packages/list/%(email)s [qa] @@ -61,9 +60,8 @@ adolists.pattern=http://www.google.com/search?q=site%%3Alists.alioth.debian.org+ gmane.pattern=http://search.gmane.org/?email=%(name)s&group=gmane.linux.debian.* [files] -urls=people,oldpeople,alioth +urls=people,alioth people.pattern=http://people.debian.org/~%(username)s/ -oldpeople.pattern=http://oldpeople.debian.org/~%(username)s/ alioth.pattern=http://alioth.debian.org/~%(aliothusername)s/ [membership] From 23098f16471d24e201ef63003254c310dd84f0e0 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Mon, 14 Sep 2009 21:49:28 +0200 Subject: [PATCH 013/332] use ; instead of & for merkel search url --- ddportfolioservice/model/ddportfolio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ddportfolioservice/model/ddportfolio.ini b/ddportfolioservice/model/ddportfolio.ini index f8835a7..72120d6 100644 --- a/ddportfolioservice/model/ddportfolio.ini +++ b/ddportfolioservice/model/ddportfolio.ini @@ -34,7 +34,7 @@ received.pattern=http://bugs.debian.org/%(email)s reported.pattern=http://bugs.debian.org/from:%(email)s bugstats.pattern=http://asdfasdf.debian.net/~tar/bugstats/?%(email)s usertags.pattern=http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=%(email)s -searchall.pattern=http://merkel.debian.org/~don/cgi/search.cgi?phrase=%(name)s&search=search +searchall.pattern=http://merkel.debian.org/~don/cgi/search.cgi?phrase=%(name)s;search=search wnpp.pattern=http://qa.debian.org/developer.php?wnpp=%(email)s correspondent.pattern=http://bugs.debian.org/cgi-bin/pkgreport.cgi?correspondent=%(email)s From 284844168c8bd67728cb564efcf98adbbcde8165 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Mon, 10 May 2010 18:46:17 +0200 Subject: [PATCH 014/332] ignore .coverage --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 51f1148..77fa001 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ data/ *.pyc *.egg-info/ +.coverage From d0082377cd966934e044f03659199f0f0fce9e7e Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Mon, 10 May 2010 19:25:33 +0200 Subject: [PATCH 015/332] use the fixed set of dependency versions from Lenny this allows to create a clean virtualenv that behaves like a Debian Lenny Python setup --- setup.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 58aeb28..c874fbe 100644 --- a/setup.py +++ b/setup.py @@ -48,7 +48,14 @@ array of URLs.""", author_email='jan@dittberner.info', url='http://debian-stuff.dittberner.info/ddportfolioservice', license='AGPL-3.0+', - install_requires=["Pylons>=0.9.6.2"], + install_requires=[ + "Pylons==0.9.6.2", + "Paste==1.7.1", + "PasteDeploy==1.3.2", + "PasteScript==1.6.3", + "Routes==1.9.2", + "FormEncode==1.0.1", + "WebHelpers==0.6.1"], packages=find_packages(exclude=['ez_setup']), include_package_data=True, test_suite='nose.collector', From 794bed92fdc18be452537a77908242e2b09446ce Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Fri, 16 Apr 2010 21:44:13 +0200 Subject: [PATCH 016/332] make the application start with pylons 0.10 --- MANIFEST.in | 1 + ddportfolioservice/config/__init__.py | 2 +- ddportfolioservice/config/deployment.ini_tmpl | 60 +++++++++++++++++++ ddportfolioservice/config/environment.py | 31 +++++++--- ddportfolioservice/config/middleware.py | 54 ++++++++++------- ddportfolioservice/config/routing.py | 22 +++---- ddportfolioservice/lib/__init__.py | 2 +- ddportfolioservice/lib/app_globals.py | 17 ++++-- ddportfolioservice/lib/base.py | 20 ++----- ddportfolioservice/lib/helpers.py | 9 +-- development.ini | 14 ++++- setup.cfg | 3 + setup.py | 7 ++- test.ini | 2 +- 14 files changed, 167 insertions(+), 77 deletions(-) create mode 100644 ddportfolioservice/config/deployment.ini_tmpl diff --git a/MANIFEST.in b/MANIFEST.in index a0348e0..c822c84 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,2 +1,3 @@ +include newpylonsapp/config/deployment.ini_tmpl recursive-include ddportfolioservice/public * recursive-include ddportfolioservice/templates * diff --git a/ddportfolioservice/config/__init__.py b/ddportfolioservice/config/__init__.py index 5d13c6e..cdcce52 100644 --- a/ddportfolioservice/config/__init__.py +++ b/ddportfolioservice/config/__init__.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # DDPortfolio service config package -# Copyright (c) 2009 Jan Dittberner +# Copyright © 2009, 2010 Jan Dittberner # # This file is part of DDPortfolio service. # diff --git a/ddportfolioservice/config/deployment.ini_tmpl b/ddportfolioservice/config/deployment.ini_tmpl new file mode 100644 index 0000000..29f9ab9 --- /dev/null +++ b/ddportfolioservice/config/deployment.ini_tmpl @@ -0,0 +1,60 @@ +# +# ddportfolioservice - Pylons configuration +# +# The %(here)s variable will be replaced with the parent directory of this file +# +[DEFAULT] +debug = true +email_to = you@yourdomain.com +smtp_server = localhost +error_email_from = paste@localhost + +[server:main] +use = egg:Paste#http +host = 0.0.0.0 +port = 5000 + +[app:main] +use = egg:ddportfolioservice +full_stack = true +static_files = true + +cache_dir = %(here)s/data +beaker.session.key = ddportfolioservice +beaker.session.secret = ${app_instance_secret} +app_instance_uuid = ${app_instance_uuid} + +# If you'd like to fine-tune the individual locations of the cache data dirs +# for the Cache data, or the Session saves, un-comment the desired settings +# here: +#beaker.cache.data_dir = %(here)s/data/cache +#beaker.session.data_dir = %(here)s/data/sessions + +# WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* +# Debug mode will enable the interactive debugging tool, allowing ANYONE to +# execute malicious code after an exception is raised. +set debug = false + + +# Logging configuration +[loggers] +keys = root + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = INFO +handlers = console + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(asctime)s %(levelname)-5.5s [%(name)s] [%(threadName)s] %(message)s diff --git a/ddportfolioservice/config/environment.py b/ddportfolioservice/config/environment.py index 4f4b8dc..a1fe3ba 100644 --- a/ddportfolioservice/config/environment.py +++ b/ddportfolioservice/config/environment.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # DDPortfolio service environment configuration -# Copyright (c) 2009 Jan Dittberner +# Copyright © 2009, 2010 Jan Dittberner # # This file is part of DDPortfolio service. # @@ -23,7 +23,9 @@ """Pylons environment configuration""" import os -from pylons import config +from mako.lookup import TemplateLookup +from pylons.configuration import PylonsConfig +from pylons.error import handle_mako_error import ddportfolioservice.lib.app_globals as app_globals import ddportfolioservice.lib.helpers @@ -33,6 +35,8 @@ def load_environment(global_conf, app_conf): """Configure the Pylons environment via the ``pylons.config`` object """ + config = PylonsConfig() + # Pylons paths root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) paths = dict(root=root, @@ -41,15 +45,26 @@ def load_environment(global_conf, app_conf): templates=[os.path.join(root, 'templates')]) # Initialize config with the basic options - config.init_app(global_conf, app_conf, package='ddportfolioservice', - template_engine='mako', paths=paths) + config.init_app(global_conf, app_conf, package='ddportfolioservice', paths=paths) - config['routes.map'] = make_map() - config['pylons.g'] = app_globals.Globals() + config['routes.map'] = make_map(config) + config['pylons.app_globals'] = app_globals.Globals(config) config['pylons.h'] = ddportfolioservice.lib.helpers - # Customize templating options via this variable - tmpl_options = config['buffet.template_options'] + # Setup cache object as early as possible + import pylons + pylons.cache._push_object(config['pylons.app_globals'].cache) + + + # Create the Mako TemplateLookup, with the default auto-escaping + config['pylons.app_globals'].mako_lookup = TemplateLookup( + directories=paths['templates'], + error_handler=handle_mako_error, + module_directory=os.path.join(app_conf['cache_dir'], 'templates'), + input_encoding='utf-8', default_filters=['escape'], + imports=['from webhelpers.html import escape']) # CONFIGURATION OPTIONS HERE (note: all config options will override # any Pylons config options) + + return config diff --git a/ddportfolioservice/config/middleware.py b/ddportfolioservice/config/middleware.py index 4cc9378..6e87b2d 100644 --- a/ddportfolioservice/config/middleware.py +++ b/ddportfolioservice/config/middleware.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # DDPortfolio service middleware configuration -# Copyright (c) 2009 Jan Dittberner +# Copyright © 2009, 2010 Jan Dittberner # # This file is part of DDPortfolio service. # @@ -21,20 +21,18 @@ # . # """Pylons middleware initialization""" +from beaker.middleware import SessionMiddleware from paste.cascade import Cascade from paste.registry import RegistryManager from paste.urlparser import StaticURLParser from paste.deploy.converters import asbool - -from pylons import config -from pylons.error import error_template -from pylons.middleware import error_mapper, ErrorDocuments, ErrorHandler, \ - StaticJavascripts +from pylons.middleware import ErrorHandler, StatusCodeRedirect from pylons.wsgiapp import PylonsApp +from routes.middleware import RoutesMiddleware from ddportfolioservice.config.environment import load_environment -def make_app(global_conf, full_stack=True, **app_conf): +def make_app(global_conf, full_stack=True, static_files=True, **app_conf): """Create a Pylons WSGI application and return it ``global_conf`` @@ -42,38 +40,50 @@ def make_app(global_conf, full_stack=True, **app_conf): the [DEFAULT] section of the Paste ini file. ``full_stack`` - Whether or not this application provides a full WSGI stack (by - default, meaning it handles its own exceptions and errors). - Disable full_stack when this application is "managed" by - another WSGI middleware. + Whether this application provides a full WSGI stack (by default, + meaning it handles its own exceptions and errors). Disable + full_stack when this application is "managed" by another WSGI + middleware. + + ``static_files`` + Whether this application serves its own static files; disable + when another web server is responsible for serving them. ``app_conf`` - The application's local configuration. Normally specified in the - [app:] section of the Paste ini file (where + The application's local configuration. Normally specified in + the [app:] section of the Paste ini file (where defaults to main). + """ # Configure the Pylons environment - load_environment(global_conf, app_conf) + config = load_environment(global_conf, app_conf) # The Pylons WSGI app - app = PylonsApp() + app = PylonsApp(config=config) + + # Routing/Session/Cache Middleware + app = RoutesMiddleware(app, config['routes.map']) + app = SessionMiddleware(app, config) # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares) if asbool(full_stack): # Handle Python exceptions - app = ErrorHandler(app, global_conf, error_template=error_template, - **config['pylons.errorware']) + app = ErrorHandler(app, global_conf, **config['pylons.errorware']) # Display error documents for 401, 403, 404 status codes (and # 500 when debug is disabled) - app = ErrorDocuments(app, global_conf, mapper=error_mapper, **app_conf) + if asbool(config['debug']): + app = StatusCodeRedirect(app) + else: + app = StatusCodeRedirect(app, [400, 401, 403, 404, 500]) # Establish the Registry for this application app = RegistryManager(app) - # Static files - javascripts_app = StaticJavascripts() - static_app = StaticURLParser(config['pylons.paths']['static_files']) - app = Cascade([static_app, javascripts_app, app]) + if asbool(static_files): + # Serve static files + static_app = StaticURLParser(config['pylons.paths']['static_files']) + app = Cascade([static_app, app]) + app.config = config return app diff --git a/ddportfolioservice/config/routing.py b/ddportfolioservice/config/routing.py index 3d116d4..d197181 100644 --- a/ddportfolioservice/config/routing.py +++ b/ddportfolioservice/config/routing.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # DDPortfolio service routing configuration -# Copyright (c) 2009 Jan Dittberner +# Copyright © 2009, 2010 Jan Dittberner # # This file is part of DDPortfolio service. # @@ -26,24 +26,26 @@ The more specific and detailed routes should be defined first so they may take precedent over the more generic routes. For more information refer to the routes manual at http://routes.groovie.org/docs/ """ -from pylons import config from routes import Mapper -def make_map(): +def make_map(config): """Create, configure and return the routes Mapper""" map = Mapper(directory=config['pylons.paths']['controllers'], - always_scan=config['debug']) + always_scan=config['debug'], explicit=True) + map.minimization = False # The ErrorController route (handles 404/500 error pages); it should # likely stay at the top, ensuring it can always be resolved - map.connect('error/:action/:id', controller='error') + map.connect('/error/{action}', controller='error') + map.connect('/error/{action}/{id}', controller='error') # CUSTOM ROUTES HERE - map.connect('', controller='ddportfolio', action='index') - map.connect('result', controller='ddportfolio', action='urllist') - map.connect('htmlformhelper.js', controller='showformscripts', + map.connect('/', controller='ddportfolio', action='index') + map.connect('/result', controller='ddportfolio', action='urllist') + map.connect('/htmlformhelper.js', controller='showformscripts', action='index') - map.connect(':controller/:action/:id') - map.connect('*url', controller='template', action='view') + + map.connect('/{controller}/{action}') + map.connect('/{controller}/{action}/{id}') return map diff --git a/ddportfolioservice/lib/__init__.py b/ddportfolioservice/lib/__init__.py index 9017306..ac207b6 100644 --- a/ddportfolioservice/lib/__init__.py +++ b/ddportfolioservice/lib/__init__.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # DDPortfolio service lib package -# Copyright (c) 2009 Jan Dittberner +# Copyright © 2009, 2010 Jan Dittberner # # This file is part of DDPortfolio service. # diff --git a/ddportfolioservice/lib/app_globals.py b/ddportfolioservice/lib/app_globals.py index 7969caa..e66df3d 100644 --- a/ddportfolioservice/lib/app_globals.py +++ b/ddportfolioservice/lib/app_globals.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # DDPortfolio service application Globals -# Copyright (c) 2009 Jan Dittberner +# Copyright © 2009, 2010 Jan Dittberner # # This file is part of DDPortfolio service. # @@ -21,16 +21,21 @@ # . # """The application's Globals object""" -from pylons import config + +from beaker.cache import CacheManager +from beaker.util import parse_cache_config_options class Globals(object): + """Globals acts as a container for objects available throughout the life of the application + """ - def __init__(self): + def __init__(self, config): """One instance of Globals is created during application - initialization and is available during requests via the 'g' - variable + initialization and is available during requests via the + 'app_globals' variable + """ - pass + self.cache = CacheManager(**parse_cache_config_options(config)) diff --git a/ddportfolioservice/lib/base.py b/ddportfolioservice/lib/base.py index 9dc819c..24d0cc4 100644 --- a/ddportfolioservice/lib/base.py +++ b/ddportfolioservice/lib/base.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # DDPortfolio service base controller -# Copyright (c) 2009 Jan Dittberner +# Copyright © 2009, 2010 Jan Dittberner # # This file is part of DDPortfolio service. # @@ -22,18 +22,12 @@ # """The base Controller API -Provides the BaseController class for subclassing, and other objects -utilized by Controllers. +Provides the BaseController class for subclassing. """ -from pylons import c, cache, config, g, request, response, session +from pylons import tmpl_context as c, request from pylons.controllers import WSGIController -from pylons.controllers.util import abort, etag_cache, redirect_to -from pylons.decorators import jsonify, validate -from pylons.i18n import _, ungettext, N_, add_fallback -from pylons.templating import render - -import ddportfolioservice.lib.helpers as h -import ddportfolioservice.model as model +from pylons.i18n import add_fallback +from pylons.templating import render_mako as render class BaseController(WSGIController): @@ -50,7 +44,3 @@ class BaseController(WSGIController): pass c.messages = { 'errors': [], 'messages': [] } return WSGIController.__call__(self, environ, start_response) - -# Include the '_' function in the public names -__all__ = [__name for __name in locals().keys() if not __name.startswith('_') \ - or __name == '_'] diff --git a/ddportfolioservice/lib/helpers.py b/ddportfolioservice/lib/helpers.py index bf113c2..24170e9 100644 --- a/ddportfolioservice/lib/helpers.py +++ b/ddportfolioservice/lib/helpers.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # DDPortfolio service webhelpers -# Copyright (c) 2009 Jan Dittberner +# Copyright © 2009, 2010 Jan Dittberner # # This file is part of DDPortfolio service. # @@ -23,11 +23,6 @@ """Helper functions Consists of functions to typically be used within templates, but also -available to Controllers. This module is available to both as 'h'. +available to Controllers. This module is available to templates as 'h'. """ -from webhelpers import * -from webhelpers.html.tags import * from webhelpers.html.builder import escape -from webhelpers.text import * -from webhelpers.textile import * -from routes.util import * diff --git a/development.ini b/development.ini index 0a2cd4e..ffa4c63 100644 --- a/development.ini +++ b/development.ini @@ -12,12 +12,14 @@ error_email_from = paste@localhost [server:main] use = egg:Paste#http -host = 0.0.0.0 +host = 127.0.0.1 port = 5000 [app:main] use = egg:ddportfolioservice full_stack = true +static_files = true + cache_dir = %(here)s/data beaker.session.key = ddportfolioservice beaker.session.secret = somesecret @@ -36,7 +38,7 @@ beaker.session.secret = somesecret # Logging configuration [loggers] -keys = root, ddportfolioservice +keys = root, routes, ddportfolioservice [handlers] keys = console @@ -48,6 +50,12 @@ keys = generic level = INFO handlers = console +[logger_routes] +level = INFO +handlers = +qualname = routes.middleware +# "level = DEBUG" logs the route matched and routing variables. + [logger_ddportfolioservice] level = DEBUG handlers = @@ -60,5 +68,5 @@ level = NOTSET formatter = generic [formatter_generic] -format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s +format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] [%(threadName)s] %(message)s datefmt = %H:%M:%S diff --git a/setup.cfg b/setup.cfg index 5c5ebdd..390771c 100644 --- a/setup.cfg +++ b/setup.cfg @@ -12,6 +12,9 @@ source-dir = docs doc-dir=docs/html make-dirs=1 +[nosetests] +with-pylons = test.ini + # Babel configuration [compile_catalog] domain = ddportfolioservice diff --git a/setup.py b/setup.py index 58aeb28..0c26b1f 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # DDPortfolio service setup -# Copyright (c) 2009 Jan Dittberner +# Copyright © 2009, 2010 Jan Dittberner # # This file is part of DDPortfolio service. # @@ -29,7 +29,7 @@ except ImportError: setup( name='ddportfolioservice', - version='0.1', + version='0.2', description='service to create DDPortfolio URLs', long_description="""This is a service implementation that returns a set of personalized URLs as outlined in @@ -48,7 +48,7 @@ array of URLs.""", author_email='jan@dittberner.info', url='http://debian-stuff.dittberner.info/ddportfolioservice', license='AGPL-3.0+', - install_requires=["Pylons>=0.9.6.2"], + install_requires=["Pylons>=0.10rc1"], packages=find_packages(exclude=['ez_setup']), include_package_data=True, test_suite='nose.collector', @@ -57,6 +57,7 @@ array of URLs.""", ('**.py', 'python', None), ('templates/**.mako', 'mako', None), ('public/**', 'ignore', None)]}, + zip_safe=False, entry_points=""" [paste.app_factory] main = ddportfolioservice.config.middleware:make_app diff --git a/test.ini b/test.ini index 6f3a54e..940a578 100644 --- a/test.ini +++ b/test.ini @@ -12,7 +12,7 @@ error_email_from = paste@localhost [server:main] use = egg:Paste#http -host = 0.0.0.0 +host = 127.0.0.1 port = 5000 [app:main] From 716ca8d40ab825e2a325fab9c0b743109b44ab6b Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sat, 17 Apr 2010 12:05:29 +0200 Subject: [PATCH 017/332] adapt error controller to new Pylons --- ddportfolioservice/controllers/error.py | 29 +++++++++++++++---------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/ddportfolioservice/controllers/error.py b/ddportfolioservice/controllers/error.py index 114f52a..c20d41e 100644 --- a/ddportfolioservice/controllers/error.py +++ b/ddportfolioservice/controllers/error.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # DDPortfolio service ErrorController -# Copyright (c) 2009 Jan Dittberner +# Copyright © 2009, 2010 Jan Dittberner # # This file is part of DDPortfolio service. # @@ -21,14 +21,17 @@ # . # import cgi -import os.path -from paste.urlparser import StaticURLParser -from pylons.middleware import error_document_template, media_path +from paste.urlparser import PkgResourcesParser +from pylons import request +from pylons.controllers.util import forward +from pylons.middleware import error_document_template +from webhelpers.html.builder import literal -from ddportfolioservice.lib.base import * +from ddportfolioservice.lib.base import BaseController class ErrorController(BaseController): + """Generates error documents as and when they are required. The ErrorDocuments middleware forwards to ErrorController when error @@ -38,26 +41,28 @@ class ErrorController(BaseController): ErrorDocuments middleware in your config/middleware.py file. """ + def document(self): """Render the error document""" + resp = request.environ.get('pylons.original_response') + content = literal(resp.body) or cgi.escape(request.GET.get('message', '')) page = error_document_template % \ dict(prefix=request.environ.get('SCRIPT_NAME', ''), - code=cgi.escape(request.params.get('code', '')), - message=cgi.escape(request.params.get('message', ''))) + code=cgi.escape(request.GET.get('code', str(resp.status_int))), + message=content) return page def img(self, id): """Serve Pylons' stock images""" - return self._serve_file(os.path.join(media_path, 'img'), id) + return self._serve_file('/'.join(['media/img', id])) def style(self, id): """Serve Pylons' stock stylesheets""" - return self._serve_file(os.path.join(media_path, 'style'), id) + return self._serve_file('/'.join(['media/style', id])) - def _serve_file(self, root, path): + def _serve_file(self, path): """Call Paste's FileApp (a WSGI application) to serve the file at the specified path """ - static = StaticURLParser(root) request.environ['PATH_INFO'] = '/%s' % path - return static(request.environ, self.start_response) + return forward(PkgResourcesParser('pylons', 'pylons')) From 7cb0b383a3faafc04ad67028bb087e383b3e8705 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sat, 17 Apr 2010 12:48:31 +0200 Subject: [PATCH 018/332] upgrade mako templates, add explicit webhelpers --- ddportfolioservice/controllers/__init__.py | 2 +- ddportfolioservice/controllers/ddportfolio.py | 10 ++++++---- ddportfolioservice/controllers/showformscripts.py | 6 +++--- ddportfolioservice/controllers/template.py | 4 ++-- ddportfolioservice/lib/helpers.py | 5 ++++- ddportfolioservice/model/ddportfolio.ini | 2 +- ddportfolioservice/templates/base.mako | 9 +++++---- ddportfolioservice/templates/showform.mako | 8 ++++---- 8 files changed, 26 insertions(+), 20 deletions(-) diff --git a/ddportfolioservice/controllers/__init__.py b/ddportfolioservice/controllers/__init__.py index 6074769..09444ed 100644 --- a/ddportfolioservice/controllers/__init__.py +++ b/ddportfolioservice/controllers/__init__.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # DDPortfolio service controllers package -# Copyright (c) 2009 Jan Dittberner +# Copyright © 2009, 2010 Jan Dittberner # # This file is part of DDPortfolio service. # diff --git a/ddportfolioservice/controllers/ddportfolio.py b/ddportfolioservice/controllers/ddportfolio.py index 4844a1a..7dbb258 100644 --- a/ddportfolioservice/controllers/ddportfolio.py +++ b/ddportfolioservice/controllers/ddportfolio.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # DDPortfolio service DdportfolioController -# Copyright (c) 2009 Jan Dittberner +# Copyright © 2009, 2010 Jan Dittberner # # This file is part of DDPortfolio service. # @@ -23,9 +23,11 @@ import logging import simplejson -from ddportfolioservice.lib.base import * -from ddportfolioservice.model.form import * -from ddportfolioservice.model.urlbuilder import * +from pylons.i18n import N_ + +from ddportfolioservice.lib.base import BaseController, render +from ddportfolioservice.model.form import DDDataRequest, DeveloperData +from ddportfolioservice.model.urlbuilder import build_urls from ddportfolioservice.model import dddatabuilder log = logging.getLogger(__name__) diff --git a/ddportfolioservice/controllers/showformscripts.py b/ddportfolioservice/controllers/showformscripts.py index 22f80e9..33343b4 100644 --- a/ddportfolioservice/controllers/showformscripts.py +++ b/ddportfolioservice/controllers/showformscripts.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # DDPortfolio service ShowformscriptController. -# Copyright (c) 2009 Jan Dittberner +# Copyright © 2009, 2010 Jan Dittberner # # This file is part of DDPortfolio service. # @@ -23,8 +23,8 @@ import logging import simplejson -from ddportfolioservice.lib.base import * -from ddportfolioservice.model.form import * +from ddportfolioservice.lib.base import BaseController +from ddportfolioservice.model.form import DDDataRequest from ddportfolioservice.model import dddatabuilder log = logging.getLogger(__name__) diff --git a/ddportfolioservice/controllers/template.py b/ddportfolioservice/controllers/template.py index 817a4c4..0cc70b2 100644 --- a/ddportfolioservice/controllers/template.py +++ b/ddportfolioservice/controllers/template.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # DDPortfolio service TemplateController -# Copyright (c) 2009 Jan Dittberner +# Copyright © 2009, 2010 Jan Dittberner # # This file is part of DDPortfolio service. # @@ -20,7 +20,7 @@ # License along with this program. If not, see # . # -from ddportfolioservice.lib.base import * +from ddportfolioservice.lib.base import BaseController class TemplateController(BaseController): diff --git a/ddportfolioservice/lib/helpers.py b/ddportfolioservice/lib/helpers.py index 24170e9..8c174df 100644 --- a/ddportfolioservice/lib/helpers.py +++ b/ddportfolioservice/lib/helpers.py @@ -25,4 +25,7 @@ Consists of functions to typically be used within templates, but also available to Controllers. This module is available to templates as 'h'. """ -from webhelpers.html.builder import escape +from webhelpers.html.builder import escape, literal +from webhelpers.html.tags import stylesheet_link, javascript_link, image, \ + form, text, radio, submit, end_form +from routes import url_for diff --git a/ddportfolioservice/model/ddportfolio.ini b/ddportfolioservice/model/ddportfolio.ini index 72120d6..0be9f75 100644 --- a/ddportfolioservice/model/ddportfolio.ini +++ b/ddportfolioservice/model/ddportfolio.ini @@ -19,7 +19,7 @@ # . # [DEFAULT] -keyring.dir=/home/www/usr01/debian/keyring.debian.org/keyrings +keyring.dir=${HOME}/debian/keyring.debian.org/keyrings urlbuilder.sections=overview,bugs,build,qa,upload,lists,files,membership, miscellaneous diff --git a/ddportfolioservice/templates/base.mako b/ddportfolioservice/templates/base.mako index 6c48112..1b8e815 100644 --- a/ddportfolioservice/templates/base.mako +++ b/ddportfolioservice/templates/base.mako @@ -1,8 +1,9 @@ +## -- coding: utf-8 -- <%doc> Base template for XHTML templates. -Copyright (c) 2009 Jan Dittberner +Copyright © 2009, 2010 Jan Dittberner This file is part of DDPortfolio service. @@ -31,7 +32,7 @@ License along with this program. If not, see ${h.image(h.url_for('/images/openlogo-100.jpg'), _('Debian Logo'), 100, 100, id='debianlogo')}

${_('Debian Developer Portfolio Service')}

-

${_('''This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can create a set of customized links leading to a Debian Developer's or package maintainer's information regarding Debian.''')}

+

${h.literal(_('''This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can create a set of customized links leading to a Debian Developer's or package maintainer's information regarding Debian.'''))}

${self.body()} @@ -39,8 +40,8 @@ License along with this program. If not, see diff --git a/ddportfolioservice/templates/showform.mako b/ddportfolioservice/templates/showform.mako index 0458394..e124987 100644 --- a/ddportfolioservice/templates/showform.mako +++ b/ddportfolioservice/templates/showform.mako @@ -1,7 +1,8 @@ <%inherit file="base.mako" /> +## -- coding: utf-8 -- <%doc> Template for the data input form. -Copyright (c) 2009 Jan Dittberner +Copyright © 2009, 2010 Jan Dittberner This file is part of DDPortfolio service. @@ -23,9 +24,8 @@ License along with this program. If not, see - ${_('Enter your personal information')} <%def name="extrahead()">${h.javascript_link('/javascript/jquery/jquery.js', -h.url_for(controller='showformscripts', -action='index'))} -${h.form(h.url_for(action='urllist'), method='get')} +h.url_for(controller='showformscripts', action='index'))} +${h.form(h.url_for(action='urllist', controller='ddportfolio'), method='get')}
${_('Debian Developer Portfolio')}
Date: Sat, 17 Apr 2010 13:01:07 +0200 Subject: [PATCH 019/332] update translation --- .../i18n/ddportfolioservice.pot | 102 ++++++++--------- .../i18n/de/LC_MESSAGES/ddportfolioservice.mo | Bin 5637 -> 5646 bytes .../i18n/de/LC_MESSAGES/ddportfolioservice.po | 106 +++++++++--------- ddportfolioservice/templates/base.mako | 2 +- ddportfolioservice/templates/showform.mako | 2 +- 5 files changed, 106 insertions(+), 106 deletions(-) diff --git a/ddportfolioservice/i18n/ddportfolioservice.pot b/ddportfolioservice/i18n/ddportfolioservice.pot index 86a7941..041bd11 100644 --- a/ddportfolioservice/i18n/ddportfolioservice.pot +++ b/ddportfolioservice/i18n/ddportfolioservice.pot @@ -1,15 +1,15 @@ # Translations template for ddportfolioservice. -# Copyright (C) 2009 ORGANIZATION +# Copyright (C) 2010 ORGANIZATION # This file is distributed under the same license as the ddportfolioservice # project. -# FIRST AUTHOR , 2009. +# FIRST AUTHOR , 2010. # #, fuzzy msgid "" msgstr "" -"Project-Id-Version: ddportfolioservice 0.1\n" +"Project-Id-Version: ddportfolioservice 0.2\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2009-08-14 22:02+0200\n" +"POT-Creation-Date: 2010-04-17 13:00+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,151 +18,151 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 0.9.4\n" -#: ddportfolioservice/controllers/ddportfolio.py:36 +#: ddportfolioservice/controllers/ddportfolio.py:38 msgid "Overview" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:37 +#: ddportfolioservice/controllers/ddportfolio.py:39 msgid "Debian Developer's Package Overview" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:38 +#: ddportfolioservice/controllers/ddportfolio.py:40 msgid "" "Debian Developer's Package Overview\n" "... showing all email addresses" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:42 +#: ddportfolioservice/controllers/ddportfolio.py:44 msgid "Bugs" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:43 +#: ddportfolioservice/controllers/ddportfolio.py:45 msgid "" "bugs received\n" "(note: co-maintainers not listed, see #430986)" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:47 +#: ddportfolioservice/controllers/ddportfolio.py:49 msgid "bugs reported" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:48 +#: ddportfolioservice/controllers/ddportfolio.py:50 msgid "bugstats AKA karma" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:49 +#: ddportfolioservice/controllers/ddportfolio.py:51 msgid "user tags" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:50 +#: ddportfolioservice/controllers/ddportfolio.py:52 msgid "all messages (i.e., full text search for developer name on all bug logs)" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:52 +#: ddportfolioservice/controllers/ddportfolio.py:54 msgid "WNPP" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:53 +#: ddportfolioservice/controllers/ddportfolio.py:55 msgid "correspondent for bugs" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:56 +#: ddportfolioservice/controllers/ddportfolio.py:58 msgid "Build" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:57 +#: ddportfolioservice/controllers/ddportfolio.py:59 msgid "buildd.d.o (note: co-maintainers not listed)" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:59 +#: ddportfolioservice/controllers/ddportfolio.py:61 msgid "igloo" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:60 +#: ddportfolioservice/controllers/ddportfolio.py:62 msgid "svnbuildstat" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:63 +#: ddportfolioservice/controllers/ddportfolio.py:65 msgid "Quality Assurance" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:64 +#: ddportfolioservice/controllers/ddportfolio.py:66 msgid "lintian reports" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:65 +#: ddportfolioservice/controllers/ddportfolio.py:67 msgid "full lintian reports (i.e. including \"info\"-level messages)" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:67 +#: ddportfolioservice/controllers/ddportfolio.py:69 msgid "DEHS (Debian External Health Status)" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:70 +#: ddportfolioservice/controllers/ddportfolio.py:72 msgid "Upload" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:71 +#: ddportfolioservice/controllers/ddportfolio.py:73 msgid "" "keylog (per-key upload list)\n" "(note: uses key fingerprint)" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:75 +#: ddportfolioservice/controllers/ddportfolio.py:77 msgid "Mailing Lists" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:76 +#: ddportfolioservice/controllers/ddportfolio.py:78 msgid "lists.d.o" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:77 +#: ddportfolioservice/controllers/ddportfolio.py:79 msgid "lists.a.d.o" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:78 +#: ddportfolioservice/controllers/ddportfolio.py:80 msgid "gmane" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:81 +#: ddportfolioservice/controllers/ddportfolio.py:83 msgid "Files" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:82 +#: ddportfolioservice/controllers/ddportfolio.py:84 msgid "people.d.o" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:83 +#: ddportfolioservice/controllers/ddportfolio.py:85 msgid "oldpeople" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:84 -#: ddportfolioservice/controllers/ddportfolio.py:90 +#: ddportfolioservice/controllers/ddportfolio.py:86 +#: ddportfolioservice/controllers/ddportfolio.py:92 msgid "Alioth" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:87 +#: ddportfolioservice/controllers/ddportfolio.py:89 msgid "Membership" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:88 +#: ddportfolioservice/controllers/ddportfolio.py:90 msgid "NM" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:89 +#: ddportfolioservice/controllers/ddportfolio.py:91 msgid "DB" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:93 +#: ddportfolioservice/controllers/ddportfolio.py:95 msgid "Miscellaneous" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:94 +#: ddportfolioservice/controllers/ddportfolio.py:96 msgid "debtags" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:95 +#: ddportfolioservice/controllers/ddportfolio.py:97 msgid "links" msgstr "" @@ -195,16 +195,16 @@ msgstr "" msgid "Missing input: %s" msgstr "" -#: ddportfolioservice/templates/base.mako:25 -#: ddportfolioservice/templates/base.mako:33 +#: ddportfolioservice/templates/base.mako:26 +#: ddportfolioservice/templates/base.mako:34 msgid "Debian Developer Portfolio Service" msgstr "" -#: ddportfolioservice/templates/base.mako:31 +#: ddportfolioservice/templates/base.mako:32 msgid "Debian Logo" msgstr "" -#: ddportfolioservice/templates/base.mako:34 +#: ddportfolioservice/templates/base.mako:35 msgid "" "This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian " @@ -212,26 +212,26 @@ msgid "" "Developer's or package maintainer's information regarding Debian." msgstr "" -#: ddportfolioservice/templates/base.mako:40 +#: ddportfolioservice/templates/base.mako:41 msgid "AGPL - Free Software" msgstr "" -#: ddportfolioservice/templates/base.mako:42 +#: ddportfolioservice/templates/base.mako:43 #, python-format msgid "" "The service is available under the terms of the GNU Affero General Public " "License as published by the Free Software Foundation, either version 3 of" " the License, or (at your option) any later version. You can download the source code using git." +"href=\"%s\">download the source code using git." msgstr "" -#: ddportfolioservice/templates/base.mako:43 -msgid "Copyright © 2009 Jan Dittberner" +#: ddportfolioservice/templates/base.mako:44 +msgid "Copyright © 2009, 2010 Jan Dittberner" msgstr "" -#: ddportfolioservice/templates/showform.mako:23 +#: ddportfolioservice/templates/showform.mako:24 msgid "Enter your personal information" msgstr "" diff --git a/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.mo b/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.mo index a9b946d178d88bed007492d08baa5ece8c8c621c..70b507644abf16ccd49f3628106296a8f4087554 100644 GIT binary patch delta 1096 zcmXxiPe{{Y9LMqR+NSg0Y)vO5BiA46u<38JXe!xZhr%Ev@M44mJD6c1MMZ`K!yqFm z79>HD5mX3XrbN=oB8VuX%WhH!Pf`a_=}^)8BR^sMUeE8@@A-be&-Z!8;uGGgc^_%U+H15IEn86%Y;5*!oix|T1ScR(?L@P1d1=Xl{&B$NYiPhLu zV!6!#StiJ7L#|g)frhahZ@cdgP>G(Q3Z6x+dyNYG7He<;Yq5wbu!u_Z3)^u6 z6)#2mWID&7l|hF)aShd)5#(nRJjh{>T%RK`Yz8awjXVDVC)vPPY-0W#RjC7$$fj)u zwShTQhd#RVxg`dwWEuD23N~VhzNy7&)SYNYonaPZIE?!4G3rjdM{-+$>XoPlmFNHx z(vBdX*a_T^Js9OG*(d|G=qc)KUg8d%N1g3w*KepmMO2_=RA<&uiT5E`r)v zJ=S3ibtJ8*^<7v_e(PnRiU&|F9l;m0@(xC@g=%ysI{8SgJc&AjZq%7)@f6;`DO^Nt zWQeMgcoUD|9IBANs14V0KAmS6L>Z{ke%A|ll=sW-`z%t6&7)fU3AOX0>km{xE2s`_ zxbwb9zRmZfYT;Ew%5hrbJd;j77VId*{26aq;!@vWQ{TnG=E6W=-0Ml@*DLyiNhjeP lOe7CCBwN}Xr*OV<+7sAXpI`E23cbO*-oVz_q^%6Xjcuv4yogwlMRZXY=0z_s1EGtF8ZjkSkwg&@ zj-ntaFABsiveiuxWP~@8ND$PGL>EDXR1^gY(f3z}VE8%b_&?9{oadaYZDVcM`idLP zY~E+K3csV~Kd}KDE6g@vC&sWBvv>xBID>2O71rP)hVd&#@HeiW7YII?8jSd9n# zR{R^_C=2AYymJ^8sDM>?(apzEiSD8beuUch1QqxxM)5h;;Tu#TpD}>TsQunbGk#WA zSv2eMm^CpA;wirJ@{eFP=T*tEskS1-pBL!1y$%ERW{;T?7-VtkFQaQK4BMr zL&b~JKDo8XAj2Tz7KTu*DIh<)#2<3lb>|%}?ZVA?2%C)iA7!8x-9p{X1g^z0>TYM9bErTIs6dOT&Mcu4{X!KS;zep-HR@nd zT!#&)D@mjF@5L(e+hGQ(IEQNKX}m`(FJL`xp&Gr3oqVKL?nYg~e$<`!;6WV137kb8 zq@Su%ID&id0jiK6r~`+%pMA#}L>Z{kW6l$}gZW7}pF(P}X;h0}piVyTe2XgR1FAzy zZhZx, 2009. +# Jan Dittberner , 2009, 2010. # msgid "" msgstr "" -"Project-Id-Version: ddportfolioservice 0.1\n" +"Project-Id-Version: ddportfolioservice 0.2\n" "Report-Msgid-Bugs-To: jan@dittberner.info\n" "POT-Creation-Date: 2009-01-20 23:13+0100\n" -"PO-Revision-Date: 2009-08-14 22:03+0200\n" +"PO-Revision-Date: 2010-04-17 13:00+0200\n" "Last-Translator: Jan Dittberner \n" "Language-Team: de \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" @@ -18,15 +18,15 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 0.9.4\n" -#: ddportfolioservice/controllers/ddportfolio.py:36 +#: ddportfolioservice/controllers/ddportfolio.py:38 msgid "Overview" msgstr "Überblick" -#: ddportfolioservice/controllers/ddportfolio.py:37 +#: ddportfolioservice/controllers/ddportfolio.py:39 msgid "Debian Developer's Package Overview" msgstr "Paketübersicht des Debian-Entwicklers" -#: ddportfolioservice/controllers/ddportfolio.py:38 +#: ddportfolioservice/controllers/ddportfolio.py:40 msgid "" "Debian Developer's Package Overview\n" "... showing all email addresses" @@ -34,11 +34,11 @@ msgstr "" "Paketübersicht des Debian-Entwicklers\n" "... mit allen E-Mailadressen" -#: ddportfolioservice/controllers/ddportfolio.py:42 +#: ddportfolioservice/controllers/ddportfolio.py:44 msgid "Bugs" msgstr "Fehler" -#: ddportfolioservice/controllers/ddportfolio.py:43 +#: ddportfolioservice/controllers/ddportfolio.py:45 msgid "" "bugs received\n" "(note: co-maintainers not listed, see #430986)" -#: ddportfolioservice/controllers/ddportfolio.py:47 +#: ddportfolioservice/controllers/ddportfolio.py:49 msgid "bugs reported" msgstr "Berichtete Fehler" -#: ddportfolioservice/controllers/ddportfolio.py:48 +#: ddportfolioservice/controllers/ddportfolio.py:50 msgid "bugstats AKA karma" msgstr "Fehlerstatistiken auch bekannt als Karma" -#: ddportfolioservice/controllers/ddportfolio.py:49 +#: ddportfolioservice/controllers/ddportfolio.py:51 msgid "user tags" msgstr "User Tags" -#: ddportfolioservice/controllers/ddportfolio.py:50 +#: ddportfolioservice/controllers/ddportfolio.py:52 msgid "all messages (i.e., full text search for developer name on all bug logs)" msgstr "" "Alle Nachrichten (d.h. Volltextsuche nach dem Entwicklernamen in allen " "Fehlerlogs)" -#: ddportfolioservice/controllers/ddportfolio.py:52 +#: ddportfolioservice/controllers/ddportfolio.py:54 msgid "WNPP" msgstr "WNPP" -#: ddportfolioservice/controllers/ddportfolio.py:53 +#: ddportfolioservice/controllers/ddportfolio.py:55 msgid "correspondent for bugs" msgstr "Beitragender zu Fehlern" -#: ddportfolioservice/controllers/ddportfolio.py:56 +#: ddportfolioservice/controllers/ddportfolio.py:58 msgid "Build" msgstr "Build" -#: ddportfolioservice/controllers/ddportfolio.py:57 +#: ddportfolioservice/controllers/ddportfolio.py:59 msgid "buildd.d.o (note: co-maintainers not listed)" msgstr "buildd.d.o (Anmerkung: Co-Maintainer werden nicht aufgeführt)" -#: ddportfolioservice/controllers/ddportfolio.py:59 +#: ddportfolioservice/controllers/ddportfolio.py:61 msgid "igloo" msgstr "Igloo" -#: ddportfolioservice/controllers/ddportfolio.py:60 +#: ddportfolioservice/controllers/ddportfolio.py:62 msgid "svnbuildstat" msgstr "SVN-Buildstat" -#: ddportfolioservice/controllers/ddportfolio.py:63 +#: ddportfolioservice/controllers/ddportfolio.py:65 msgid "Quality Assurance" msgstr "Qualitätssicherung" -#: ddportfolioservice/controllers/ddportfolio.py:64 +#: ddportfolioservice/controllers/ddportfolio.py:66 msgid "lintian reports" msgstr "Lintian-Berichte" -#: ddportfolioservice/controllers/ddportfolio.py:65 +#: ddportfolioservice/controllers/ddportfolio.py:67 msgid "full lintian reports (i.e. including \"info\"-level messages)" msgstr "" "vollständige Lintian-Berichte (d.h. inklusive Meldungen der Stufe " "\"info\")" -#: ddportfolioservice/controllers/ddportfolio.py:67 +#: ddportfolioservice/controllers/ddportfolio.py:69 msgid "DEHS (Debian External Health Status)" msgstr "DEHS (Debian External Health Status)" -#: ddportfolioservice/controllers/ddportfolio.py:70 +#: ddportfolioservice/controllers/ddportfolio.py:72 msgid "Upload" msgstr "Upload" -#: ddportfolioservice/controllers/ddportfolio.py:71 +#: ddportfolioservice/controllers/ddportfolio.py:73 msgid "" "keylog (per-key upload list)\n" "(note: uses key fingerprint)" @@ -121,60 +121,60 @@ msgstr "" "Keylog\n" "(Anmerkung: verwendet den Fingerabdruck des Schlüssels)" -#: ddportfolioservice/controllers/ddportfolio.py:75 +#: ddportfolioservice/controllers/ddportfolio.py:77 msgid "Mailing Lists" msgstr "Mailinglisten" -#: ddportfolioservice/controllers/ddportfolio.py:76 +#: ddportfolioservice/controllers/ddportfolio.py:78 msgid "lists.d.o" msgstr "lists.d.o" -#: ddportfolioservice/controllers/ddportfolio.py:77 +#: ddportfolioservice/controllers/ddportfolio.py:79 msgid "lists.a.d.o" msgstr "lists.a.d.o" -#: ddportfolioservice/controllers/ddportfolio.py:78 +#: ddportfolioservice/controllers/ddportfolio.py:80 msgid "gmane" msgstr "Gmane" -#: ddportfolioservice/controllers/ddportfolio.py:81 +#: ddportfolioservice/controllers/ddportfolio.py:83 msgid "Files" msgstr "Dateien" -#: ddportfolioservice/controllers/ddportfolio.py:82 +#: ddportfolioservice/controllers/ddportfolio.py:84 msgid "people.d.o" msgstr "people.d.o" -#: ddportfolioservice/controllers/ddportfolio.py:83 +#: ddportfolioservice/controllers/ddportfolio.py:85 msgid "oldpeople" msgstr "oldpeople" -#: ddportfolioservice/controllers/ddportfolio.py:84 -#: ddportfolioservice/controllers/ddportfolio.py:90 +#: ddportfolioservice/controllers/ddportfolio.py:86 +#: ddportfolioservice/controllers/ddportfolio.py:92 msgid "Alioth" msgstr "Alioth" -#: ddportfolioservice/controllers/ddportfolio.py:87 +#: ddportfolioservice/controllers/ddportfolio.py:89 msgid "Membership" msgstr "Mitgliedschaft" -#: ddportfolioservice/controllers/ddportfolio.py:88 +#: ddportfolioservice/controllers/ddportfolio.py:90 msgid "NM" msgstr "NM" -#: ddportfolioservice/controllers/ddportfolio.py:89 +#: ddportfolioservice/controllers/ddportfolio.py:91 msgid "DB" msgstr "DB" -#: ddportfolioservice/controllers/ddportfolio.py:93 +#: ddportfolioservice/controllers/ddportfolio.py:95 msgid "Miscellaneous" msgstr "Sonstiges" -#: ddportfolioservice/controllers/ddportfolio.py:94 +#: ddportfolioservice/controllers/ddportfolio.py:96 msgid "debtags" msgstr "debtags" -#: ddportfolioservice/controllers/ddportfolio.py:95 +#: ddportfolioservice/controllers/ddportfolio.py:97 msgid "links" msgstr "Links" @@ -207,16 +207,16 @@ msgstr "Alioth-Benutzername" msgid "Missing input: %s" msgstr "Fehlende Eingabe: %s" -#: ddportfolioservice/templates/base.mako:25 -#: ddportfolioservice/templates/base.mako:33 +#: ddportfolioservice/templates/base.mako:26 +#: ddportfolioservice/templates/base.mako:34 msgid "Debian Developer Portfolio Service" msgstr "Debian-Entwicklerportfolioservice" -#: ddportfolioservice/templates/base.mako:31 +#: ddportfolioservice/templates/base.mako:32 msgid "Debian Logo" msgstr "Debian-Logo" -#: ddportfolioservice/templates/base.mako:34 +#: ddportfolioservice/templates/base.mako:35 msgid "" "This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the " @@ -229,33 +229,33 @@ msgstr "" "Informationen im Bezug auf Debian für Debian-Entwickler und Paketbetreuer" " erzeugt werden." -#: ddportfolioservice/templates/base.mako:40 +#: ddportfolioservice/templates/base.mako:41 msgid "AGPL - Free Software" msgstr "AGPL - Freie Software" -#: ddportfolioservice/templates/base.mako:42 +#: ddportfolioservice/templates/base.mako:43 #, python-format msgid "" "The service is available under the terms of the GNU Affero General Public " "License as published by the Free Software Foundation, either version " "3 of the License, or (at your option) any later version. You can download the source code using git." +"href=\"%s\">download the source code using git." msgstr "" "Dieser Dienst wird unter den Bedingungen der GNU Affero General Public " "License, so wie sie von der Free Software Foundation veröffentlicht " "ist, bereitgestellt. Sie können entweder Version 3 oder (auf Ihren Wunsch" " hin) jede spätere Version der Lizenz verwenden. Sie können sich mittels " -"git den Quelltext " +"git den Quelltext " "herunterladen." -#: ddportfolioservice/templates/base.mako:43 -msgid "Copyright © 2009 Jan Dittberner" -msgstr "Copyright © 2009 Jan Dittberner" +#: ddportfolioservice/templates/base.mako:44 +msgid "Copyright © 2009, 2010 Jan Dittberner" +msgstr "Copyright © 2009, 2009 Jan Dittberner" -#: ddportfolioservice/templates/showform.mako:23 +#: ddportfolioservice/templates/showform.mako:24 msgid "Enter your personal information" msgstr "Eingabe der persönlichen Informationen" diff --git a/ddportfolioservice/templates/base.mako b/ddportfolioservice/templates/base.mako index 1b8e815..830acba 100644 --- a/ddportfolioservice/templates/base.mako +++ b/ddportfolioservice/templates/base.mako @@ -1,6 +1,6 @@ +## -*- coding: utf-8 -*- \ -## -- coding: utf-8 -- <%doc> Base template for XHTML templates. Copyright © 2009, 2010 Jan Dittberner diff --git a/ddportfolioservice/templates/showform.mako b/ddportfolioservice/templates/showform.mako index e124987..3ffc395 100644 --- a/ddportfolioservice/templates/showform.mako +++ b/ddportfolioservice/templates/showform.mako @@ -1,5 +1,5 @@ +## -- coding: utf-8 -- \ <%inherit file="base.mako" /> -## -- coding: utf-8 -- <%doc> Template for the data input form. Copyright © 2009, 2010 Jan Dittberner From 21b8d883d8ed70ca3795356b20e294f5566d2ae3 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 18 Apr 2010 15:03:02 +0200 Subject: [PATCH 020/332] upgrade showformscripts controller and template --- ddportfolioservice/controllers/showformscripts.py | 8 ++++++-- ddportfolioservice/templates/showformscript.mako | 9 ++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/ddportfolioservice/controllers/showformscripts.py b/ddportfolioservice/controllers/showformscripts.py index 33343b4..0e9cdfe 100644 --- a/ddportfolioservice/controllers/showformscripts.py +++ b/ddportfolioservice/controllers/showformscripts.py @@ -23,7 +23,11 @@ import logging import simplejson -from ddportfolioservice.lib.base import BaseController +from pylons import request, response +import formencode.api +import formencode.validators + +from ddportfolioservice.lib.base import BaseController, render from ddportfolioservice.model.form import DDDataRequest from ddportfolioservice.model import dddatabuilder @@ -38,7 +42,7 @@ class ShowformscriptsController(BaseController): def index(self): """This action generates the helper script for the showform page.""" - response.headers['Content-Type'] = 'text/javascript' + response.headers['Content-Type'] = 'text/javascript; charset=utf-8' return render('/showformscript.mako') def fetchdddata(self): diff --git a/ddportfolioservice/templates/showformscript.mako b/ddportfolioservice/templates/showformscript.mako index b951a78..c6a5a15 100644 --- a/ddportfolioservice/templates/showformscript.mako +++ b/ddportfolioservice/templates/showformscript.mako @@ -1,7 +1,7 @@ -## -*- coding: utf-8 -*- +## -*- 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. @@ -18,8 +18,7 @@ Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . - - +\ function updateFields(data, textStatus) { if (data.isdd == 1) { $('#name').attr('value', data.name).attr('readonly', 'readonly'); @@ -54,7 +53,7 @@ function updateFields(data, textStatus) { function onBlurEmail() { $.ajax({ - 'url' : '${h.url_for(action='fetchdddata')}', + 'url' : '${h.url_for(controller="showformscripts", action="fetchdddata")}', 'data' : {'email' : $('#email').attr('value')}, 'dataType' : 'json', 'success' : updateFields, From 64241e40282277dfe06d4f5d134b2588840d8b66 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 18 Apr 2010 15:08:49 +0200 Subject: [PATCH 021/332] fix unit tests --- ddportfolioservice/tests/functional/test_ddportfolio.py | 2 +- ddportfolioservice/tests/functional/test_showformscripts.py | 2 +- setup.cfg | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ddportfolioservice/tests/functional/test_ddportfolio.py b/ddportfolioservice/tests/functional/test_ddportfolio.py index 7c422f4..7693f2f 100644 --- a/ddportfolioservice/tests/functional/test_ddportfolio.py +++ b/ddportfolioservice/tests/functional/test_ddportfolio.py @@ -25,5 +25,5 @@ from ddportfolioservice.tests import * class TestDdportfolioController(TestController): def test_index(self): - response = self.app.get(url_for(controller='ddportfolio')) + response = self.app.get(url_for(controller='ddportfolio', action='index')) # Test response... diff --git a/ddportfolioservice/tests/functional/test_showformscripts.py b/ddportfolioservice/tests/functional/test_showformscripts.py index 43ea16b..4ce6279 100644 --- a/ddportfolioservice/tests/functional/test_showformscripts.py +++ b/ddportfolioservice/tests/functional/test_showformscripts.py @@ -3,5 +3,5 @@ from ddportfolioservice.tests import * class TestShowformscriptsController(TestController): def test_index(self): - response = self.app.get(url_for(controller='showformscripts')) + response = self.app.get(url_for(controller='showformscripts', action='index')) # Test response... diff --git a/setup.cfg b/setup.cfg index 390771c..8b8db3d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -14,6 +14,7 @@ make-dirs=1 [nosetests] with-pylons = test.ini +cover-package = ddportfolioservice # Babel configuration [compile_catalog] From c043f7b2bc78598908e657c9f1aecb48bfcf5654 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 18 Apr 2010 20:47:54 +0200 Subject: [PATCH 022/332] update year in translations --- .../i18n/ddportfolioservice.pot | 2 +- .../i18n/de/LC_MESSAGES/ddportfolioservice.mo | Bin 5646 -> 5646 bytes .../i18n/de/LC_MESSAGES/ddportfolioservice.po | 4 ++-- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ddportfolioservice/i18n/ddportfolioservice.pot b/ddportfolioservice/i18n/ddportfolioservice.pot index 041bd11..604cd13 100644 --- a/ddportfolioservice/i18n/ddportfolioservice.pot +++ b/ddportfolioservice/i18n/ddportfolioservice.pot @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: ddportfolioservice 0.2\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2010-04-17 13:00+0200\n" +"POT-Creation-Date: 2010-04-18 20:46+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.mo b/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.mo index 70b507644abf16ccd49f3628106296a8f4087554..b8fe01417f5e13e5dbdf91cc04bdd935b118d97d 100644 GIT binary patch delta 29 lcmeCv>C@Se$-{1;U}RurV!pY6XB*?>$1Dz;)A&}f0|1H%33dPg delta 28 jcmeCv>C@Se$-{20U}$V*V6eG>XB#7vf#qfmzGv(JckKur diff --git a/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.po b/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.po index 40667da..a780a60 100644 --- a/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.po +++ b/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: ddportfolioservice 0.2\n" "Report-Msgid-Bugs-To: jan@dittberner.info\n" "POT-Creation-Date: 2009-01-20 23:13+0100\n" -"PO-Revision-Date: 2010-04-17 13:00+0200\n" +"PO-Revision-Date: 2010-04-18 20:47+0200\n" "Last-Translator: Jan Dittberner \n" "Language-Team: de \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" @@ -253,7 +253,7 @@ msgstr "" #: ddportfolioservice/templates/base.mako:44 msgid "Copyright © 2009, 2010 Jan Dittberner" -msgstr "Copyright © 2009, 2009 Jan Dittberner" +msgstr "Copyright © 2009, 2010 Jan Dittberner" #: ddportfolioservice/templates/showform.mako:24 msgid "Enter your personal information" From 0b3373da0e1edb53bbab6d0821bd6be68609e5a4 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 18 Apr 2010 20:53:13 +0200 Subject: [PATCH 023/332] import missing abort function --- ddportfolioservice/controllers/showformscripts.py | 1 + 1 file changed, 1 insertion(+) diff --git a/ddportfolioservice/controllers/showformscripts.py b/ddportfolioservice/controllers/showformscripts.py index 0e9cdfe..9e2980c 100644 --- a/ddportfolioservice/controllers/showformscripts.py +++ b/ddportfolioservice/controllers/showformscripts.py @@ -24,6 +24,7 @@ import logging import simplejson from pylons import request, response +from pylons.controllers.util import abort import formencode.api import formencode.validators From 39fb201f84b99cb2558b5c4504fa3f856b449684 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 18 Apr 2010 21:14:04 +0200 Subject: [PATCH 024/332] upgrade result page to Pylons 0.10 --- ddportfolioservice/controllers/ddportfolio.py | 5 ++++- ddportfolioservice/lib/helpers.py | 4 +++- ddportfolioservice/templates/showurls.mako | 13 +++++++------ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/ddportfolioservice/controllers/ddportfolio.py b/ddportfolioservice/controllers/ddportfolio.py index 7dbb258..5f56baa 100644 --- a/ddportfolioservice/controllers/ddportfolio.py +++ b/ddportfolioservice/controllers/ddportfolio.py @@ -23,7 +23,10 @@ import logging import simplejson -from pylons.i18n import N_ +from pylons import request, tmpl_context as c +from pylons.i18n import N_, _ +import formencode.api +import formencode.validators from ddportfolioservice.lib.base import BaseController, render from ddportfolioservice.model.form import DDDataRequest, DeveloperData diff --git a/ddportfolioservice/lib/helpers.py b/ddportfolioservice/lib/helpers.py index 8c174df..57e9d64 100644 --- a/ddportfolioservice/lib/helpers.py +++ b/ddportfolioservice/lib/helpers.py @@ -27,5 +27,7 @@ available to Controllers. This module is available to templates as 'h'. """ from webhelpers.html.builder import escape, literal from webhelpers.html.tags import stylesheet_link, javascript_link, image, \ - form, text, radio, submit, end_form + form, text, radio, submit, end_form, link_to +from webhelpers.text import truncate +from webhelpers.textile import textile from routes import url_for diff --git a/ddportfolioservice/templates/showurls.mako b/ddportfolioservice/templates/showurls.mako index 29f7f3a..deca858 100644 --- a/ddportfolioservice/templates/showurls.mako +++ b/ddportfolioservice/templates/showurls.mako @@ -1,7 +1,8 @@ -<%inherit file="base.mako" /> +## -*- 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. @@ -18,7 +19,7 @@ Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . - +\ <%def name="titleaddon()"> - ${_('Your personal links')} @@ -36,14 +37,14 @@ License along with this program. If not, see <% urlclass = 'odd' %> % elif row[0] == 'error': - ${h.textile(row[4])} + ${h.literal(h.textile(row[4]))} ${_('Error during URL creation:')} ${row[3].replace("\n", '
')}
% else: - ${h.textile(row[4])} + ${h.literal(h.textile(row[4]))} ${h.link_to(h.truncate(row[3], length=120), row[3])} <% @@ -58,4 +59,4 @@ License along with this program. If not, see
% endif -

${h.link_to(_('Restart'), h.url_for(action='index'))}

+

${h.link_to(_('Restart'), h.url_for(controller='ddportfolio', action='index'))}

From 2d12dd6a284964741a29dc502ad298038db99036 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 18 Apr 2010 21:16:27 +0200 Subject: [PATCH 025/332] update line numbers in translation files --- .../i18n/ddportfolioservice.pot | 86 +++++++++--------- .../i18n/de/LC_MESSAGES/ddportfolioservice.mo | Bin 5646 -> 5646 bytes .../i18n/de/LC_MESSAGES/ddportfolioservice.po | 86 +++++++++--------- 3 files changed, 86 insertions(+), 86 deletions(-) diff --git a/ddportfolioservice/i18n/ddportfolioservice.pot b/ddportfolioservice/i18n/ddportfolioservice.pot index 604cd13..5103dba 100644 --- a/ddportfolioservice/i18n/ddportfolioservice.pot +++ b/ddportfolioservice/i18n/ddportfolioservice.pot @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: ddportfolioservice 0.2\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2010-04-18 20:46+0200\n" +"POT-Creation-Date: 2010-04-18 21:15+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,151 +18,151 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 0.9.4\n" -#: ddportfolioservice/controllers/ddportfolio.py:38 +#: ddportfolioservice/controllers/ddportfolio.py:41 msgid "Overview" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:39 +#: ddportfolioservice/controllers/ddportfolio.py:42 msgid "Debian Developer's Package Overview" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:40 +#: ddportfolioservice/controllers/ddportfolio.py:43 msgid "" "Debian Developer's Package Overview\n" "... showing all email addresses" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:44 +#: ddportfolioservice/controllers/ddportfolio.py:47 msgid "Bugs" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:45 +#: ddportfolioservice/controllers/ddportfolio.py:48 msgid "" "bugs received\n" "(note: co-maintainers not listed, see #430986)" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:49 +#: ddportfolioservice/controllers/ddportfolio.py:52 msgid "bugs reported" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:50 +#: ddportfolioservice/controllers/ddportfolio.py:53 msgid "bugstats AKA karma" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:51 +#: ddportfolioservice/controllers/ddportfolio.py:54 msgid "user tags" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:52 +#: ddportfolioservice/controllers/ddportfolio.py:55 msgid "all messages (i.e., full text search for developer name on all bug logs)" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:54 +#: ddportfolioservice/controllers/ddportfolio.py:57 msgid "WNPP" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:55 +#: ddportfolioservice/controllers/ddportfolio.py:58 msgid "correspondent for bugs" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:58 +#: ddportfolioservice/controllers/ddportfolio.py:61 msgid "Build" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:59 +#: ddportfolioservice/controllers/ddportfolio.py:62 msgid "buildd.d.o (note: co-maintainers not listed)" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:61 +#: ddportfolioservice/controllers/ddportfolio.py:64 msgid "igloo" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:62 +#: ddportfolioservice/controllers/ddportfolio.py:65 msgid "svnbuildstat" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:65 +#: ddportfolioservice/controllers/ddportfolio.py:68 msgid "Quality Assurance" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:66 +#: ddportfolioservice/controllers/ddportfolio.py:69 msgid "lintian reports" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:67 +#: ddportfolioservice/controllers/ddportfolio.py:70 msgid "full lintian reports (i.e. including \"info\"-level messages)" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:69 +#: ddportfolioservice/controllers/ddportfolio.py:72 msgid "DEHS (Debian External Health Status)" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:72 +#: ddportfolioservice/controllers/ddportfolio.py:75 msgid "Upload" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:73 +#: ddportfolioservice/controllers/ddportfolio.py:76 msgid "" "keylog (per-key upload list)\n" "(note: uses key fingerprint)" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:77 +#: ddportfolioservice/controllers/ddportfolio.py:80 msgid "Mailing Lists" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:78 +#: ddportfolioservice/controllers/ddportfolio.py:81 msgid "lists.d.o" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:79 +#: ddportfolioservice/controllers/ddportfolio.py:82 msgid "lists.a.d.o" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:80 +#: ddportfolioservice/controllers/ddportfolio.py:83 msgid "gmane" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:83 +#: ddportfolioservice/controllers/ddportfolio.py:86 msgid "Files" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:84 +#: ddportfolioservice/controllers/ddportfolio.py:87 msgid "people.d.o" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:85 +#: ddportfolioservice/controllers/ddportfolio.py:88 msgid "oldpeople" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:86 -#: ddportfolioservice/controllers/ddportfolio.py:92 +#: ddportfolioservice/controllers/ddportfolio.py:89 +#: ddportfolioservice/controllers/ddportfolio.py:95 msgid "Alioth" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:89 +#: ddportfolioservice/controllers/ddportfolio.py:92 msgid "Membership" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:90 +#: ddportfolioservice/controllers/ddportfolio.py:93 msgid "NM" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:91 +#: ddportfolioservice/controllers/ddportfolio.py:94 msgid "DB" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:95 +#: ddportfolioservice/controllers/ddportfolio.py:98 msgid "Miscellaneous" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:96 +#: ddportfolioservice/controllers/ddportfolio.py:99 msgid "debtags" msgstr "" -#: ddportfolioservice/controllers/ddportfolio.py:97 +#: ddportfolioservice/controllers/ddportfolio.py:100 msgid "links" msgstr "" @@ -236,7 +236,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 "" @@ -280,23 +280,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:62 msgid "Restart" msgstr "" diff --git a/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.mo b/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.mo index b8fe01417f5e13e5dbdf91cc04bdd935b118d97d..5f9d4b532504b943075683d7f9e71b4cb887a079 100644 GIT binary patch delta 17 YcmeCv>C@Se!^2`|WoWj!fM*^j05Wj}NdN!< delta 17 YcmeCv>C@Se!^2`=Wn#X$fM*^j05XFGOaK4? diff --git a/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.po b/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.po index a780a60..06efcf2 100644 --- a/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.po +++ b/ddportfolioservice/i18n/de/LC_MESSAGES/ddportfolioservice.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: ddportfolioservice 0.2\n" "Report-Msgid-Bugs-To: jan@dittberner.info\n" "POT-Creation-Date: 2009-01-20 23:13+0100\n" -"PO-Revision-Date: 2010-04-18 20:47+0200\n" +"PO-Revision-Date: 2010-04-18 21:15+0200\n" "Last-Translator: Jan Dittberner \n" "Language-Team: de \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" @@ -18,15 +18,15 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 0.9.4\n" -#: ddportfolioservice/controllers/ddportfolio.py:38 +#: ddportfolioservice/controllers/ddportfolio.py:41 msgid "Overview" msgstr "Überblick" -#: ddportfolioservice/controllers/ddportfolio.py:39 +#: ddportfolioservice/controllers/ddportfolio.py:42 msgid "Debian Developer's Package Overview" msgstr "Paketübersicht des Debian-Entwicklers" -#: ddportfolioservice/controllers/ddportfolio.py:40 +#: ddportfolioservice/controllers/ddportfolio.py:43 msgid "" "Debian Developer's Package Overview\n" "... showing all email addresses" @@ -34,11 +34,11 @@ msgstr "" "Paketübersicht des Debian-Entwicklers\n" "... mit allen E-Mailadressen" -#: ddportfolioservice/controllers/ddportfolio.py:44 +#: ddportfolioservice/controllers/ddportfolio.py:47 msgid "Bugs" msgstr "Fehler" -#: ddportfolioservice/controllers/ddportfolio.py:45 +#: ddportfolioservice/controllers/ddportfolio.py:48 msgid "" "bugs received\n" "(note: co-maintainers not listed, see #430986)" -#: ddportfolioservice/controllers/ddportfolio.py:49 +#: ddportfolioservice/controllers/ddportfolio.py:52 msgid "bugs reported" msgstr "Berichtete Fehler" -#: ddportfolioservice/controllers/ddportfolio.py:50 +#: ddportfolioservice/controllers/ddportfolio.py:53 msgid "bugstats AKA karma" msgstr "Fehlerstatistiken auch bekannt als Karma" -#: ddportfolioservice/controllers/ddportfolio.py:51 +#: ddportfolioservice/controllers/ddportfolio.py:54 msgid "user tags" msgstr "User Tags" -#: ddportfolioservice/controllers/ddportfolio.py:52 +#: ddportfolioservice/controllers/ddportfolio.py:55 msgid "all messages (i.e., full text search for developer name on all bug logs)" msgstr "" "Alle Nachrichten (d.h. Volltextsuche nach dem Entwicklernamen in allen " "Fehlerlogs)" -#: ddportfolioservice/controllers/ddportfolio.py:54 +#: ddportfolioservice/controllers/ddportfolio.py:57 msgid "WNPP" msgstr "WNPP" -#: ddportfolioservice/controllers/ddportfolio.py:55 +#: ddportfolioservice/controllers/ddportfolio.py:58 msgid "correspondent for bugs" msgstr "Beitragender zu Fehlern" -#: ddportfolioservice/controllers/ddportfolio.py:58 +#: ddportfolioservice/controllers/ddportfolio.py:61 msgid "Build" msgstr "Build" -#: ddportfolioservice/controllers/ddportfolio.py:59 +#: ddportfolioservice/controllers/ddportfolio.py:62 msgid "buildd.d.o (note: co-maintainers not listed)" msgstr "buildd.d.o (Anmerkung: Co-Maintainer werden nicht aufgeführt)" -#: ddportfolioservice/controllers/ddportfolio.py:61 +#: ddportfolioservice/controllers/ddportfolio.py:64 msgid "igloo" msgstr "Igloo" -#: ddportfolioservice/controllers/ddportfolio.py:62 +#: ddportfolioservice/controllers/ddportfolio.py:65 msgid "svnbuildstat" msgstr "SVN-Buildstat" -#: ddportfolioservice/controllers/ddportfolio.py:65 +#: ddportfolioservice/controllers/ddportfolio.py:68 msgid "Quality Assurance" msgstr "Qualitätssicherung" -#: ddportfolioservice/controllers/ddportfolio.py:66 +#: ddportfolioservice/controllers/ddportfolio.py:69 msgid "lintian reports" msgstr "Lintian-Berichte" -#: ddportfolioservice/controllers/ddportfolio.py:67 +#: ddportfolioservice/controllers/ddportfolio.py:70 msgid "full lintian reports (i.e. including \"info\"-level messages)" msgstr "" "vollständige Lintian-Berichte (d.h. inklusive Meldungen der Stufe " "\"info\")" -#: ddportfolioservice/controllers/ddportfolio.py:69 +#: ddportfolioservice/controllers/ddportfolio.py:72 msgid "DEHS (Debian External Health Status)" msgstr "DEHS (Debian External Health Status)" -#: ddportfolioservice/controllers/ddportfolio.py:72 +#: ddportfolioservice/controllers/ddportfolio.py:75 msgid "Upload" msgstr "Upload" -#: ddportfolioservice/controllers/ddportfolio.py:73 +#: ddportfolioservice/controllers/ddportfolio.py:76 msgid "" "keylog (per-key upload list)\n" "(note: uses key fingerprint)" @@ -121,60 +121,60 @@ msgstr "" "Keylog\n" "(Anmerkung: verwendet den Fingerabdruck des Schlüssels)" -#: ddportfolioservice/controllers/ddportfolio.py:77 +#: ddportfolioservice/controllers/ddportfolio.py:80 msgid "Mailing Lists" msgstr "Mailinglisten" -#: ddportfolioservice/controllers/ddportfolio.py:78 +#: ddportfolioservice/controllers/ddportfolio.py:81 msgid "lists.d.o" msgstr "lists.d.o" -#: ddportfolioservice/controllers/ddportfolio.py:79 +#: ddportfolioservice/controllers/ddportfolio.py:82 msgid "lists.a.d.o" msgstr "lists.a.d.o" -#: ddportfolioservice/controllers/ddportfolio.py:80 +#: ddportfolioservice/controllers/ddportfolio.py:83 msgid "gmane" msgstr "Gmane" -#: ddportfolioservice/controllers/ddportfolio.py:83 +#: ddportfolioservice/controllers/ddportfolio.py:86 msgid "Files" msgstr "Dateien" -#: ddportfolioservice/controllers/ddportfolio.py:84 +#: ddportfolioservice/controllers/ddportfolio.py:87 msgid "people.d.o" msgstr "people.d.o" -#: ddportfolioservice/controllers/ddportfolio.py:85 +#: ddportfolioservice/controllers/ddportfolio.py:88 msgid "oldpeople" msgstr "oldpeople" -#: ddportfolioservice/controllers/ddportfolio.py:86 -#: ddportfolioservice/controllers/ddportfolio.py:92 +#: ddportfolioservice/controllers/ddportfolio.py:89 +#: ddportfolioservice/controllers/ddportfolio.py:95 msgid "Alioth" msgstr "Alioth" -#: ddportfolioservice/controllers/ddportfolio.py:89 +#: ddportfolioservice/controllers/ddportfolio.py:92 msgid "Membership" msgstr "Mitgliedschaft" -#: ddportfolioservice/controllers/ddportfolio.py:90 +#: ddportfolioservice/controllers/ddportfolio.py:93 msgid "NM" msgstr "NM" -#: ddportfolioservice/controllers/ddportfolio.py:91 +#: ddportfolioservice/controllers/ddportfolio.py:94 msgid "DB" msgstr "DB" -#: ddportfolioservice/controllers/ddportfolio.py:95 +#: ddportfolioservice/controllers/ddportfolio.py:98 msgid "Miscellaneous" msgstr "Sonstiges" -#: ddportfolioservice/controllers/ddportfolio.py:96 +#: ddportfolioservice/controllers/ddportfolio.py:99 msgid "debtags" msgstr "debtags" -#: ddportfolioservice/controllers/ddportfolio.py:97 +#: ddportfolioservice/controllers/ddportfolio.py:100 msgid "links" msgstr "Links" @@ -260,7 +260,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" @@ -304,23 +304,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:62 msgid "Restart" msgstr "Neu beginnen" From f5f5e366eadd18033bf92ce7d77743341f1482e5 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Mon, 3 May 2010 20:18:23 +0200 Subject: [PATCH 026/332] modernize unit tests --- ddportfolioservice/tests/__init__.py | 31 +++++++++---------- .../tests/functional/test_ddportfolio.py | 7 +++-- .../tests/functional/test_showformscripts.py | 26 ++++++++++++++-- ddportfolioservice/websetup.py | 5 ++- 4 files changed, 46 insertions(+), 23 deletions(-) diff --git a/ddportfolioservice/tests/__init__.py b/ddportfolioservice/tests/__init__.py index e3d153d..4e03c0c 100644 --- a/ddportfolioservice/tests/__init__.py +++ b/ddportfolioservice/tests/__init__.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # DDPortfolio service tests package -# Copyright (c) 2009 Jan Dittberner +# Copyright © 2009, 2010 Jan Dittberner # # This file is part of DDPortfolio service. # @@ -34,29 +34,26 @@ import os import sys from unittest import TestCase -import pkg_resources -import paste.fixture -import paste.script.appinstall from paste.deploy import loadapp -from routes import url_for +from paste.script.appinstall import SetupCommand +from pylons import url +from routes.util import URLGenerator +from webtest import TestApp -__all__ = ['url_for', 'TestController'] +import pylons.test -here_dir = os.path.dirname(os.path.abspath(__file__)) -conf_dir = os.path.dirname(os.path.dirname(here_dir)) +__all__ = ['environ', 'url', 'TestController'] -sys.path.insert(0, conf_dir) -pkg_resources.working_set.add_entry(conf_dir) -pkg_resources.require('Paste') -pkg_resources.require('PasteScript') +# Invoke websetup with the current config file +SetupCommand('setup-app').run([pylons.test.pylonsapp.config['__file__']]) -test_file = os.path.join(conf_dir, 'test.ini') -cmd = paste.script.appinstall.SetupCommand('setup-app') -cmd.run([test_file]) +environ = {} class TestController(TestCase): def __init__(self, *args, **kwargs): - wsgiapp = loadapp('config:test.ini', relative_to=conf_dir) - self.app = paste.fixture.TestApp(wsgiapp) + wsgiapp = pylons.test.pylonsapp + config = wsgiapp.config + self.app = TestApp(wsgiapp) + url._push_object(URLGenerator(config['routes.map'], environ)) TestCase.__init__(self, *args, **kwargs) diff --git a/ddportfolioservice/tests/functional/test_ddportfolio.py b/ddportfolioservice/tests/functional/test_ddportfolio.py index 7693f2f..2a8a6ed 100644 --- a/ddportfolioservice/tests/functional/test_ddportfolio.py +++ b/ddportfolioservice/tests/functional/test_ddportfolio.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # DDPortfolio service DdportfolioController test -# Copyright (c) 2009 Jan Dittberner +# Copyright © 2009, 2010 Jan Dittberner # # This file is part of DDPortfolio service. # @@ -20,10 +20,11 @@ # License along with this program. If not, see # . # -from ddportfolioservice.tests import * +from ddportfolioservice.tests import TestController, url + class TestDdportfolioController(TestController): def test_index(self): - response = self.app.get(url_for(controller='ddportfolio', action='index')) + response = self.app.get(url(controller='ddportfolio', action='index')) # Test response... diff --git a/ddportfolioservice/tests/functional/test_showformscripts.py b/ddportfolioservice/tests/functional/test_showformscripts.py index 4ce6279..3302743 100644 --- a/ddportfolioservice/tests/functional/test_showformscripts.py +++ b/ddportfolioservice/tests/functional/test_showformscripts.py @@ -1,7 +1,29 @@ -from ddportfolioservice.tests import * +# -*- python -*- +# -*- coding: utf-8 -*- +# +# DDPortfolio service DdportfolioController test +# Copyright © 2009, 2010 Jan Dittberner +# +# This file is part of DDPortfolio service. +# +# DDPortfolio service is free software: you can redistribute it and/or +# modify it under the terms of the GNU Affero General Public License +# as published by the Free Software Foundation, either version 3 of +# the License, or (at your option) any later version. +# +# DDPortfolio service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty +# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public +# License along with this program. If not, see +# . +# +from ddportfolioservice.tests import TestController, url class TestShowformscriptsController(TestController): def test_index(self): - response = self.app.get(url_for(controller='showformscripts', action='index')) + response = self.app.get(url(controller='showformscripts', action='index')) # Test response... diff --git a/ddportfolioservice/websetup.py b/ddportfolioservice/websetup.py index fcbacd8..2a52f84 100644 --- a/ddportfolioservice/websetup.py +++ b/ddportfolioservice/websetup.py @@ -25,6 +25,7 @@ import logging from paste.deploy import appconfig from pylons import config +import pylons.test from ddportfolioservice.config.environment import load_environment @@ -33,4 +34,6 @@ log = logging.getLogger(__name__) def setup_config(command, filename, section, vars): """Place any commands to setup ddportfolioservice here""" conf = appconfig('config:' + filename) - load_environment(conf.global_conf, conf.local_conf) + + if not pylons.test.pylonsapp: + load_environment(conf.global_conf, conf.local_conf) From f5363a360cef21e39cd2eff6cd042433cb984efe Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Mon, 3 May 2010 20:26:07 +0200 Subject: [PATCH 027/332] use url instead of url_for --- ddportfolioservice/lib/helpers.py | 2 +- ddportfolioservice/templates/base.mako | 6 +++--- ddportfolioservice/templates/showform.mako | 4 ++-- ddportfolioservice/templates/showformscript.mako | 2 +- ddportfolioservice/templates/showurls.mako | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ddportfolioservice/lib/helpers.py b/ddportfolioservice/lib/helpers.py index 57e9d64..88fa1f8 100644 --- a/ddportfolioservice/lib/helpers.py +++ b/ddportfolioservice/lib/helpers.py @@ -30,4 +30,4 @@ from webhelpers.html.tags import stylesheet_link, javascript_link, image, \ form, text, radio, submit, end_form, link_to from webhelpers.text import truncate from webhelpers.textile import textile -from routes import url_for +from pylons import url diff --git a/ddportfolioservice/templates/base.mako b/ddportfolioservice/templates/base.mako index 830acba..541fb7a 100644 --- a/ddportfolioservice/templates/base.mako +++ b/ddportfolioservice/templates/base.mako @@ -24,12 +24,12 @@ License along with this program. If not, see ${_('Debian Developer Portfolio Service')}${self.titleaddon()} - ${h.stylesheet_link(h.url_for('/stylesheets/style.css'))} + ${h.stylesheet_link(h.url('/stylesheets/style.css'))} ${self.extrahead()} From 2aec4f8f980794656d7e4a50f29d88838e7fde09 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Fri, 4 Jun 2010 00:24:15 +0200 Subject: [PATCH 046/332] 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': From 4eb94210048547c4ddaf941eaf41a563cd4bf422 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Fri, 4 Jun 2010 00:29:03 +0200 Subject: [PATCH 047/332] updated translations --- .../i18n/ddportfolioservice.pot | 38 +++++++++++----- .../i18n/de/LC_MESSAGES/ddportfolioservice.mo | Bin 6013 -> 6466 bytes .../i18n/de/LC_MESSAGES/ddportfolioservice.po | 41 +++++++++++++----- 3 files changed, 58 insertions(+), 21 deletions(-) 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 b7c74af8f1c22f809769c2c00e1680d981ac0275..232bdcbf163cfdd0f99d9a7b27cbf88a79112fce 100644 GIT binary patch delta 1686 zcmaLXL2MLN9LMq3x}_9o3&plnr4FS+X}Swmj1{3OE|gMe32h{5FwU~C-Lc)-b!LkJ z5-VPai4wzxKtK*CCTOA&YdDxHp&Yz%fT)BZ2k<~*LZS(g0~o(QJCQxPnVrvjyYt@v z|Nigo-cL+-PF$~x9X7oBc|XScgL3sAyza$}NzlEIgV<4F%)|ID&ceeuA3w$g_$4mJ zbI1_$D{`3|+#2x~E<+6_)Pz}1qm_O;K7s?-f^Xtd{19KlGdLITpb{;sG^QGxQ3-UQ z5?F^dI1qjRdek4o$N798D$a4NAig>KZ^M`=tmTVo)P$E%fo`H!VrCn&94b)#I4Xfo zoP#e!{XSG8ub_%KihABhRU$-Ha1YiK-yEc&j87q#ndGJkrjXd?BJL^Z#cZlvH!`>B$0~d^GL4Jq`>0ACK-OXoRa1ZFFvp_@PvcQm_zmjN^)c&C z+>7;i1-0VasFmG8m9mQcYQ|>N_v=szC-Di~jLR^O+L9yKipS8Sq`D!^4#fLo|i|Ak7VjI6Z62GsZ_RG?tnP^JP`RZYWz-Azzph4WpO*ck01th4xi%z5f9H<7j}&-D|zU}WXi-WP|gn{DZ)v38}~?WEm;n{q?z zc>ZuM$hrkD=TH6~OPBZd1iA6NleO8D4Z@6Xq~lqy$!v>UT1gC NFIita`QQ5D{{UK&`9S~x delta 1292 zcmYMzPe@cz6vy$S&8TJ0sMUy?Ir*<78PLH+MMVW^qFFK#N)#f}W=c>ZB5Eubi4lR1 z326~Z2?;`hB!m?e;iAAzmNHR`T1Zg43JQ$Azr4^e^FH^!ci%ndo_ps--Et)HG2fRo zK27{K@{6ad_y6HY?;X5qHU$`Gjh?b3=s02@A4i2Fb7(pd4fdQOx&tJLzB9?N02^A+Zb0x8| zeb)eAyWK)nY!o-(LsWvVF$+_e zM|}HCgRlMIaxBek8ME=|YO__`?<6Y8TemZg3eblNcplf`C2YiDyn^phiJzc+#TdtW z9K;Yl#e@RCrLhw~pe8O{yJ9JBr(fy%CsCE^Muys1BuBgKyoSWIBx;4D$k!&gXxuc8 zu&`&SGu0ko|5chn>Y^3iMy+HVRk}yG3FqANZ>R*nVmJ;U zL#T0+s5A8jwSaR(NxoQ+qeEvN)KPzjtt#@Ya?lpYe(#&8QhK%M$UR3(3+68wWY z8$K@i7(#7TwKIa6FPfmC3HPE(bQl%51GSMlW4@x(pXxR07(8Wr$4>d?$$8-BtutY^QN%NDQ}zhDCvlZ_JV zLRI1dHsJs&@j2%_?xCMr=^wBn-lAF-M(s&0suH`L4XDJ9pbph>RO!0i^FB21MlkG^ z_=8jZ{;qUiW2~ilswQin-@BUgGBX;ki|&X=JP8uyij4y EU++_W?f?J) 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" From c06107c597a28fe103b0404cf6a758538d4aa902 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 6 Jun 2010 00:26:49 +0200 Subject: [PATCH 048/332] add flattr button --- ddportfolioservice/templates/base.mako | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ddportfolioservice/templates/base.mako b/ddportfolioservice/templates/base.mako index a189e4b..1d3a34f 100644 --- a/ddportfolioservice/templates/base.mako +++ b/ddportfolioservice/templates/base.mako @@ -33,6 +33,11 @@ License along with this program. If not, see id='debianlogo')}

${_('Debian Developer Portfolio Service')}

${_('''This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can create a set of customized links leading to a Debian Developer's or package maintainer's information regarding Debian.''')}

+

+

${self.body()} From daed37c4abe68253aa79823dd27cca651067912c Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 6 Jun 2010 00:26:49 +0200 Subject: [PATCH 049/332] add flattr button --- ddportfolioservice/templates/base.mako | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ddportfolioservice/templates/base.mako b/ddportfolioservice/templates/base.mako index a189e4b..1d3a34f 100644 --- a/ddportfolioservice/templates/base.mako +++ b/ddportfolioservice/templates/base.mako @@ -33,6 +33,11 @@ License along with this program. If not, see id='debianlogo')}

${_('Debian Developer Portfolio Service')}

${_('''This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can create a set of customized links leading to a Debian Developer's or package maintainer's information regarding Debian.''')}

+

+

${self.body()} From 560aba70d936125efb672abb69962f350544f624 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 6 Jun 2010 00:26:49 +0200 Subject: [PATCH 050/332] add flattr button --- ddportfolioservice/templates/base.mako | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ddportfolioservice/templates/base.mako b/ddportfolioservice/templates/base.mako index 541fb7a..fa54398 100644 --- a/ddportfolioservice/templates/base.mako +++ b/ddportfolioservice/templates/base.mako @@ -33,6 +33,11 @@ License along with this program. If not, see id='debianlogo')}

${_('Debian Developer Portfolio Service')}

${h.literal(_('''This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can create a set of customized links leading to a Debian Developer's or package maintainer's information regarding Debian.'''))}

+

+

${self.body()} From 3e0df60e17ded357cdacc4c3cc35a7440b71d853 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 6 Jun 2010 00:31:41 +0200 Subject: [PATCH 051/332] fix path handling in keyringanalyzer --- ddportfolioservice/model/keyringanalyzer.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ddportfolioservice/model/keyringanalyzer.py b/ddportfolioservice/model/keyringanalyzer.py index 7ef1cbe..8af2449 100644 --- a/ddportfolioservice/model/keyringanalyzer.py +++ b/ddportfolioservice/model/keyringanalyzer.py @@ -31,6 +31,7 @@ import pkg_resources import glob import ConfigParser import os +import os.path def _get_keyrings(): @@ -38,10 +39,10 @@ def _get_keyrings(): configured in ddportfolio.ini.""" my_config = ConfigParser.ConfigParser() my_config.readfp(pkg_resources.resource_stream(__name__, 'ddportfolio.ini')) - keyrings = glob.glob(my_config.get('DEFAULT', 'keyring.dir') + - '/*.gpg') - keyrings.extend(glob.glob(my_config.get('DEFAULT', 'keyring.dir') + - '/*.pgp')) + keyringdir = os.path.expanduser(my_config.get('DEFAULT', 'keyring.dir')) + print "keyrings dir %r" % keyringdir + keyrings = glob.glob(os.path.join(keyringdir, '*.gpg')) + keyrings.extend(glob.glob(os.path.join(keyringdir, '*.pgp'))) keyrings.sort() return keyrings From 71c24cf9e36452cbbc9bf90cb0bf46aaab43d276 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 6 Jun 2010 00:39:20 +0200 Subject: [PATCH 052/332] silence keyringanalyzer --- ddportfolioservice/model/keyringanalyzer.py | 1 - 1 file changed, 1 deletion(-) diff --git a/ddportfolioservice/model/keyringanalyzer.py b/ddportfolioservice/model/keyringanalyzer.py index 8af2449..378552e 100644 --- a/ddportfolioservice/model/keyringanalyzer.py +++ b/ddportfolioservice/model/keyringanalyzer.py @@ -40,7 +40,6 @@ def _get_keyrings(): my_config = ConfigParser.ConfigParser() my_config.readfp(pkg_resources.resource_stream(__name__, 'ddportfolio.ini')) keyringdir = os.path.expanduser(my_config.get('DEFAULT', 'keyring.dir')) - print "keyrings dir %r" % keyringdir keyrings = glob.glob(os.path.join(keyringdir, '*.gpg')) keyrings.extend(glob.glob(os.path.join(keyringdir, '*.pgp'))) keyrings.sort() From e5a73bfe7576d4af12b728d8fab9d428441b647e Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Fri, 11 Jun 2010 21:42:30 +0200 Subject: [PATCH 053/332] add support for automatic DM data lookup --- ddportfolioservice/controllers/ddportfolio.py | 19 +++++++++++++------ ddportfolioservice/model/dddatabuilder.py | 14 +++++++++++--- .../templates/showformscript.mako | 17 +++++++++++++++-- 3 files changed, 39 insertions(+), 11 deletions(-) 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'); From 16f4ee464ec4b7619946ef7d63c2f35e671aaaad Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Fri, 11 Jun 2010 21:47:36 +0200 Subject: [PATCH 054/332] use email address for MIA pattern to catch non-DDs --- ddportfolioservice/model/ddportfolio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ddportfolioservice/model/ddportfolio.ini b/ddportfolioservice/model/ddportfolio.ini index 5e345e3..5eea07e 100644 --- a/ddportfolioservice/model/ddportfolio.ini +++ b/ddportfolioservice/model/ddportfolio.ini @@ -94,7 +94,7 @@ urls=owndndoms,miainfo,groupinfo 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 -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 %(email)s miainfo.type=ssh # Group information groupinfo.pattern=ssh merkel.debian.org id %(username)s From 9a65e0b1f7fa1ab48fed834e8ca97927caba1ff6 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Fri, 11 Jun 2010 21:48:49 +0200 Subject: [PATCH 055/332] update keyringanalyzer.py copyright information --- ddportfolioservice/model/keyringanalyzer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ddportfolioservice/model/keyringanalyzer.py b/ddportfolioservice/model/keyringanalyzer.py index 378552e..b8e1785 100644 --- a/ddportfolioservice/model/keyringanalyzer.py +++ b/ddportfolioservice/model/keyringanalyzer.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # DDPortfolio service application key ring analyzer tool -# Copyright (c) 2009 Jan Dittberner +# Copyright © 2009, 2010 Jan Dittberner # # This file is part of DDPortfolio service. # From dd9d8f6c52cd764ffec76413ef3808bdb2646bcc Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Fri, 11 Jun 2010 21:58:11 +0200 Subject: [PATCH 056/332] mark all patterns that require optional information as optional --- ddportfolioservice/model/ddportfolio.ini | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ddportfolioservice/model/ddportfolio.ini b/ddportfolioservice/model/ddportfolio.ini index 5eea07e..cbe2186 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 %(email)s miainfo.type=ssh # Group information groupinfo.pattern=ssh merkel.debian.org id %(username)s groupinfo.type=ssh +groupinfo.optional=true [ubuntu] urls=ubuntudiff From 9242fdafdeffc0c74f83feac6feb58b44963b8b7 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Fri, 11 Jun 2010 22:04:14 +0200 Subject: [PATCH 057/332] use unquoted email address for MIA lookup --- ddportfolioservice/model/ddportfolio.ini | 2 +- ddportfolioservice/model/urlbuilder.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ddportfolioservice/model/ddportfolio.ini b/ddportfolioservice/model/ddportfolio.ini index cbe2186..2e4b5ae 100644 --- a/ddportfolioservice/model/ddportfolio.ini +++ b/ddportfolioservice/model/ddportfolio.ini @@ -100,7 +100,7 @@ owndndoms.pattern=ssh merkel.debian.org ldapsearch -u -x -H ldap://db.debian.org owndndoms.type=ssh owndndoms.optional=true # MIA information -miainfo.pattern=ssh merkel.debian.org /srv/qa.debian.org/mia/mia-query %(email)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 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(',')]: From 70d72e5f28f85b789026eec5438cd02946876137 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Fri, 11 Jun 2010 23:14:30 +0200 Subject: [PATCH 058/332] handle empty email field onBlur event correctly --- .../templates/showformscript.mako | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/ddportfolioservice/templates/showformscript.mako b/ddportfolioservice/templates/showformscript.mako index 93a85bc..84202c3 100644 --- a/ddportfolioservice/templates/showformscript.mako +++ b/ddportfolioservice/templates/showformscript.mako @@ -65,16 +65,22 @@ function updateFields(data, textStatus) { } } +function onChangeShowAll(event) { + alert(event); +} + function onBlurEmail() { - $.ajax({ - 'url' : '${h.url_for(action='fetchdddata')}', - 'data' : {'email' : $('#email').attr('value')}, - 'dataType' : 'json', - 'success' : updateFields, - 'error' : function(request, textStatus, errorThrown) { - $('#email').focus(); - } - }); + if ($.trim($('#email').attr('value')).length > 0) { + $.ajax({ + 'url' : '${h.url_for(action='fetchdddata')}', + 'data' : {'email' : $('#email').attr('value')}, + 'dataType' : 'json', + 'success' : updateFields, + 'error' : function(request, textStatus, errorThrown) { + $('#email').focus(); + } + }); + } } $(document).ready(function() { From d3fe053dd31c229ddec27d6a5d79ed6428eb4578 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Fri, 11 Jun 2010 23:35:32 +0200 Subject: [PATCH 059/332] enable GPG fingerprint entry with disabled ECMAScript --- ddportfolioservice/templates/showform.mako | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ddportfolioservice/templates/showform.mako b/ddportfolioservice/templates/showform.mako index 0458394..3ffbb36 100644 --- a/ddportfolioservice/templates/showform.mako +++ b/ddportfolioservice/templates/showform.mako @@ -56,7 +56,7 @@ ${h.form(h.url_for(action='urllist'), method='get')} ${h.text('name', h.escape(request.params.get('name', None)), id='name')}
-