Merge branch 'release/0.2.2'
* release/0.2.2: bump version to 0.2.2 PEP-8 compliance add missing import of response from pylons update translation update strings in controllers update translations add babel to install_requires modify templates rewrap README
This commit is contained in:
commit
62b3c08de0
25 changed files with 295 additions and 252 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2012-01-07 Jan Dittberner <jan@dittberner.info>
|
||||||
|
|
||||||
|
* rename Debian Developer to Debian Member, change URL to
|
||||||
|
portfolio.debian.net
|
||||||
|
* PEP-8 compliance
|
||||||
|
|
||||||
2011-03-06 Jan Dittberner <jan@dittberner.info>
|
2011-03-06 Jan Dittberner <jan@dittberner.info>
|
||||||
|
|
||||||
* add one year bug history graph URL (http://glandium.org/blog/?p=1817)
|
* add one year bug history graph URL (http://glandium.org/blog/?p=1817)
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
This file is for you to describe the ddportfolioservice application. Typically
|
This file is for you to describe the ddportfolioservice
|
||||||
you would include information such as the information below:
|
application. Typically you would include information such as the
|
||||||
|
information below:
|
||||||
|
|
||||||
Installation and Setup
|
Installation and Setup
|
||||||
======================
|
======================
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# DDPortfolio service environment configuration
|
# DDPortfolio service environment configuration
|
||||||
# Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
|
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||||
#
|
#
|
||||||
# This file is part of DDPortfolio service.
|
# This file is part of DDPortfolio service.
|
||||||
#
|
#
|
||||||
|
@ -31,9 +31,10 @@ import ddportfolioservice.lib.app_globals as app_globals
|
||||||
import ddportfolioservice.lib.helpers
|
import ddportfolioservice.lib.helpers
|
||||||
from ddportfolioservice.config.routing import make_map
|
from ddportfolioservice.config.routing import make_map
|
||||||
|
|
||||||
|
|
||||||
def load_environment(global_conf, app_conf):
|
def load_environment(global_conf, app_conf):
|
||||||
"""Configure the Pylons environment via the ``pylons.config``
|
"""
|
||||||
object
|
Configure the Pylons environment via the ``pylons.config`` object
|
||||||
"""
|
"""
|
||||||
config = PylonsConfig()
|
config = PylonsConfig()
|
||||||
|
|
||||||
|
@ -45,7 +46,8 @@ def load_environment(global_conf, app_conf):
|
||||||
templates=[os.path.join(root, 'templates')])
|
templates=[os.path.join(root, 'templates')])
|
||||||
|
|
||||||
# Initialize config with the basic options
|
# Initialize config with the basic options
|
||||||
config.init_app(global_conf, app_conf, package='ddportfolioservice', paths=paths)
|
config.init_app(
|
||||||
|
global_conf, app_conf, package='ddportfolioservice', paths=paths)
|
||||||
|
|
||||||
config['routes.map'] = make_map(config)
|
config['routes.map'] = make_map(config)
|
||||||
config['pylons.app_globals'] = app_globals.Globals(config)
|
config['pylons.app_globals'] = app_globals.Globals(config)
|
||||||
|
@ -55,7 +57,6 @@ def load_environment(global_conf, app_conf):
|
||||||
import pylons
|
import pylons
|
||||||
pylons.cache._push_object(config['pylons.app_globals'].cache)
|
pylons.cache._push_object(config['pylons.app_globals'].cache)
|
||||||
|
|
||||||
|
|
||||||
# Create the Mako TemplateLookup, with the default auto-escaping
|
# Create the Mako TemplateLookup, with the default auto-escaping
|
||||||
config['pylons.app_globals'].mako_lookup = TemplateLookup(
|
config['pylons.app_globals'].mako_lookup = TemplateLookup(
|
||||||
directories=paths['templates'],
|
directories=paths['templates'],
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# DDPortfolio service middleware configuration
|
# DDPortfolio service middleware configuration
|
||||||
# Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
|
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||||
#
|
#
|
||||||
# This file is part of DDPortfolio service.
|
# This file is part of DDPortfolio service.
|
||||||
#
|
#
|
||||||
|
@ -32,6 +32,7 @@ from routes.middleware import RoutesMiddleware
|
||||||
|
|
||||||
from ddportfolioservice.config.environment import load_environment
|
from ddportfolioservice.config.environment import load_environment
|
||||||
|
|
||||||
|
|
||||||
def make_app(global_conf, full_stack=True, static_files=True, **app_conf):
|
def make_app(global_conf, full_stack=True, static_files=True, **app_conf):
|
||||||
"""Create a Pylons WSGI application and return it
|
"""Create a Pylons WSGI application and return it
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# DDPortfolio service routing configuration
|
# DDPortfolio service routing configuration
|
||||||
# Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
|
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||||
#
|
#
|
||||||
# This file is part of DDPortfolio service.
|
# This file is part of DDPortfolio service.
|
||||||
#
|
#
|
||||||
|
@ -28,6 +28,7 @@ refer to the routes manual at http://routes.groovie.org/docs/
|
||||||
"""
|
"""
|
||||||
from routes import Mapper
|
from routes import Mapper
|
||||||
|
|
||||||
|
|
||||||
def make_map(config):
|
def make_map(config):
|
||||||
"""Create, configure and return the routes Mapper"""
|
"""Create, configure and return the routes Mapper"""
|
||||||
map = Mapper(directory=config['pylons.paths']['controllers'],
|
map = Mapper(directory=config['pylons.paths']['controllers'],
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# DDPortfolio service DdportfolioController
|
# DDPortfolio service DdportfolioController
|
||||||
# Copyright © 2009, 2010, 2011 Jan Dittberner <jan@dittberner.info>
|
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||||
#
|
#
|
||||||
# This file is part of DDPortfolio service.
|
# This file is part of DDPortfolio service.
|
||||||
#
|
#
|
||||||
|
@ -23,7 +23,7 @@
|
||||||
import logging
|
import logging
|
||||||
import simplejson
|
import simplejson
|
||||||
|
|
||||||
from pylons import request, tmpl_context as c
|
from pylons import request, response, tmpl_context as c
|
||||||
from pylons.i18n import N_, _
|
from pylons.i18n import N_, _
|
||||||
import formencode.api
|
import formencode.api
|
||||||
import formencode.validators
|
import formencode.validators
|
||||||
|
@ -35,91 +35,92 @@ from ddportfolioservice.model import dddatabuilder
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class DdportfolioController(BaseController):
|
class DdportfolioController(BaseController):
|
||||||
_LABELS = {
|
_LABELS = {
|
||||||
'overview' : {
|
'overview': {
|
||||||
'label' : N_('Overview'),
|
'label': N_('Overview'),
|
||||||
'ddpo' : N_("Debian Developer's Package Overview"),
|
'ddpo': N_("Debian Member's Package Overview"),
|
||||||
'alladdresses' : N_("""Debian Developer's Package Overview
|
'alladdresses': N_("""Debian Member's Package Overview
|
||||||
... showing all email addresses"""),
|
... showing all email addresses"""),
|
||||||
},
|
},
|
||||||
'bugs' : {
|
'bugs': {
|
||||||
'label' : N_('Bugs'),
|
'label': N_('Bugs'),
|
||||||
'received' : N_('''bugs received
|
'received': N_('''bugs received
|
||||||
(note: co-maintainers not listed, see \
|
(note: co-maintainers not listed, see \
|
||||||
<a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?\
|
<a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?\
|
||||||
bug=430986">#430986</a>)'''),
|
bug=430986">#430986</a>)'''),
|
||||||
'reported' : N_('bugs reported'),
|
'reported': N_('bugs reported'),
|
||||||
'bugstats' : N_('bugstats AKA <em>karma</em>'),
|
'bugstats': N_('bugstats AKA <em>karma</em>'),
|
||||||
'usertags' : N_('user tags'),
|
'usertags': N_('user tags'),
|
||||||
'searchall' : N_('all messages (i.e., full text search for \
|
'searchall': N_('all messages (i.e., full text search for \
|
||||||
developer name on all bug logs)'),
|
developer name on all bug logs)'),
|
||||||
'wnpp' : N_('<a href="http://wiki.debian.org/WNPP">WNPP</a>'),
|
'wnpp': N_('<a href="http://wiki.debian.org/WNPP">WNPP</a>'),
|
||||||
'correspondent' : N_('correspondent for bugs'),
|
'correspondent': N_('correspondent for bugs'),
|
||||||
'graph' : N_('one year open bug history graph'),
|
'graph': N_('one year open bug history graph'),
|
||||||
},
|
},
|
||||||
'build' : {
|
'build': {
|
||||||
'label' : N_('Build'),
|
'label': N_('Build'),
|
||||||
'buildd' : N_('buildd.d.o'),
|
'buildd': N_('buildd.d.o'),
|
||||||
'igloo' : N_('igloo'),
|
'igloo': N_('igloo'),
|
||||||
},
|
},
|
||||||
'qa' : {
|
'qa': {
|
||||||
'label' : N_('Quality Assurance'),
|
'label': N_('Quality Assurance'),
|
||||||
'lintian' : N_('lintian reports'),
|
'lintian': N_('lintian reports'),
|
||||||
'lintianfull' : N_('full lintian reports (i.e. including \
|
'lintianfull': N_('full lintian reports (i.e. including \
|
||||||
"info"-level messages)'),
|
"info"-level messages)'),
|
||||||
'dehs' : N_('DEHS (Debian External Health Status)'),
|
'dehs': N_('DEHS (Debian External Health Status)'),
|
||||||
'piuparts' : N_('piuparts'),
|
'piuparts': N_('piuparts'),
|
||||||
'patchtracker' : N_('Debian patch tracking system'),
|
'patchtracker': N_('Debian patch tracking system'),
|
||||||
},
|
},
|
||||||
'upload' : {
|
'upload': {
|
||||||
'label' : N_('Upload'),
|
'label': N_('Upload'),
|
||||||
'keylog' : N_('''keylog (per-key upload list)
|
'keylog': N_('''keylog (per-key upload list)
|
||||||
(note: uses key fingerprint)'''),
|
(note: uses key fingerprint)'''),
|
||||||
},
|
},
|
||||||
'lists' : {
|
'lists': {
|
||||||
'label' : N_('Mailing Lists'),
|
'label': N_('Mailing Lists'),
|
||||||
'dolists' : N_('lists.d.o'),
|
'dolists': N_('lists.d.o'),
|
||||||
'adolists' : N_('lists.a.d.o'),
|
'adolists': N_('lists.a.d.o'),
|
||||||
'gmane' : N_('gmane'),
|
'gmane': N_('gmane'),
|
||||||
},
|
},
|
||||||
'files' : {
|
'files': {
|
||||||
'label' : N_('Files'),
|
'label': N_('Files'),
|
||||||
'people' : N_('people.d.o'),
|
'people': N_('people.d.o'),
|
||||||
'oldpeople' : N_('oldpeople'),
|
'oldpeople': N_('oldpeople'),
|
||||||
'alioth' : N_('Alioth'),
|
'alioth': N_('Alioth'),
|
||||||
},
|
},
|
||||||
'membership' : {
|
'membership': {
|
||||||
'label' : N_('Membership'),
|
'label': N_('Membership'),
|
||||||
'nm' : N_('NM'),
|
'nm': N_('NM'),
|
||||||
'dbfinger' : N_('DB information via finger'),
|
'dbfinger': N_('DB information via finger'),
|
||||||
'db' : N_('DB information via HTTP'),
|
'db': N_('DB information via HTTP'),
|
||||||
'alioth' : N_('Alioth'),
|
'alioth': N_('Alioth'),
|
||||||
'wiki' : N_('Wiki'),
|
'wiki': N_('Wiki'),
|
||||||
'forum' : N_('Forum'),
|
'forum': N_('Forum'),
|
||||||
},
|
},
|
||||||
'miscellaneous' : {
|
'miscellaneous': {
|
||||||
'label' : N_('Miscellaneous'),
|
'label': N_('Miscellaneous'),
|
||||||
'debtags' : N_('debtags'),
|
'debtags': N_('debtags'),
|
||||||
'links' : N_('links'),
|
'links': N_('links'),
|
||||||
'website' : N_('Debian website'),
|
'website': N_('Debian website'),
|
||||||
'search' : N_('Debian search'),
|
'search': N_('Debian search'),
|
||||||
'gpgfinger' : N_('GPG public key via finger'),
|
'gpgfinger': N_('GPG public key via finger'),
|
||||||
'gpgweb' : N_('GPG public key via HTTP'),
|
'gpgweb': N_('GPG public key via HTTP'),
|
||||||
},
|
},
|
||||||
'ssh' : {
|
'ssh': {
|
||||||
'label' : N_('Information reachable via ssh (for DDs)'),
|
'label': N_('Information reachable via ssh (for Debian Members)'),
|
||||||
'owndndoms' : N_('owned debian.net domains'),
|
'owndndoms': N_('owned debian.net domains'),
|
||||||
'miainfo' : N_('<a href="http://wiki.debian.org/qa.debian.org/MIATeam">MIA</a> database information'),
|
'miainfo': N_('<a href="http://wiki.debian.org/qa.debian.org/'
|
||||||
'groupinfo' : N_('Group membership information'),
|
'MIATeam">MIA</a> database information'),
|
||||||
|
'groupinfo': N_('Group membership information'),
|
||||||
},
|
},
|
||||||
'ubuntu' : {
|
'ubuntu': {
|
||||||
'label' : N_('Ubuntu'),
|
'label': N_('Ubuntu'),
|
||||||
'ubuntudiff' : N_('Available patches from Ubuntu'),
|
'ubuntudiff': N_('Available patches from Ubuntu'),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def _get_label(self, section, url=None):
|
def _get_label(self, section, url=None):
|
||||||
if section in self._LABELS:
|
if section in self._LABELS:
|
||||||
if url:
|
if url:
|
||||||
|
@ -131,11 +132,10 @@ developer name on all bug logs)'),
|
||||||
return "%s.%s" % (section, url)
|
return "%s.%s" % (section, url)
|
||||||
return section
|
return section
|
||||||
|
|
||||||
|
|
||||||
def index(self):
|
def index(self):
|
||||||
# Return a rendered template
|
"""
|
||||||
# return render('/some/template.mako')
|
Render the input form.
|
||||||
# or, Return a response
|
"""
|
||||||
return render('/showform.mako')
|
return render('/showform.mako')
|
||||||
|
|
||||||
def urllist(self):
|
def urllist(self):
|
||||||
|
@ -147,7 +147,7 @@ developer name on all bug logs)'),
|
||||||
languages=[lang[0:2] for lang in request.languages])
|
languages=[lang[0:2] for lang in request.languages])
|
||||||
form_result = schema.to_python(request.params)
|
form_result = schema.to_python(request.params)
|
||||||
except formencode.validators.Invalid, error:
|
except formencode.validators.Invalid, error:
|
||||||
c.messages = { 'errors' : error.unpack_errors() }
|
c.messages = {'errors': error.unpack_errors()}
|
||||||
return render('/showform.mako')
|
return render('/showform.mako')
|
||||||
fields = dddatabuilder.build_data(form_result['email'])
|
fields = dddatabuilder.build_data(form_result['email'])
|
||||||
rp = request.params.copy()
|
rp = request.params.copy()
|
||||||
|
@ -174,7 +174,7 @@ developer name on all bug logs)'),
|
||||||
languages=[lang[0:2] for lang in request.languages])
|
languages=[lang[0:2] for lang in request.languages])
|
||||||
form_result = schema.to_python(rp)
|
form_result = schema.to_python(rp)
|
||||||
except formencode.validators.Invalid, error:
|
except formencode.validators.Invalid, error:
|
||||||
c.messages = { 'errors' : error.unpack_errors() }
|
c.messages = {'errors': error.unpack_errors()}
|
||||||
return render('/showform.mako')
|
return render('/showform.mako')
|
||||||
if form_result['wikihomepage'] is None:
|
if form_result['wikihomepage'] is None:
|
||||||
log.debug('generate wikihomepage from name')
|
log.debug('generate wikihomepage from name')
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# DDPortfolio service ErrorController
|
# DDPortfolio service ErrorController
|
||||||
# Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
|
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||||
#
|
#
|
||||||
# This file is part of DDPortfolio service.
|
# This file is part of DDPortfolio service.
|
||||||
#
|
#
|
||||||
|
@ -30,8 +30,8 @@ from webhelpers.html.builder import literal
|
||||||
|
|
||||||
from ddportfolioservice.lib.base import BaseController
|
from ddportfolioservice.lib.base import BaseController
|
||||||
|
|
||||||
class ErrorController(BaseController):
|
|
||||||
|
|
||||||
|
class ErrorController(BaseController):
|
||||||
"""Generates error documents as and when they are required.
|
"""Generates error documents as and when they are required.
|
||||||
|
|
||||||
The ErrorDocuments middleware forwards to ErrorController when error
|
The ErrorDocuments middleware forwards to ErrorController when error
|
||||||
|
@ -39,16 +39,17 @@ class ErrorController(BaseController):
|
||||||
|
|
||||||
This behaviour can be altered by changing the parameters to the
|
This behaviour can be altered by changing the parameters to the
|
||||||
ErrorDocuments middleware in your config/middleware.py file.
|
ErrorDocuments middleware in your config/middleware.py file.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def document(self):
|
def document(self):
|
||||||
"""Render the error document"""
|
"""Render the error document"""
|
||||||
resp = request.environ.get('pylons.original_response')
|
resp = request.environ.get('pylons.original_response')
|
||||||
content = literal(resp.body) or cgi.escape(request.GET.get('message', ''))
|
content = literal(resp.body) or cgi.escape(
|
||||||
|
request.GET.get('message', ''))
|
||||||
page = error_document_template % \
|
page = error_document_template % \
|
||||||
dict(prefix=request.environ.get('SCRIPT_NAME', ''),
|
dict(prefix=request.environ.get('SCRIPT_NAME', ''),
|
||||||
code=cgi.escape(request.GET.get('code', str(resp.status_int))),
|
code=cgi.escape(
|
||||||
|
request.GET.get('code', str(resp.status_int))),
|
||||||
message=content)
|
message=content)
|
||||||
return page
|
return page
|
||||||
|
|
||||||
|
@ -61,8 +62,9 @@ class ErrorController(BaseController):
|
||||||
return self._serve_file('/'.join(['media/style', id]))
|
return self._serve_file('/'.join(['media/style', id]))
|
||||||
|
|
||||||
def _serve_file(self, path):
|
def _serve_file(self, path):
|
||||||
"""Call Paste's FileApp (a WSGI application) to serve the file
|
"""
|
||||||
at the specified path
|
Call Paste's FileApp (a WSGI application) to serve the file at
|
||||||
|
the specified path
|
||||||
"""
|
"""
|
||||||
request.environ['PATH_INFO'] = '/%s' % path
|
request.environ['PATH_INFO'] = '/%s' % path
|
||||||
return forward(PkgResourcesParser('pylons', 'pylons'))
|
return forward(PkgResourcesParser('pylons', 'pylons'))
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# DDPortfolio service ShowformscriptController.
|
# DDPortfolio service ShowformscriptController.
|
||||||
# Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
|
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||||
#
|
#
|
||||||
# This file is part of DDPortfolio service.
|
# This file is part of DDPortfolio service.
|
||||||
#
|
#
|
||||||
|
@ -34,6 +34,7 @@ from ddportfolioservice.model import dddatabuilder
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class ShowformscriptsController(BaseController):
|
class ShowformscriptsController(BaseController):
|
||||||
"""This controller is used to support data entry in showform.
|
"""This controller is used to support data entry in showform.
|
||||||
|
|
||||||
|
@ -41,12 +42,17 @@ class ShowformscriptsController(BaseController):
|
||||||
responses for autocompletion of fields."""
|
responses for autocompletion of fields."""
|
||||||
|
|
||||||
def index(self):
|
def index(self):
|
||||||
"""This action generates the helper script for the showform
|
"""
|
||||||
page."""
|
This action generates the helper script for the showform page.
|
||||||
|
"""
|
||||||
response.headers['Content-Type'] = 'text/javascript; charset=utf-8'
|
response.headers['Content-Type'] = 'text/javascript; charset=utf-8'
|
||||||
return render('/showformscript.mako')
|
return render('/showformscript.mako')
|
||||||
|
|
||||||
def fetchdddata(self):
|
def fetchdddata(self):
|
||||||
|
"""
|
||||||
|
This action fetches the data for a given mail address and
|
||||||
|
returns them as JSON.
|
||||||
|
"""
|
||||||
schema = DDDataRequest()
|
schema = DDDataRequest()
|
||||||
try:
|
try:
|
||||||
formencode.api.set_stdtranslation(
|
formencode.api.set_stdtranslation(
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# DDPortfolio service TemplateController
|
# DDPortfolio service TemplateController
|
||||||
# Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
|
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||||
#
|
#
|
||||||
# This file is part of DDPortfolio service.
|
# This file is part of DDPortfolio service.
|
||||||
#
|
#
|
||||||
|
@ -22,6 +22,7 @@
|
||||||
#
|
#
|
||||||
from ddportfolioservice.lib.base import BaseController
|
from ddportfolioservice.lib.base import BaseController
|
||||||
|
|
||||||
|
|
||||||
class TemplateController(BaseController):
|
class TemplateController(BaseController):
|
||||||
|
|
||||||
def view(self, url):
|
def view(self, url):
|
||||||
|
|
|
@ -1,34 +1,34 @@
|
||||||
# Translations template for ddportfolioservice.
|
# Translations template for ddportfolioservice.
|
||||||
# Copyright (C) 2011 ORGANIZATION
|
# Copyright (C) 2012 ORGANIZATION
|
||||||
# This file is distributed under the same license as the ddportfolioservice
|
# This file is distributed under the same license as the ddportfolioservice
|
||||||
# project.
|
# project.
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||||
#
|
#
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ddportfolioservice 0.2.1\n"
|
"Project-Id-Version: ddportfolioservice 0.2.1\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2011-03-06 17:30+0100\n"
|
"POT-Creation-Date: 2012-01-07 01:16+0100\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 0.9.4\n"
|
"Generated-By: Babel 0.9.5\n"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:41
|
#: ddportfolioservice/controllers/ddportfolio.py:41
|
||||||
msgid "Overview"
|
msgid "Overview"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:42
|
#: ddportfolioservice/controllers/ddportfolio.py:42
|
||||||
msgid "Debian Developer's Package Overview"
|
msgid "Debian Member's Package Overview"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:43
|
#: ddportfolioservice/controllers/ddportfolio.py:43
|
||||||
msgid ""
|
msgid ""
|
||||||
"Debian Developer's Package Overview\n"
|
"Debian Member's Package Overview\n"
|
||||||
"... showing all email addresses"
|
"... showing all email addresses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -79,152 +79,152 @@ msgstr ""
|
||||||
msgid "buildd.d.o"
|
msgid "buildd.d.o"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:65
|
#: ddportfolioservice/controllers/ddportfolio.py:64
|
||||||
msgid "igloo"
|
msgid "igloo"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:68
|
#: ddportfolioservice/controllers/ddportfolio.py:67
|
||||||
msgid "Quality Assurance"
|
msgid "Quality Assurance"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:69
|
#: ddportfolioservice/controllers/ddportfolio.py:68
|
||||||
msgid "lintian reports"
|
msgid "lintian reports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:70
|
#: ddportfolioservice/controllers/ddportfolio.py:69
|
||||||
msgid "full lintian reports (i.e. including \"info\"-level messages)"
|
msgid "full lintian reports (i.e. including \"info\"-level messages)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:72
|
#: ddportfolioservice/controllers/ddportfolio.py:71
|
||||||
msgid "DEHS (Debian External Health Status)"
|
msgid "DEHS (Debian External Health Status)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:73
|
#: ddportfolioservice/controllers/ddportfolio.py:72
|
||||||
msgid "piuparts"
|
msgid "piuparts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:74
|
#: ddportfolioservice/controllers/ddportfolio.py:73
|
||||||
msgid "Debian patch tracking system"
|
msgid "Debian patch tracking system"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:77
|
#: ddportfolioservice/controllers/ddportfolio.py:76
|
||||||
msgid "Upload"
|
msgid "Upload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:78
|
#: ddportfolioservice/controllers/ddportfolio.py:77
|
||||||
msgid ""
|
msgid ""
|
||||||
"keylog (per-key upload list)\n"
|
"keylog (per-key upload list)\n"
|
||||||
"(note: uses key fingerprint)"
|
"(note: uses key fingerprint)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:82
|
#: ddportfolioservice/controllers/ddportfolio.py:81
|
||||||
msgid "Mailing Lists"
|
msgid "Mailing Lists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:83
|
#: ddportfolioservice/controllers/ddportfolio.py:82
|
||||||
msgid "lists.d.o"
|
msgid "lists.d.o"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:84
|
#: ddportfolioservice/controllers/ddportfolio.py:83
|
||||||
msgid "lists.a.d.o"
|
msgid "lists.a.d.o"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:85
|
#: ddportfolioservice/controllers/ddportfolio.py:84
|
||||||
msgid "gmane"
|
msgid "gmane"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:88
|
#: ddportfolioservice/controllers/ddportfolio.py:87
|
||||||
msgid "Files"
|
msgid "Files"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:89
|
#: ddportfolioservice/controllers/ddportfolio.py:88
|
||||||
msgid "people.d.o"
|
msgid "people.d.o"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:90
|
#: ddportfolioservice/controllers/ddportfolio.py:89
|
||||||
msgid "oldpeople"
|
msgid "oldpeople"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:91
|
#: ddportfolioservice/controllers/ddportfolio.py:90
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:98
|
#: ddportfolioservice/controllers/ddportfolio.py:97
|
||||||
msgid "Alioth"
|
msgid "Alioth"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:94
|
#: ddportfolioservice/controllers/ddportfolio.py:93
|
||||||
msgid "Membership"
|
msgid "Membership"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:95
|
#: ddportfolioservice/controllers/ddportfolio.py:94
|
||||||
msgid "NM"
|
msgid "NM"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:96
|
#: ddportfolioservice/controllers/ddportfolio.py:95
|
||||||
msgid "DB information via finger"
|
msgid "DB information via finger"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:97
|
#: ddportfolioservice/controllers/ddportfolio.py:96
|
||||||
msgid "DB information via HTTP"
|
msgid "DB information via HTTP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:99
|
#: ddportfolioservice/controllers/ddportfolio.py:98
|
||||||
msgid "Wiki"
|
msgid "Wiki"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:100
|
#: ddportfolioservice/controllers/ddportfolio.py:99
|
||||||
msgid "Forum"
|
msgid "Forum"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:103
|
#: ddportfolioservice/controllers/ddportfolio.py:102
|
||||||
msgid "Miscellaneous"
|
msgid "Miscellaneous"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:104
|
#: ddportfolioservice/controllers/ddportfolio.py:103
|
||||||
msgid "debtags"
|
msgid "debtags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:105
|
#: ddportfolioservice/controllers/ddportfolio.py:104
|
||||||
msgid "links"
|
msgid "links"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:106
|
#: ddportfolioservice/controllers/ddportfolio.py:105
|
||||||
msgid "Debian website"
|
msgid "Debian website"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:107
|
#: ddportfolioservice/controllers/ddportfolio.py:106
|
||||||
msgid "Debian search"
|
msgid "Debian search"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:108
|
#: ddportfolioservice/controllers/ddportfolio.py:107
|
||||||
msgid "GPG public key via finger"
|
msgid "GPG public key via finger"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:109
|
#: ddportfolioservice/controllers/ddportfolio.py:108
|
||||||
msgid "GPG public key via HTTP"
|
msgid "GPG public key via HTTP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:112
|
#: ddportfolioservice/controllers/ddportfolio.py:111
|
||||||
msgid "Information reachable via ssh (for DDs)"
|
msgid "Information reachable via ssh (for Debian Members)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:113
|
#: ddportfolioservice/controllers/ddportfolio.py:112
|
||||||
msgid "owned debian.net domains"
|
msgid "owned debian.net domains"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:114
|
#: ddportfolioservice/controllers/ddportfolio.py:113
|
||||||
msgid ""
|
msgid ""
|
||||||
"<a href=\"http://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> database "
|
"<a href=\"http://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> database "
|
||||||
"information"
|
"information"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:115
|
#: ddportfolioservice/controllers/ddportfolio.py:114
|
||||||
msgid "Group membership information"
|
msgid "Group membership information"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:118
|
#: ddportfolioservice/controllers/ddportfolio.py:117
|
||||||
msgid "Ubuntu"
|
msgid "Ubuntu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:119
|
#: ddportfolioservice/controllers/ddportfolio.py:118
|
||||||
msgid "Available patches from Ubuntu"
|
msgid "Available patches from Ubuntu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -245,7 +245,7 @@ msgid "Debian user name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/model/urlbuilder.py:44
|
#: ddportfolioservice/model/urlbuilder.py:44
|
||||||
msgid "Non DD email address"
|
msgid "Non Debian email address"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/model/urlbuilder.py:45
|
#: ddportfolioservice/model/urlbuilder.py:45
|
||||||
|
@ -260,7 +260,7 @@ msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/templates/base.mako:26
|
#: ddportfolioservice/templates/base.mako:26
|
||||||
#: ddportfolioservice/templates/base.mako:34
|
#: ddportfolioservice/templates/base.mako:34
|
||||||
msgid "Debian Developer Portfolio Service"
|
msgid "Debian Member Portfolio Service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/templates/base.mako:32
|
#: ddportfolioservice/templates/base.mako:32
|
||||||
|
@ -272,7 +272,7 @@ msgid ""
|
||||||
"This service has been inspired by Stefano Zacchiroli's <a "
|
"This service has been inspired by Stefano Zacchiroli's <a "
|
||||||
"href=\"http://wiki.debian.org/DDPortfolio\">DDPortfolio page in the Debian "
|
"href=\"http://wiki.debian.org/DDPortfolio\">DDPortfolio page in the Debian "
|
||||||
"Wiki</a>. You can create a set of customized links leading to a Debian "
|
"Wiki</a>. You can create a set of customized links leading to a Debian "
|
||||||
"Developer's or package maintainer's information regarding Debian."
|
"Member's or package maintainer's information regarding Debian."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/templates/base.mako:46
|
#: ddportfolioservice/templates/base.mako:46
|
||||||
|
@ -292,7 +292,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/templates/base.mako:49
|
#: ddportfolioservice/templates/base.mako:49
|
||||||
msgid "Copyright © 2009, 2010, 2011 Jan Dittberner"
|
msgid "Copyright © 2009, 2010, 2011, 2012 Jan Dittberner"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/templates/showform.mako:24
|
#: ddportfolioservice/templates/showform.mako:24
|
||||||
|
@ -301,7 +301,7 @@ msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/templates/showform.mako:30
|
#: ddportfolioservice/templates/showform.mako:30
|
||||||
#: ddportfolioservice/templates/showurls.mako:28
|
#: ddportfolioservice/templates/showurls.mako:28
|
||||||
msgid "Debian Developer Portfolio"
|
msgid "Debian Member Portfolio"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/templates/showform.mako:36
|
#: ddportfolioservice/templates/showform.mako:36
|
||||||
|
@ -325,7 +325,7 @@ msgid "Debian user name:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/templates/showform.mako:94
|
#: ddportfolioservice/templates/showform.mako:94
|
||||||
msgid "Non DD email address:"
|
msgid "Non Debian email address:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ddportfolioservice/templates/showform.mako:109
|
#: ddportfolioservice/templates/showform.mako:109
|
||||||
|
|
Binary file not shown.
|
@ -9,29 +9,30 @@ msgstr ""
|
||||||
"Project-Id-Version: ddportfolioservice 0.2.1\n"
|
"Project-Id-Version: ddportfolioservice 0.2.1\n"
|
||||||
"Report-Msgid-Bugs-To: jan@dittberner.info\n"
|
"Report-Msgid-Bugs-To: jan@dittberner.info\n"
|
||||||
"POT-Creation-Date: 2009-01-20 23:13+0100\n"
|
"POT-Creation-Date: 2009-01-20 23:13+0100\n"
|
||||||
"PO-Revision-Date: 2011-03-06 17:31+0100\n"
|
"PO-Revision-Date: 2012-01-07 01:16+0100\n"
|
||||||
"Last-Translator: Jan Dittberner <jan@dittberner.info>\n"
|
"Last-Translator: Jan Dittberner <jan@dittberner.info>\n"
|
||||||
"Language-Team: de <de@li.org>\n"
|
"Language-Team: de <de@li.org>\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 0.9.4\n"
|
"Generated-By: Babel 0.9.5\n"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:41
|
#: ddportfolioservice/controllers/ddportfolio.py:41
|
||||||
msgid "Overview"
|
msgid "Overview"
|
||||||
msgstr "Überblick"
|
msgstr "Überblick"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:42
|
#: ddportfolioservice/controllers/ddportfolio.py:42
|
||||||
msgid "Debian Developer's Package Overview"
|
msgid "Debian Member's Package Overview"
|
||||||
msgstr "Paketübersicht des Debian-Entwicklers"
|
msgstr "Paketübersicht des Debian-Mitglieds"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:43
|
#: ddportfolioservice/controllers/ddportfolio.py:43
|
||||||
|
#| addresses"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Debian Developer's Package Overview\n"
|
"Debian Member's Package Overview\n"
|
||||||
"... showing all email addresses"
|
"... showing all email addresses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Paketübersicht des Debian-Entwicklers\n"
|
"Paketübersicht des Debian-Mitglieds\n"
|
||||||
"... mit allen E-Mailadressen"
|
"... mit allen E-Mailadressen"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:47
|
#: ddportfolioservice/controllers/ddportfolio.py:47
|
||||||
|
@ -83,45 +84,45 @@ msgstr "Graph der Entwicklung offener Fehlerberichte über ein Jahr"
|
||||||
msgid "Build"
|
msgid "Build"
|
||||||
msgstr "Build"
|
msgstr "Build"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:62
|
#: ddportfolioservice/controllers/ddportfolio.py:63
|
||||||
msgid "buildd.d.o"
|
msgid "buildd.d.o"
|
||||||
msgstr "buildd.d.o"
|
msgstr "buildd.d.o"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:65
|
#: ddportfolioservice/controllers/ddportfolio.py:64
|
||||||
msgid "igloo"
|
msgid "igloo"
|
||||||
msgstr "Igloo"
|
msgstr "Igloo"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:68
|
#: ddportfolioservice/controllers/ddportfolio.py:67
|
||||||
msgid "Quality Assurance"
|
msgid "Quality Assurance"
|
||||||
msgstr "Qualitätssicherung"
|
msgstr "Qualitätssicherung"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:69
|
#: ddportfolioservice/controllers/ddportfolio.py:68
|
||||||
msgid "lintian reports"
|
msgid "lintian reports"
|
||||||
msgstr "Lintian-Berichte"
|
msgstr "Lintian-Berichte"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:70
|
#: ddportfolioservice/controllers/ddportfolio.py:69
|
||||||
msgid "full lintian reports (i.e. including \"info\"-level messages)"
|
msgid "full lintian reports (i.e. including \"info\"-level messages)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"vollständige Lintian-Berichte (d.h. inklusive Meldungen der Stufe "
|
"vollständige Lintian-Berichte (d.h. inklusive Meldungen der Stufe "
|
||||||
"\"info\")"
|
"\"info\")"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:72
|
#: ddportfolioservice/controllers/ddportfolio.py:71
|
||||||
msgid "DEHS (Debian External Health Status)"
|
msgid "DEHS (Debian External Health Status)"
|
||||||
msgstr "DEHS (Debian External Health Status)"
|
msgstr "DEHS (Debian External Health Status)"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:73
|
#: ddportfolioservice/controllers/ddportfolio.py:72
|
||||||
msgid "piuparts"
|
msgid "piuparts"
|
||||||
msgstr "piuparts"
|
msgstr "piuparts"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:74
|
#: ddportfolioservice/controllers/ddportfolio.py:73
|
||||||
msgid "Debian patch tracking system"
|
msgid "Debian patch tracking system"
|
||||||
msgstr "Debian Nachverfolgungssystem für Patches"
|
msgstr "Debian Nachverfolgungssystem für Patches"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:77
|
#: ddportfolioservice/controllers/ddportfolio.py:76
|
||||||
msgid "Upload"
|
msgid "Upload"
|
||||||
msgstr "Upload"
|
msgstr "Upload"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:78
|
#: ddportfolioservice/controllers/ddportfolio.py:77
|
||||||
msgid ""
|
msgid ""
|
||||||
"keylog (per-key upload list)\n"
|
"keylog (per-key upload list)\n"
|
||||||
"(note: uses key fingerprint)"
|
"(note: uses key fingerprint)"
|
||||||
|
@ -129,100 +130,100 @@ msgstr ""
|
||||||
"Keylog\n"
|
"Keylog\n"
|
||||||
"(Anmerkung: verwendet den Fingerabdruck des Schlüssels)"
|
"(Anmerkung: verwendet den Fingerabdruck des Schlüssels)"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:82
|
#: ddportfolioservice/controllers/ddportfolio.py:81
|
||||||
msgid "Mailing Lists"
|
msgid "Mailing Lists"
|
||||||
msgstr "Mailinglisten"
|
msgstr "Mailinglisten"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:83
|
#: ddportfolioservice/controllers/ddportfolio.py:82
|
||||||
msgid "lists.d.o"
|
msgid "lists.d.o"
|
||||||
msgstr "lists.d.o"
|
msgstr "lists.d.o"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:84
|
#: ddportfolioservice/controllers/ddportfolio.py:83
|
||||||
msgid "lists.a.d.o"
|
msgid "lists.a.d.o"
|
||||||
msgstr "lists.a.d.o"
|
msgstr "lists.a.d.o"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:85
|
#: ddportfolioservice/controllers/ddportfolio.py:84
|
||||||
msgid "gmane"
|
msgid "gmane"
|
||||||
msgstr "Gmane"
|
msgstr "Gmane"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:88
|
#: ddportfolioservice/controllers/ddportfolio.py:87
|
||||||
msgid "Files"
|
msgid "Files"
|
||||||
msgstr "Dateien"
|
msgstr "Dateien"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:89
|
#: ddportfolioservice/controllers/ddportfolio.py:88
|
||||||
msgid "people.d.o"
|
msgid "people.d.o"
|
||||||
msgstr "people.d.o"
|
msgstr "people.d.o"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:90
|
#: ddportfolioservice/controllers/ddportfolio.py:89
|
||||||
msgid "oldpeople"
|
msgid "oldpeople"
|
||||||
msgstr "oldpeople"
|
msgstr "oldpeople"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:91
|
#: ddportfolioservice/controllers/ddportfolio.py:90
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:98
|
#: ddportfolioservice/controllers/ddportfolio.py:97
|
||||||
msgid "Alioth"
|
msgid "Alioth"
|
||||||
msgstr "Alioth"
|
msgstr "Alioth"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:94
|
#: ddportfolioservice/controllers/ddportfolio.py:93
|
||||||
msgid "Membership"
|
msgid "Membership"
|
||||||
msgstr "Mitgliedschaft"
|
msgstr "Mitgliedschaft"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:95
|
#: ddportfolioservice/controllers/ddportfolio.py:94
|
||||||
msgid "NM"
|
msgid "NM"
|
||||||
msgstr "NM"
|
msgstr "NM"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:96
|
#: ddportfolioservice/controllers/ddportfolio.py:95
|
||||||
msgid "DB information via finger"
|
msgid "DB information via finger"
|
||||||
msgstr "DB-Informationen per finger"
|
msgstr "DB-Informationen per finger"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:97
|
#: ddportfolioservice/controllers/ddportfolio.py:96
|
||||||
msgid "DB information via HTTP"
|
msgid "DB information via HTTP"
|
||||||
msgstr "DB-Informationen per HTTP"
|
msgstr "DB-Informationen per HTTP"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:99
|
#: ddportfolioservice/controllers/ddportfolio.py:98
|
||||||
msgid "Wiki"
|
msgid "Wiki"
|
||||||
msgstr "Wiki"
|
msgstr "Wiki"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:100
|
#: ddportfolioservice/controllers/ddportfolio.py:99
|
||||||
msgid "Forum"
|
msgid "Forum"
|
||||||
msgstr "Forum"
|
msgstr "Forum"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:103
|
#: ddportfolioservice/controllers/ddportfolio.py:102
|
||||||
msgid "Miscellaneous"
|
msgid "Miscellaneous"
|
||||||
msgstr "Sonstiges"
|
msgstr "Sonstiges"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:104
|
#: ddportfolioservice/controllers/ddportfolio.py:103
|
||||||
msgid "debtags"
|
msgid "debtags"
|
||||||
msgstr "debtags"
|
msgstr "debtags"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:105
|
#: ddportfolioservice/controllers/ddportfolio.py:104
|
||||||
msgid "links"
|
msgid "links"
|
||||||
msgstr "Links"
|
msgstr "Links"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:106
|
#: ddportfolioservice/controllers/ddportfolio.py:105
|
||||||
msgid "Debian website"
|
msgid "Debian website"
|
||||||
msgstr "Debian Webseite"
|
msgstr "Debian Webseite"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:107
|
#: ddportfolioservice/controllers/ddportfolio.py:106
|
||||||
msgid "Debian search"
|
msgid "Debian search"
|
||||||
msgstr "Debian-Suche"
|
msgstr "Debian-Suche"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:108
|
#: ddportfolioservice/controllers/ddportfolio.py:107
|
||||||
msgid "GPG public key via finger"
|
msgid "GPG public key via finger"
|
||||||
msgstr "öffentlicher GPG-Schlüssel per finger"
|
msgstr "öffentlicher GPG-Schlüssel per finger"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:109
|
#: ddportfolioservice/controllers/ddportfolio.py:108
|
||||||
msgid "GPG public key via HTTP"
|
msgid "GPG public key via HTTP"
|
||||||
msgstr "öffentlicher GPG-Schlüssel per HTTP"
|
msgstr "öffentlicher GPG-Schlüssel per HTTP"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:112
|
#: ddportfolioservice/controllers/ddportfolio.py:111
|
||||||
msgid "Information reachable via ssh (for DDs)"
|
msgid "Information reachable via ssh (for Debian Members)"
|
||||||
msgstr "Per ssh erreichbare Informationen (für DDs)"
|
msgstr "Per ssh erreichbare Informationen (für Debian Mitglieder)"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:113
|
#: ddportfolioservice/controllers/ddportfolio.py:112
|
||||||
msgid "owned debian.net domains"
|
msgid "owned debian.net domains"
|
||||||
msgstr "Besitz von debian.net-Domains"
|
msgstr "Besitz von debian.net-Domains"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:114
|
#: ddportfolioservice/controllers/ddportfolio.py:113
|
||||||
msgid ""
|
msgid ""
|
||||||
"<a href=\"http://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> database"
|
"<a href=\"http://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> database"
|
||||||
" information"
|
" information"
|
||||||
|
@ -230,15 +231,15 @@ msgstr ""
|
||||||
"Informationen in der <a "
|
"Informationen in der <a "
|
||||||
"href=\"http://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a>-Datenbank"
|
"href=\"http://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a>-Datenbank"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:115
|
#: ddportfolioservice/controllers/ddportfolio.py:114
|
||||||
msgid "Group membership information"
|
msgid "Group membership information"
|
||||||
msgstr "Information über Gruppenmitgliedschaften"
|
msgstr "Information über Gruppenmitgliedschaften"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:118
|
#: ddportfolioservice/controllers/ddportfolio.py:117
|
||||||
msgid "Ubuntu"
|
msgid "Ubuntu"
|
||||||
msgstr "Ubuntu"
|
msgstr "Ubuntu"
|
||||||
|
|
||||||
#: ddportfolioservice/controllers/ddportfolio.py:119
|
#: ddportfolioservice/controllers/ddportfolio.py:118
|
||||||
msgid "Available patches from Ubuntu"
|
msgid "Available patches from Ubuntu"
|
||||||
msgstr "Verfügbare Patches aus Ubuntu"
|
msgstr "Verfügbare Patches aus Ubuntu"
|
||||||
|
|
||||||
|
@ -259,8 +260,8 @@ msgid "Debian user name"
|
||||||
msgstr "Debian-Benutzername"
|
msgstr "Debian-Benutzername"
|
||||||
|
|
||||||
#: ddportfolioservice/model/urlbuilder.py:44
|
#: ddportfolioservice/model/urlbuilder.py:44
|
||||||
msgid "Non DD email address"
|
msgid "Non Debian email address"
|
||||||
msgstr "Nicht-DD E-Mailadresse:"
|
msgstr "Nicht-Debian-E-Mailadresse"
|
||||||
|
|
||||||
#: ddportfolioservice/model/urlbuilder.py:45
|
#: ddportfolioservice/model/urlbuilder.py:45
|
||||||
msgid "Alioth user name"
|
msgid "Alioth user name"
|
||||||
|
@ -274,8 +275,8 @@ msgstr "Fehlende Eingabe: %s"
|
||||||
|
|
||||||
#: ddportfolioservice/templates/base.mako:26
|
#: ddportfolioservice/templates/base.mako:26
|
||||||
#: ddportfolioservice/templates/base.mako:34
|
#: ddportfolioservice/templates/base.mako:34
|
||||||
msgid "Debian Developer Portfolio Service"
|
msgid "Debian Member Portfolio Service"
|
||||||
msgstr "Debian-Entwicklerportfolioservice"
|
msgstr "Debian-Mitglieder-Portfolioservice"
|
||||||
|
|
||||||
#: ddportfolioservice/templates/base.mako:32
|
#: ddportfolioservice/templates/base.mako:32
|
||||||
msgid "Debian Logo"
|
msgid "Debian Logo"
|
||||||
|
@ -286,12 +287,12 @@ msgid ""
|
||||||
"This service has been inspired by Stefano Zacchiroli's <a "
|
"This service has been inspired by Stefano Zacchiroli's <a "
|
||||||
"href=\"http://wiki.debian.org/DDPortfolio\">DDPortfolio page in the "
|
"href=\"http://wiki.debian.org/DDPortfolio\">DDPortfolio page in the "
|
||||||
"Debian Wiki</a>. You can create a set of customized links leading to a "
|
"Debian Wiki</a>. You can create a set of customized links leading to a "
|
||||||
"Debian Developer's or package maintainer's information regarding Debian."
|
"Debian Member's or package maintainer's information regarding Debian."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Dieser Dienst wurde durch Stefano Zacchirolis <a "
|
"Dieser Dienst wurde durch Stefano Zacchirolis <a "
|
||||||
"href=\"http://wiki.debian.org/DDPortfolio\">DDPortfolio-Seite im Debian "
|
"href=\"http://wiki.debian.org/DDPortfolio\">DDPortfolio-Seite im Debian "
|
||||||
"Wiki</a> inspiriert. Mit dem Dienst können personalisierte Links zu "
|
"Wiki</a> inspiriert. Mit dem Dienst können personalisierte Links zu "
|
||||||
"Informationen im Bezug auf Debian für Debian-Entwickler und Paketbetreuer"
|
"Informationen im Bezug auf Debian für Debian-Mitglieder und Paketbetreuer"
|
||||||
" erzeugt werden."
|
" erzeugt werden."
|
||||||
|
|
||||||
#: ddportfolioservice/templates/base.mako:46
|
#: ddportfolioservice/templates/base.mako:46
|
||||||
|
@ -321,8 +322,8 @@ msgstr ""
|
||||||
"klonen."
|
"klonen."
|
||||||
|
|
||||||
#: ddportfolioservice/templates/base.mako:49
|
#: ddportfolioservice/templates/base.mako:49
|
||||||
msgid "Copyright © 2009, 2010, 2011 Jan Dittberner"
|
msgid "Copyright © 2009, 2010, 2011, 2012 Jan Dittberner"
|
||||||
msgstr "Copyright © 2009, 2010, 2011 Jan Dittberner"
|
msgstr "Copyright © 2009, 2010, 2011, 2012 Jan Dittberner"
|
||||||
|
|
||||||
#: ddportfolioservice/templates/showform.mako:24
|
#: ddportfolioservice/templates/showform.mako:24
|
||||||
msgid "Enter your personal information"
|
msgid "Enter your personal information"
|
||||||
|
@ -330,8 +331,8 @@ msgstr "Eingabe der persönlichen Informationen"
|
||||||
|
|
||||||
#: ddportfolioservice/templates/showform.mako:30
|
#: ddportfolioservice/templates/showform.mako:30
|
||||||
#: ddportfolioservice/templates/showurls.mako:28
|
#: ddportfolioservice/templates/showurls.mako:28
|
||||||
msgid "Debian Developer Portfolio"
|
msgid "Debian Member Portfolio"
|
||||||
msgstr "Debian-Entwicklerportfolio"
|
msgstr "Debian-Mitgliedererportfolio"
|
||||||
|
|
||||||
#: ddportfolioservice/templates/showform.mako:36
|
#: ddportfolioservice/templates/showform.mako:36
|
||||||
msgid "Email address:"
|
msgid "Email address:"
|
||||||
|
@ -354,8 +355,8 @@ msgid "Debian user name:"
|
||||||
msgstr "Debian-Benutzername:"
|
msgstr "Debian-Benutzername:"
|
||||||
|
|
||||||
#: ddportfolioservice/templates/showform.mako:94
|
#: ddportfolioservice/templates/showform.mako:94
|
||||||
msgid "Non DD email address:"
|
msgid "Non Debian email address:"
|
||||||
msgstr "Nicht-DD-E-Mailadresse"
|
msgstr "Nicht-Debian-E-Mailadresse"
|
||||||
|
|
||||||
#: ddportfolioservice/templates/showform.mako:109
|
#: ddportfolioservice/templates/showform.mako:109
|
||||||
msgid "Alioth user name:"
|
msgid "Alioth user name:"
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# DDPortfolio service application Globals
|
# DDPortfolio service application Globals
|
||||||
# Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
|
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||||
#
|
#
|
||||||
# This file is part of DDPortfolio service.
|
# This file is part of DDPortfolio service.
|
||||||
#
|
#
|
||||||
|
@ -25,17 +25,17 @@
|
||||||
from beaker.cache import CacheManager
|
from beaker.cache import CacheManager
|
||||||
from beaker.util import parse_cache_config_options
|
from beaker.util import parse_cache_config_options
|
||||||
|
|
||||||
|
|
||||||
class Globals(object):
|
class Globals(object):
|
||||||
|
"""
|
||||||
"""Globals acts as a container for objects available throughout the
|
Globals acts as a container for objects available throughout the
|
||||||
life of the application
|
life of the application
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, config):
|
def __init__(self, config):
|
||||||
"""One instance of Globals is created during application
|
"""
|
||||||
|
One instance of Globals is created during application
|
||||||
initialization and is available during requests via the
|
initialization and is available during requests via the
|
||||||
'app_globals' variable
|
'app_globals' variable
|
||||||
|
|
||||||
"""
|
"""
|
||||||
self.cache = CacheManager(**parse_cache_config_options(config))
|
self.cache = CacheManager(**parse_cache_config_options(config))
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# DDPortfolio service base controller
|
# DDPortfolio service base controller
|
||||||
# Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
|
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||||
#
|
#
|
||||||
# This file is part of DDPortfolio service.
|
# This file is part of DDPortfolio service.
|
||||||
#
|
#
|
||||||
|
@ -29,6 +29,7 @@ from pylons.controllers import WSGIController
|
||||||
from pylons.i18n import add_fallback
|
from pylons.i18n import add_fallback
|
||||||
from pylons.templating import render_mako as render
|
from pylons.templating import render_mako as render
|
||||||
|
|
||||||
|
|
||||||
class BaseController(WSGIController):
|
class BaseController(WSGIController):
|
||||||
|
|
||||||
def __call__(self, environ, start_response):
|
def __call__(self, environ, start_response):
|
||||||
|
@ -42,5 +43,5 @@ class BaseController(WSGIController):
|
||||||
add_fallback(lang)
|
add_fallback(lang)
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
c.messages = { 'errors': [], 'messages': [] }
|
c.messages = {'errors': [], 'messages': []}
|
||||||
return WSGIController.__call__(self, environ, start_response)
|
return WSGIController.__call__(self, environ, start_response)
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# DDPortfolio service form handling model
|
# DDPortfolio service form handling model
|
||||||
# Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
|
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||||
#
|
#
|
||||||
# This file is part of DDPortfolio service.
|
# This file is part of DDPortfolio service.
|
||||||
#
|
#
|
||||||
|
@ -22,6 +22,7 @@
|
||||||
#
|
#
|
||||||
import formencode
|
import formencode
|
||||||
|
|
||||||
|
|
||||||
class DeveloperData(formencode.Schema):
|
class DeveloperData(formencode.Schema):
|
||||||
"""Validation schema for DeveloperData."""
|
"""Validation schema for DeveloperData."""
|
||||||
allow_extra_fields = True
|
allow_extra_fields = True
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# DDPortfolio service key finder module
|
# DDPortfolio service key finder module
|
||||||
# Copyright (c) 2009 Jan Dittberner <jan@dittberner.info>
|
# Copyright (c) 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||||
#
|
#
|
||||||
# This file is part of DDPortfolio service.
|
# This file is part of DDPortfolio service.
|
||||||
#
|
#
|
||||||
|
@ -30,6 +30,7 @@ import time
|
||||||
db = None
|
db = None
|
||||||
cachetimestamp = 0
|
cachetimestamp = 0
|
||||||
|
|
||||||
|
|
||||||
def _get_keyring_cache():
|
def _get_keyring_cache():
|
||||||
global db, cachetimestamp
|
global db, cachetimestamp
|
||||||
if db is None or (time.time() - cachetimestamp) > 86300:
|
if db is None or (time.time() - cachetimestamp) > 86300:
|
||||||
|
@ -44,6 +45,7 @@ def _get_keyring_cache():
|
||||||
cachetimestamp = time.time()
|
cachetimestamp = time.time()
|
||||||
return db
|
return db
|
||||||
|
|
||||||
|
|
||||||
def _get_cached(cachekey):
|
def _get_cached(cachekey):
|
||||||
cache = _get_keyring_cache()
|
cache = _get_keyring_cache()
|
||||||
logging.debug('cache lookup for %s', cachekey)
|
logging.debug('cache lookup for %s', cachekey)
|
||||||
|
@ -52,25 +54,33 @@ def _get_cached(cachekey):
|
||||||
return cache[cachekey]
|
return cache[cachekey]
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def getFingerprintByEmail(email):
|
def getFingerprintByEmail(email):
|
||||||
"""Gets the fingerprints associated with the given email address
|
"""
|
||||||
if available."""
|
Gets the fingerprints associated with the given email address if
|
||||||
|
available.
|
||||||
|
"""
|
||||||
return _get_cached('fpr:email:%s' % email)
|
return _get_cached('fpr:email:%s' % email)
|
||||||
|
|
||||||
|
|
||||||
def getRealnameByEmail(email):
|
def getRealnameByEmail(email):
|
||||||
"""Gets the real names associated with the given email address if
|
"""
|
||||||
available."""
|
Gets the real names associated with the given email address if
|
||||||
|
available.
|
||||||
|
"""
|
||||||
return _get_cached('name:email:%s' % email)
|
return _get_cached('name:email:%s' % email)
|
||||||
|
|
||||||
|
|
||||||
def getLoginByEmail(email):
|
def getLoginByEmail(email):
|
||||||
"""Gets the logins associated with the given email address if
|
"""
|
||||||
available."""
|
Gets the logins associated with the given email address if
|
||||||
|
available.
|
||||||
|
"""
|
||||||
return _get_cached('login:email:%s' % email)
|
return _get_cached('login:email:%s' % email)
|
||||||
|
|
||||||
|
|
||||||
def getLoginByFingerprint(fpr):
|
def getLoginByFingerprint(fpr):
|
||||||
"""Gets the login associated with the given fingerprint if
|
"""
|
||||||
available."""
|
Gets the login associated with the given fingerprint if available.
|
||||||
|
"""
|
||||||
return _get_cached('login:fpr:%s' % fpr)
|
return _get_cached('login:fpr:%s' % fpr)
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# DDPortfolio service application key ring analyzer tool
|
# DDPortfolio service application key ring analyzer tool
|
||||||
# Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
|
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||||
#
|
#
|
||||||
# This file is part of DDPortfolio service.
|
# This file is part of DDPortfolio service.
|
||||||
#
|
#
|
||||||
|
@ -38,10 +38,13 @@ import sys
|
||||||
|
|
||||||
|
|
||||||
def _get_keyrings():
|
def _get_keyrings():
|
||||||
"""Gets the available keyring files from the keyring directory
|
"""
|
||||||
configured in ddportfolio.ini."""
|
Gets the available keyring files from the keyring directory
|
||||||
|
configured in ddportfolio.ini.
|
||||||
|
"""
|
||||||
my_config = ConfigParser.ConfigParser()
|
my_config = ConfigParser.ConfigParser()
|
||||||
my_config.readfp(pkg_resources.resource_stream(__name__, 'ddportfolio.ini'))
|
my_config.readfp(pkg_resources.resource_stream(
|
||||||
|
__name__, 'ddportfolio.ini'))
|
||||||
keyringdir = os.path.expanduser(my_config.get('DEFAULT', 'keyring.dir'))
|
keyringdir = os.path.expanduser(my_config.get('DEFAULT', 'keyring.dir'))
|
||||||
logging.debug("keyring dir is %s", keyringdir)
|
logging.debug("keyring dir is %s", keyringdir)
|
||||||
keyrings = glob.glob(os.path.join(keyringdir, '*.gpg'))
|
keyrings = glob.glob(os.path.join(keyringdir, '*.gpg'))
|
||||||
|
@ -51,20 +54,22 @@ def _get_keyrings():
|
||||||
|
|
||||||
|
|
||||||
def _parse_uid(uid):
|
def _parse_uid(uid):
|
||||||
"""Parse a uid of the form 'Real Name <email@example.com>' into
|
"""
|
||||||
email and realname parts."""
|
Parse a uid of the form 'Real Name <email@example.com>' into email
|
||||||
|
and realname parts.
|
||||||
|
"""
|
||||||
uid = uid.strip()
|
uid = uid.strip()
|
||||||
# First, strip comment
|
# First, strip comment
|
||||||
s = uid.find('(')
|
s = uid.find('(')
|
||||||
e = uid.find(')')
|
e = uid.find(')')
|
||||||
if s >= 0 and e >= 0:
|
if s >= 0 and e >= 0:
|
||||||
uid = uid[:s] + uid[e+1:]
|
uid = uid[:s] + uid[e + 1:]
|
||||||
s = uid.find('<')
|
s = uid.find('<')
|
||||||
e = uid.find('>')
|
e = uid.find('>')
|
||||||
email = None
|
email = None
|
||||||
if s >= 0 and e >= 0:
|
if s >= 0 and e >= 0:
|
||||||
email = uid[s+1:e]
|
email = uid[s + 1:e]
|
||||||
uid = uid[:s] + uid[e+1:]
|
uid = uid[:s] + uid[e + 1:]
|
||||||
uid = uid.strip()
|
uid = uid.strip()
|
||||||
if not email and uid.find('@') >= 0:
|
if not email and uid.find('@') >= 0:
|
||||||
email, uid = uid, email
|
email, uid = uid, email
|
||||||
|
@ -72,6 +77,7 @@ def _parse_uid(uid):
|
||||||
|
|
||||||
resultdict = {}
|
resultdict = {}
|
||||||
|
|
||||||
|
|
||||||
def _get_canonical(key):
|
def _get_canonical(key):
|
||||||
if not key in resultdict:
|
if not key in resultdict:
|
||||||
resultdict[key] = []
|
resultdict[key] = []
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# -*- coding: utf8 -*-
|
# -*- coding: utf8 -*-
|
||||||
#
|
#
|
||||||
# DDPortfolio service url builder
|
# DDPortfolio service url builder
|
||||||
# Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
|
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||||
#
|
#
|
||||||
# This file is part of DDPortfolio service.
|
# This file is part of DDPortfolio service.
|
||||||
#
|
#
|
||||||
|
@ -37,12 +37,12 @@ my_config = ConfigParser()
|
||||||
my_config.readfp(pkg_resources.resource_stream(__name__, 'ddportfolio.ini'))
|
my_config.readfp(pkg_resources.resource_stream(__name__, 'ddportfolio.ini'))
|
||||||
|
|
||||||
_FIELDNAMES_MAP = {
|
_FIELDNAMES_MAP = {
|
||||||
'email' : N_('Email address'),
|
'email': N_('Email address'),
|
||||||
'name' : N_('Name'),
|
'name': N_('Name'),
|
||||||
'gpgfp' : N_('GPG fingerprint'),
|
'gpgfp': N_('GPG fingerprint'),
|
||||||
'username' : N_('Debian user name'),
|
'username': N_('Debian user name'),
|
||||||
'nonddemail' : N_('Non DD email address'),
|
'nonddemail': N_('Non Debian email address'),
|
||||||
'aliothusername' : N_('Alioth user name'),
|
'aliothusername': N_('Alioth user name'),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -82,8 +82,9 @@ def build_urls(fields):
|
||||||
'urlbuilder.sections').split(',')]:
|
'urlbuilder.sections').split(',')]:
|
||||||
data.append(['section', section])
|
data.append(['section', section])
|
||||||
if my_config.has_option(section, 'urls'):
|
if my_config.has_option(section, 'urls'):
|
||||||
for entry in ([DDPortfolioEntry(my_config, section, url) for url in \
|
for entry in ([
|
||||||
my_config.get(section, 'urls').split(',')]):
|
DDPortfolioEntry(my_config, section, url) for url in \
|
||||||
|
my_config.get(section, 'urls').split(',')]):
|
||||||
try:
|
try:
|
||||||
data.append(
|
data.append(
|
||||||
['url', section, entry,
|
['url', section, entry,
|
||||||
|
|
|
@ -23,7 +23,7 @@ License along with this program. If not, see
|
||||||
</%doc>
|
</%doc>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>${_('Debian Developer Portfolio Service')}${self.titleaddon()}</title>
|
<title>${_('Debian Member Portfolio Service')}${self.titleaddon()}</title>
|
||||||
${h.stylesheet_link(h.url('/stylesheets/style.css'))}
|
${h.stylesheet_link(h.url('/stylesheets/style.css'))}
|
||||||
${self.extrahead()}
|
${self.extrahead()}
|
||||||
</head>
|
</head>
|
||||||
|
@ -31,10 +31,10 @@ License along with this program. If not, see
|
||||||
<div id="header">
|
<div id="header">
|
||||||
${h.image(h.url('/images/openlogo-100.jpg'), _('Debian Logo'), 100, 100,
|
${h.image(h.url('/images/openlogo-100.jpg'), _('Debian Logo'), 100, 100,
|
||||||
id='debianlogo')}
|
id='debianlogo')}
|
||||||
<h1>${_('Debian Developer Portfolio Service')}</h1>
|
<h1>${_('Debian Member Portfolio Service')}</h1>
|
||||||
<p>${h.literal(_('''This service has been inspired by Stefano Zacchiroli's <a href="http://wiki.debian.org/DDPortfolio">DDPortfolio page in the Debian Wiki</a>. You can create a set of customized links leading to a Debian Developer's or package maintainer's information regarding Debian.'''))}</p>
|
<p>${h.literal(_('''This service has been inspired by Stefano Zacchiroli's <a href="http://wiki.debian.org/DDPortfolio">DDPortfolio page in the Debian Wiki</a>. You can create a set of customized links leading to a Debian Member's or package maintainer's information regarding Debian.'''))}</p>
|
||||||
<p><script type="text/javascript">
|
<p><script type="text/javascript">
|
||||||
var flattr_url = 'http://ddportfolio.debian.net/';
|
var flattr_url = 'http://portfolio.debian.net/';
|
||||||
var flattr_btn='compact';
|
var flattr_btn='compact';
|
||||||
</script>
|
</script>
|
||||||
<script src="http://api.flattr.com/button/load.js" type="text/javascript"></script></p>
|
<script src="http://api.flattr.com/button/load.js" type="text/javascript"></script></p>
|
||||||
|
@ -46,7 +46,7 @@ License along with this program. If not, see
|
||||||
${h.image(h.url('/images/agplv3-88x31.png'), _('AGPL - Free Software'), 88, 31,
|
${h.image(h.url('/images/agplv3-88x31.png'), _('AGPL - Free Software'), 88, 31,
|
||||||
id='agpllogo')}
|
id='agpllogo')}
|
||||||
<p>${h.literal(_('''The service is available under the terms of the <a href="http://www.gnu.org/licenses/agpl.html">GNU Affero General Public License</a> as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. You can <a href="%(browseurl)s" title="Gitweb repository browser URL">browse the source code</a> or clone it from <a href="%(cloneurl)s" title="git clone URL">%(cloneurl)s</a> using <a href="http://git-scm.com/">git</a>.''') % dict((('browseurl', 'http://debianstuff.dittberner.info/gitweb.cgi?p=ddportfolioservice.git;a=summary'), ('cloneurl', 'http://debianstuff.dittberner.info/git/ddportfolioservice.git'))))}</p>
|
<p>${h.literal(_('''The service is available under the terms of the <a href="http://www.gnu.org/licenses/agpl.html">GNU Affero General Public License</a> as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. You can <a href="%(browseurl)s" title="Gitweb repository browser URL">browse the source code</a> or clone it from <a href="%(cloneurl)s" title="git clone URL">%(cloneurl)s</a> using <a href="http://git-scm.com/">git</a>.''') % dict((('browseurl', 'http://debianstuff.dittberner.info/gitweb.cgi?p=ddportfolioservice.git;a=summary'), ('cloneurl', 'http://debianstuff.dittberner.info/git/ddportfolioservice.git'))))}</p>
|
||||||
<p>${_(u'''Copyright © 2009, 2010, 2011 Jan Dittberner''')}</p>
|
<p>${_(u'''Copyright © 2009, 2010, 2011, 2012 Jan Dittberner''')}</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -27,7 +27,7 @@ License along with this program. If not, see
|
||||||
h.url(controller='showformscripts', action='index'))}</%def>
|
h.url(controller='showformscripts', action='index'))}</%def>
|
||||||
${h.form(h.url(action='urllist', controller='ddportfolio'), method='get')}
|
${h.form(h.url(action='urllist', controller='ddportfolio'), method='get')}
|
||||||
<fieldset id="ddportfolio">
|
<fieldset id="ddportfolio">
|
||||||
<legend>${_('Debian Developer Portfolio')}</legend>
|
<legend>${_('Debian Member Portfolio')}</legend>
|
||||||
<div id="emailfield" \
|
<div id="emailfield" \
|
||||||
% if 'email' in c.messages['errors']:
|
% if 'email' in c.messages['errors']:
|
||||||
class="witherrors" \
|
class="witherrors" \
|
||||||
|
@ -91,7 +91,7 @@ ${h.form(h.url(action='urllist', controller='ddportfolio'), method='get')}
|
||||||
class="witherrors" \
|
class="witherrors" \
|
||||||
% endif
|
% endif
|
||||||
>
|
>
|
||||||
<label for="nonddemail">${_('Non DD email address:') | h}
|
<label for="nonddemail">${_('Non Debian email address:') | h}
|
||||||
% if 'nonddemail' in c.messages['errors']:
|
% if 'nonddemail' in c.messages['errors']:
|
||||||
<br />
|
<br />
|
||||||
<span class="errormsg">${c.messages['errors']['nonddemail'] | h}</span>
|
<span class="errormsg">${c.messages['errors']['nonddemail'] | h}</span>
|
||||||
|
|
|
@ -25,7 +25,7 @@ License along with this program. If not, see
|
||||||
</%def>
|
</%def>
|
||||||
% if c.urldata:
|
% if c.urldata:
|
||||||
<fieldset id="ddportfolio">
|
<fieldset id="ddportfolio">
|
||||||
<legend>${_('Debian Developer Portfolio')}</legend>
|
<legend>${_('Debian Member Portfolio')}</legend>
|
||||||
<table id="urltable">
|
<table id="urltable">
|
||||||
<thead>
|
<thead>
|
||||||
<tr><th>${_('Usage')}</th><th>${_('URL')}</th></tr>
|
<tr><th>${_('Usage')}</th><th>${_('URL')}</th></tr>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# DDPortfolio service tests package
|
# DDPortfolio service tests package
|
||||||
# Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
|
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||||
#
|
#
|
||||||
# This file is part of DDPortfolio service.
|
# This file is part of DDPortfolio service.
|
||||||
#
|
#
|
||||||
|
@ -49,6 +49,7 @@ SetupCommand('setup-app').run([pylons.test.pylonsapp.config['__file__']])
|
||||||
|
|
||||||
environ = {}
|
environ = {}
|
||||||
|
|
||||||
|
|
||||||
class TestController(TestCase):
|
class TestController(TestCase):
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# DDPortfolio service DdportfolioController test
|
# DDPortfolio service DdportfolioController test
|
||||||
# Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
|
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||||
#
|
#
|
||||||
# This file is part of DDPortfolio service.
|
# This file is part of DDPortfolio service.
|
||||||
#
|
#
|
||||||
|
@ -22,8 +22,10 @@
|
||||||
#
|
#
|
||||||
from ddportfolioservice.tests import TestController, url
|
from ddportfolioservice.tests import TestController, url
|
||||||
|
|
||||||
|
|
||||||
class TestShowformscriptsController(TestController):
|
class TestShowformscriptsController(TestController):
|
||||||
|
|
||||||
def test_index(self):
|
def test_index(self):
|
||||||
response = self.app.get(url(controller='showformscripts', action='index'))
|
response = self.app.get(
|
||||||
|
url(controller='showformscripts', action='index'))
|
||||||
# Test response...
|
# Test response...
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# DDPortfolio service websetup
|
# DDPortfolio service websetup
|
||||||
# Copyright (c) 2009 Jan Dittberner <jan@dittberner.info>
|
# Copyright (c) 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||||
#
|
#
|
||||||
# This file is part of DDPortfolio service.
|
# This file is part of DDPortfolio service.
|
||||||
#
|
#
|
||||||
|
@ -31,6 +31,7 @@ from ddportfolioservice.config.environment import load_environment
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def setup_config(command, filename, section, vars):
|
def setup_config(command, filename, section, vars):
|
||||||
"""Place any commands to setup ddportfolioservice here"""
|
"""Place any commands to setup ddportfolioservice here"""
|
||||||
conf = appconfig('config:' + filename)
|
conf = appconfig('config:' + filename)
|
||||||
|
|
6
setup.py
6
setup.py
|
@ -2,7 +2,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# DDPortfolio service setup
|
# DDPortfolio service setup
|
||||||
# Copyright © 2009, 2010, 2011 Jan Dittberner <jan@dittberner.info>
|
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||||
#
|
#
|
||||||
# This file is part of DDPortfolio service.
|
# This file is part of DDPortfolio service.
|
||||||
#
|
#
|
||||||
|
@ -29,7 +29,7 @@ except ImportError:
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='ddportfolioservice',
|
name='ddportfolioservice',
|
||||||
version='0.2.1',
|
version='0.2.2',
|
||||||
description='service to create DDPortfolio URLs',
|
description='service to create DDPortfolio URLs',
|
||||||
long_description="""This is a service implementation that
|
long_description="""This is a service implementation that
|
||||||
returns a set of personalized URLs as outlined in
|
returns a set of personalized URLs as outlined in
|
||||||
|
@ -48,7 +48,7 @@ array of URLs.""",
|
||||||
author_email='jan@dittberner.info',
|
author_email='jan@dittberner.info',
|
||||||
url='http://debian-stuff.dittberner.info/ddportfolioservice',
|
url='http://debian-stuff.dittberner.info/ddportfolioservice',
|
||||||
license='AGPL-3.0+',
|
license='AGPL-3.0+',
|
||||||
install_requires=["Pylons>=0.10rc1"],
|
install_requires=["Pylons>=0.10rc1", 'babel>=0.9.4'],
|
||||||
packages=find_packages(exclude=['ez_setup']),
|
packages=find_packages(exclude=['ez_setup']),
|
||||||
include_package_data=True,
|
include_package_data=True,
|
||||||
test_suite='nose.collector',
|
test_suite='nose.collector',
|
||||||
|
|
Loading…
Reference in a new issue