forked from jan/debianmemberportfolio
rename package directory
This commit is contained in:
parent
8299b9aca0
commit
dd64ba59b4
47 changed files with 0 additions and 0 deletions
22
debianmemberportfolio/__init__.py
Normal file
22
debianmemberportfolio/__init__.py
Normal file
|
@ -0,0 +1,22 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# DDPortfolio service package
|
||||
# Copyright (c) 2009 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# 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
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
22
debianmemberportfolio/config/__init__.py
Normal file
22
debianmemberportfolio/config/__init__.py
Normal file
|
@ -0,0 +1,22 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# DDPortfolio service config package
|
||||
# Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# 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
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
60
debianmemberportfolio/config/deployment.ini_tmpl
Normal file
60
debianmemberportfolio/config/deployment.ini_tmpl
Normal file
|
@ -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
|
71
debianmemberportfolio/config/environment.py
Normal file
71
debianmemberportfolio/config/environment.py
Normal file
|
@ -0,0 +1,71 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# DDPortfolio service environment configuration
|
||||
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# 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
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""Pylons environment configuration"""
|
||||
import os
|
||||
|
||||
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
|
||||
from ddportfolioservice.config.routing import make_map
|
||||
|
||||
|
||||
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,
|
||||
controllers=os.path.join(root, 'controllers'),
|
||||
static_files=os.path.join(root, 'public'),
|
||||
templates=[os.path.join(root, 'templates')])
|
||||
|
||||
# Initialize config with the basic options
|
||||
config.init_app(
|
||||
global_conf, app_conf, package='ddportfolioservice', paths=paths)
|
||||
|
||||
config['routes.map'] = make_map(config)
|
||||
config['pylons.app_globals'] = app_globals.Globals(config)
|
||||
config['pylons.h'] = ddportfolioservice.lib.helpers
|
||||
|
||||
# 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
|
90
debianmemberportfolio/config/middleware.py
Normal file
90
debianmemberportfolio/config/middleware.py
Normal file
|
@ -0,0 +1,90 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# DDPortfolio service middleware configuration
|
||||
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# 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
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""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.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, static_files=True, **app_conf):
|
||||
"""Create a Pylons WSGI application and return it
|
||||
|
||||
``global_conf``
|
||||
The inherited configuration for this application. Normally from
|
||||
the [DEFAULT] section of the Paste ini file.
|
||||
|
||||
``full_stack``
|
||||
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:<name>] section of the Paste ini file (where <name>
|
||||
defaults to main).
|
||||
|
||||
"""
|
||||
# Configure the Pylons environment
|
||||
config = load_environment(global_conf, app_conf)
|
||||
|
||||
# The Pylons WSGI app
|
||||
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, **config['pylons.errorware'])
|
||||
|
||||
# Display error documents for 401, 403, 404 status codes (and
|
||||
# 500 when debug is disabled)
|
||||
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)
|
||||
|
||||
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
|
52
debianmemberportfolio/config/routing.py
Normal file
52
debianmemberportfolio/config/routing.py
Normal file
|
@ -0,0 +1,52 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# DDPortfolio service routing configuration
|
||||
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# 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
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""Routes configuration
|
||||
|
||||
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 routes import Mapper
|
||||
|
||||
|
||||
def make_map(config):
|
||||
"""Create, configure and return the routes Mapper"""
|
||||
map = Mapper(directory=config['pylons.paths']['controllers'],
|
||||
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}', 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',
|
||||
action='index')
|
||||
|
||||
map.connect('/{controller}/{action}')
|
||||
map.connect('/{controller}/{action}/{id}')
|
||||
|
||||
return map
|
22
debianmemberportfolio/controllers/__init__.py
Normal file
22
debianmemberportfolio/controllers/__init__.py
Normal file
|
@ -0,0 +1,22 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# DDPortfolio service controllers package
|
||||
# Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# 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
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
197
debianmemberportfolio/controllers/ddportfolio.py
Normal file
197
debianmemberportfolio/controllers/ddportfolio.py
Normal file
|
@ -0,0 +1,197 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service DdportfolioController
|
||||
# Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# This file is part of Debian Member Portfolio Service.
|
||||
#
|
||||
# Debian Member Portfolio 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.
|
||||
#
|
||||
# Debian Member Portfolio 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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
import logging
|
||||
import simplejson
|
||||
|
||||
from pylons import request, response, 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
|
||||
from ddportfolioservice.model.urlbuilder import build_urls
|
||||
from ddportfolioservice.model import dddatabuilder
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class DdportfolioController(BaseController):
|
||||
"""
|
||||
Main controller for the Debian Member portfolio service.
|
||||
"""
|
||||
_LABELS = {
|
||||
'overview': {
|
||||
'label': N_('Overview'),
|
||||
'ddpo': N_("Debian Member's Package Overview"),
|
||||
'alladdresses': N_("""Debian Member's Package Overview
|
||||
... showing all email addresses"""),
|
||||
},
|
||||
'bugs': {
|
||||
'label': N_('Bugs'),
|
||||
'received': N_('''bugs received
|
||||
(note: co-maintainers not listed, see \
|
||||
<a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?\
|
||||
bug=430986">#430986</a>)'''),
|
||||
'reported': N_('bugs reported'),
|
||||
'usertags': N_('user tags'),
|
||||
'searchall': N_('all messages (i.e., full text search for \
|
||||
developer name on all bug logs)'),
|
||||
'wnpp': N_('<a href="http://wiki.debian.org/WNPP">WNPP</a>'),
|
||||
'correspondent': N_('correspondent for bugs'),
|
||||
'graph': N_('one year open bug history graph'),
|
||||
},
|
||||
'build': {
|
||||
'label': N_('Build'),
|
||||
'buildd': N_('buildd.d.o'),
|
||||
'igloo': N_('igloo'),
|
||||
},
|
||||
'qa': {
|
||||
'label': N_('Quality Assurance'),
|
||||
'dmd': N_('maintainer dashboard'),
|
||||
'lintian': N_('lintian reports'),
|
||||
'lintianfull': N_('full lintian reports (i.e. including \
|
||||
"info"-level messages)'),
|
||||
'piuparts': N_('piuparts'),
|
||||
'patchtracker': N_('Debian patch tracking system'),
|
||||
'duck': N_('Debian Url ChecKer'),
|
||||
},
|
||||
'lists': {
|
||||
'label': N_('Mailing Lists'),
|
||||
'dolists': N_('lists.d.o'),
|
||||
'adolists': N_('lists.a.d.o'),
|
||||
'gmane': N_('gmane'),
|
||||
},
|
||||
'files': {
|
||||
'label': N_('Files'),
|
||||
'people': N_('people.d.o'),
|
||||
'oldpeople': N_('oldpeople'),
|
||||
'alioth': N_('Alioth'),
|
||||
},
|
||||
'membership': {
|
||||
'label': N_('Membership'),
|
||||
'nm': N_('NM'),
|
||||
'dbfinger': N_('DB information via finger'),
|
||||
'db': N_('DB information via HTTP'),
|
||||
'webid': N_('FOAF profile'),
|
||||
'alioth': N_('Alioth'),
|
||||
'wiki': N_('Wiki'),
|
||||
'forum': N_('Forum'),
|
||||
},
|
||||
'miscellaneous': {
|
||||
'label': N_('Miscellaneous'),
|
||||
'debtags': N_('debtags'),
|
||||
'planetname': N_('Planet Debian (name)'),
|
||||
'planetuser': N_('Planet Debian (username)'),
|
||||
'links': N_('links'),
|
||||
'website': N_('Debian website'),
|
||||
'search': N_('Debian search'),
|
||||
'gpgfinger': N_('GPG public key via finger'),
|
||||
'gpgweb': N_('GPG public key via HTTP'),
|
||||
'nm': N_('NM, AM participation'),
|
||||
'contrib': N_('Contribution information'),
|
||||
},
|
||||
'ssh': {
|
||||
'label': N_('Information reachable via ssh (for Debian Members)'),
|
||||
'owndndoms': N_('owned debian.net domains'),
|
||||
'miainfo': N_('<a href="http://wiki.debian.org/qa.debian.org/'
|
||||
'MIATeam">MIA</a> database information'),
|
||||
'groupinfo': N_('Group membership information'),
|
||||
},
|
||||
'ubuntu': {
|
||||
'label': N_('Ubuntu'),
|
||||
'ubuntudiff': N_('Available patches from Ubuntu'),
|
||||
},
|
||||
}
|
||||
|
||||
def _get_label(self, section, url=None):
|
||||
if section in self._LABELS:
|
||||
if url:
|
||||
if url in self._LABELS[section]:
|
||||
return self._LABELS[section][url]
|
||||
elif 'label' in self._LABELS[section]:
|
||||
return self._LABELS[section]['label']
|
||||
if url:
|
||||
return "%s.%s" % (section, url)
|
||||
return section
|
||||
|
||||
def index(self):
|
||||
"""
|
||||
Render the input form.
|
||||
"""
|
||||
return render('/showform.mako')
|
||||
|
||||
def urllist(self):
|
||||
"""Handle the actual data."""
|
||||
schema = DDDataRequest()
|
||||
try:
|
||||
formencode.api.set_stdtranslation(
|
||||
domain="FormEncode",
|
||||
languages=[lang[0:2] for lang in request.languages])
|
||||
form_result = schema.to_python(request.params)
|
||||
except formencode.validators.Invalid, error:
|
||||
c.messages = {'errors': error.unpack_errors()}
|
||||
return render('/showform.mako')
|
||||
fields = dddatabuilder.build_data(form_result['email'])
|
||||
rp = request.params.copy()
|
||||
|
||||
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]]
|
||||
|
||||
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')
|
||||
if form_result['wikihomepage'] is None:
|
||||
log.debug('generate wikihomepage from name')
|
||||
form_result['wikihomepage'] = "".join(
|
||||
[part.capitalize() for part in form_result['name'].split()])
|
||||
data = build_urls(form_result)
|
||||
if form_result['mode'] == 'json':
|
||||
response.headers['Content-Type'] = 'text/javascript'
|
||||
return simplejson.dumps(
|
||||
dict([("%s.%s" % (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].name)))
|
||||
elif entry[0] == 'section':
|
||||
entry.append(_(self._get_label(entry[1])))
|
||||
c.urldata = data
|
||||
return render('/showurls.mako')
|
70
debianmemberportfolio/controllers/error.py
Normal file
70
debianmemberportfolio/controllers/error.py
Normal file
|
@ -0,0 +1,70 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# DDPortfolio service ErrorController
|
||||
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# 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
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
import cgi
|
||||
|
||||
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 BaseController
|
||||
|
||||
|
||||
class ErrorController(BaseController):
|
||||
"""Generates error documents as and when they are required.
|
||||
|
||||
The ErrorDocuments middleware forwards to ErrorController when error
|
||||
related status codes are returned from the application.
|
||||
|
||||
This behaviour can be altered by changing the parameters to the
|
||||
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.GET.get('code', str(resp.status_int))),
|
||||
message=content)
|
||||
return page
|
||||
|
||||
def img(self, id):
|
||||
"""Serve Pylons' stock images"""
|
||||
return self._serve_file('/'.join(['media/img', id]))
|
||||
|
||||
def style(self, id):
|
||||
"""Serve Pylons' stock stylesheets"""
|
||||
return self._serve_file('/'.join(['media/style', id]))
|
||||
|
||||
def _serve_file(self, path):
|
||||
"""
|
||||
Call Paste's FileApp (a WSGI application) to serve the file at
|
||||
the specified path
|
||||
"""
|
||||
request.environ['PATH_INFO'] = '/%s' % path
|
||||
return forward(PkgResourcesParser('pylons', 'pylons'))
|
69
debianmemberportfolio/controllers/showformscripts.py
Normal file
69
debianmemberportfolio/controllers/showformscripts.py
Normal file
|
@ -0,0 +1,69 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# DDPortfolio service ShowformscriptController.
|
||||
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# 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
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
import logging
|
||||
import simplejson
|
||||
|
||||
from pylons import request, response
|
||||
from pylons.controllers.util import abort
|
||||
import formencode.api
|
||||
import formencode.validators
|
||||
|
||||
from ddportfolioservice.lib.base import BaseController, render
|
||||
from ddportfolioservice.model.form import DDDataRequest
|
||||
from ddportfolioservice.model import dddatabuilder
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ShowformscriptsController(BaseController):
|
||||
"""This controller is used to support data entry in showform.
|
||||
|
||||
It provides code for generating JavaScript as well as JSON
|
||||
responses for autocompletion of fields."""
|
||||
|
||||
def index(self):
|
||||
"""
|
||||
This action generates the helper script for the showform page.
|
||||
"""
|
||||
response.headers['Content-Type'] = 'text/javascript; charset=utf-8'
|
||||
return render('/showformscript.mako')
|
||||
|
||||
def fetchdddata(self):
|
||||
"""
|
||||
This action fetches the data for a given mail address and
|
||||
returns them as JSON.
|
||||
"""
|
||||
schema = DDDataRequest()
|
||||
try:
|
||||
formencode.api.set_stdtranslation(
|
||||
domain="FormEncode",
|
||||
languages=[lang[0:2] for lang in request.languages])
|
||||
form_result = schema.to_python(request.params)
|
||||
except formencode.validators.Invalid, error:
|
||||
errors = error.unpack_errors()
|
||||
abort(400, "\n".join(
|
||||
["%s: %s" % (key, errors[key]) for key in errors]))
|
||||
fields = dddatabuilder.build_data(form_result['email'])
|
||||
log.debug(fields)
|
||||
response.headers['Content-Type'] = 'text/plain'
|
||||
return simplejson.dumps(fields)
|
50
debianmemberportfolio/controllers/template.py
Normal file
50
debianmemberportfolio/controllers/template.py
Normal file
|
@ -0,0 +1,50 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# DDPortfolio service TemplateController
|
||||
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# 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
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
from ddportfolioservice.lib.base import BaseController
|
||||
|
||||
|
||||
class TemplateController(BaseController):
|
||||
|
||||
def view(self, url):
|
||||
"""By default, the final controller tried to fulfill the request
|
||||
when no other routes match. It may be used to display a template
|
||||
when all else fails, e.g.::
|
||||
|
||||
def view(self, url):
|
||||
return render('/%s' % url)
|
||||
|
||||
Or if you're using Mako and want to explicitly send a 404 (Not
|
||||
Found) response code when the requested template doesn't exist::
|
||||
|
||||
import mako.exceptions
|
||||
|
||||
def view(self, url):
|
||||
try:
|
||||
return render('/%s' % url)
|
||||
except mako.exceptions.TopLevelLookupException:
|
||||
abort(404)
|
||||
|
||||
By default this controller aborts the request with a 404 (Not
|
||||
Found)
|
||||
"""
|
||||
abort(404)
|
391
debianmemberportfolio/i18n/ddportfolioservice.pot
Normal file
391
debianmemberportfolio/i18n/ddportfolioservice.pot
Normal file
|
@ -0,0 +1,391 @@
|
|||
# Translations template for ddportfolioservice.
|
||||
# Copyright (C) 2014 ORGANIZATION
|
||||
# This file is distributed under the same license as the ddportfolioservice
|
||||
# project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ddportfolioservice 0.2.20\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2014-01-11 00:25+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 0.9.6\n"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:45
|
||||
msgid "Overview"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:46
|
||||
msgid "Debian Member's Package Overview"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:47
|
||||
msgid ""
|
||||
"Debian Member's Package Overview\n"
|
||||
"... showing all email addresses"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:51
|
||||
msgid "Bugs"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:52
|
||||
msgid ""
|
||||
"bugs received\n"
|
||||
"(note: co-maintainers not listed, see <a href=\"http://bugs.debian.org/cgi-"
|
||||
"bin/bugreport.cgi?bug=430986\">#430986</a>)"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:56
|
||||
msgid "bugs reported"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:57
|
||||
msgid "user tags"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:58
|
||||
msgid "all messages (i.e., full text search for developer name on all bug logs)"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:60
|
||||
msgid "<a href=\"http://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:61
|
||||
msgid "correspondent for bugs"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:62
|
||||
msgid "one year open bug history graph"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:65
|
||||
msgid "Build"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:66
|
||||
msgid "buildd.d.o"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:67
|
||||
msgid "igloo"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:70
|
||||
msgid "Quality Assurance"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:71
|
||||
msgid "maintainer dashboard"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:72
|
||||
msgid "lintian reports"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:73
|
||||
msgid "full lintian reports (i.e. including \"info\"-level messages)"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:75
|
||||
msgid "piuparts"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:76
|
||||
msgid "Debian patch tracking system"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:77
|
||||
msgid "Debian Url ChecKer"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:80
|
||||
msgid "Mailing Lists"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:81
|
||||
msgid "lists.d.o"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:82
|
||||
msgid "lists.a.d.o"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:83
|
||||
msgid "gmane"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:86
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:87
|
||||
msgid "people.d.o"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:88
|
||||
msgid "oldpeople"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:89
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:97
|
||||
msgid "Alioth"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:92
|
||||
msgid "Membership"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:93
|
||||
msgid "NM"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:94
|
||||
msgid "DB information via finger"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:95
|
||||
msgid "DB information via HTTP"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:96
|
||||
msgid "FOAF profile"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:98
|
||||
msgid "Wiki"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:99
|
||||
msgid "Forum"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:102
|
||||
msgid "Miscellaneous"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:103
|
||||
msgid "debtags"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:104
|
||||
msgid "Planet Debian (name)"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:105
|
||||
msgid "Planet Debian (username)"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:106
|
||||
msgid "links"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:107
|
||||
msgid "Debian website"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:108
|
||||
msgid "Debian search"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:109
|
||||
msgid "GPG public key via finger"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:110
|
||||
msgid "GPG public key via HTTP"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:111
|
||||
msgid "NM, AM participation"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:112
|
||||
msgid "Contribution information"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:115
|
||||
msgid "Information reachable via ssh (for Debian Members)"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:116
|
||||
msgid "owned debian.net domains"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:117
|
||||
msgid ""
|
||||
"<a href=\"http://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> database "
|
||||
"information"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:119
|
||||
msgid "Group membership information"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:122
|
||||
msgid "Ubuntu"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:123
|
||||
msgid "Available patches from Ubuntu"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:40
|
||||
msgid "Email address"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:41
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:42
|
||||
msgid "GPG fingerprint"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:43
|
||||
msgid "Debian user name"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:44
|
||||
msgid "Non Debian email address"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:45
|
||||
msgid "Alioth user name"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:97
|
||||
#: ddportfolioservice/model/urlbuilder.py:101
|
||||
#, python-format
|
||||
msgid "Missing input: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:25
|
||||
#: ddportfolioservice/templates/base.mako:33
|
||||
msgid "Debian Member Portfolio Service"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:31
|
||||
msgid "Debian Logo"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:34
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:41
|
||||
msgid "AGPL - Free Software"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:43
|
||||
#, python-format
|
||||
msgid ""
|
||||
"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>. If you "
|
||||
"want to translate this service to your language you can contribute at <a "
|
||||
"href=\"%(transifexurl)s\" title=\"Debian Member Portfolio Service at "
|
||||
"Transifex\">Transifex</a>."
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:44
|
||||
msgid "Copyright © 2009-2014 Jan Dittberner"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:24
|
||||
msgid "Enter your personal information"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:30
|
||||
#: ddportfolioservice/templates/showurls.mako:28
|
||||
msgid "Debian Member Portfolio"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:36
|
||||
msgid "Email address:"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:47
|
||||
msgid "Show all form fields"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:54
|
||||
msgid "Name:"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:64
|
||||
msgid "GPG fingerprint:"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:79
|
||||
msgid "Debian user name:"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:94
|
||||
msgid "Non Debian email address:"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:109
|
||||
msgid "Alioth user name:"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:125
|
||||
msgid "Wiki user name:"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:140
|
||||
msgid "Forum user id:"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:151
|
||||
msgid "Output format:"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:157
|
||||
msgid "HTML"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:159
|
||||
msgid "JSON"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:161
|
||||
msgid "Build Debian Member Portfolio URLs"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:24
|
||||
msgid "Your personal links"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:31
|
||||
msgid "Usage"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:31
|
||||
msgid "URL"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:41
|
||||
msgid "Error during URL creation:"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:68
|
||||
msgid "Restart"
|
||||
msgstr ""
|
||||
|
BIN
debianmemberportfolio/i18n/de/LC_MESSAGES/ddportfolioservice.mo
Normal file
BIN
debianmemberportfolio/i18n/de/LC_MESSAGES/ddportfolioservice.mo
Normal file
Binary file not shown.
419
debianmemberportfolio/i18n/de/LC_MESSAGES/ddportfolioservice.po
Normal file
419
debianmemberportfolio/i18n/de/LC_MESSAGES/ddportfolioservice.po
Normal file
|
@ -0,0 +1,419 @@
|
|||
# German translations for ddportfolioservice.
|
||||
# Copyright (C) 2009, 2010, 2011, 2012 Jan Dittberner
|
||||
# This file is distributed under the same license as the ddportfolioservice
|
||||
# project.
|
||||
# Jan Dittberner <jan@dittberner.info>, 2009, 2010, 2011, 2012.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ddportfolioservice 0.2.1\n"
|
||||
"Report-Msgid-Bugs-To: jan@dittberner.info\n"
|
||||
"POT-Creation-Date: 2014-01-11 00:25+0000\n"
|
||||
"PO-Revision-Date: 2014-01-11 01:37+0100\n"
|
||||
"Last-Translator: Jan Dittberner <jan@dittberner.info>\n"
|
||||
"Language-Team: de <de@li.org>\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.6\n"
|
||||
"X-Generator: Poedit 1.5.4\n"
|
||||
"Language: de\n"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:45
|
||||
msgid "Overview"
|
||||
msgstr "Überblick"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:46
|
||||
msgid "Debian Member's Package Overview"
|
||||
msgstr "Paketübersicht des Debian-Mitglieds"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:47
|
||||
msgid ""
|
||||
"Debian Member's Package Overview\n"
|
||||
"... showing all email addresses"
|
||||
msgstr ""
|
||||
"Paketübersicht des Debian-Mitglieds\n"
|
||||
"... mit allen E-Mailadressen"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:51
|
||||
msgid "Bugs"
|
||||
msgstr "Fehler"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:52
|
||||
msgid ""
|
||||
"bugs received\n"
|
||||
"(note: co-maintainers not listed, see <a href=\"http://bugs.debian.org/cgi-"
|
||||
"bin/bugreport.cgi?bug=430986\">#430986</a>)"
|
||||
msgstr ""
|
||||
"Erhaltene Fehlerberichte\n"
|
||||
"(Anmerkung: Co-Maintainer werden nicht aufgeführt, siehe <a href=\"http://"
|
||||
"bugs.debian.org/cgi-bin/bugreport.cgi?bug=430986\">#430986</a>)"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:56
|
||||
msgid "bugs reported"
|
||||
msgstr "Berichtete Fehler"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:57
|
||||
msgid "user tags"
|
||||
msgstr "User Tags"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:58
|
||||
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:60
|
||||
msgid "<a href=\"http://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
msgstr "<a href=\"http://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:61
|
||||
msgid "correspondent for bugs"
|
||||
msgstr "Beitragender zu Fehlern"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:62
|
||||
msgid "one year open bug history graph"
|
||||
msgstr "Graph der Entwicklung offener Fehlerberichte über ein Jahr"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:65
|
||||
msgid "Build"
|
||||
msgstr "Build"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:66
|
||||
msgid "buildd.d.o"
|
||||
msgstr "buildd.d.o"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:67
|
||||
msgid "igloo"
|
||||
msgstr "Igloo"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:70
|
||||
msgid "Quality Assurance"
|
||||
msgstr "Qualitätssicherung"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:71
|
||||
msgid "maintainer dashboard"
|
||||
msgstr "Maintainer Dashboard"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:72
|
||||
msgid "lintian reports"
|
||||
msgstr "Lintian-Berichte"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:73
|
||||
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:75
|
||||
msgid "piuparts"
|
||||
msgstr "piuparts"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:76
|
||||
msgid "Debian patch tracking system"
|
||||
msgstr "Debian Nachverfolgungssystem für Patches"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:77
|
||||
msgid "Debian Url ChecKer"
|
||||
msgstr "Debian URL-Prüfer"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:80
|
||||
msgid "Mailing Lists"
|
||||
msgstr "Mailinglisten"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:81
|
||||
msgid "lists.d.o"
|
||||
msgstr "lists.d.o"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:82
|
||||
msgid "lists.a.d.o"
|
||||
msgstr "lists.a.d.o"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:83
|
||||
msgid "gmane"
|
||||
msgstr "Gmane"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:86
|
||||
msgid "Files"
|
||||
msgstr "Dateien"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:87
|
||||
msgid "people.d.o"
|
||||
msgstr "people.d.o"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:88
|
||||
msgid "oldpeople"
|
||||
msgstr "oldpeople"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:89
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:97
|
||||
msgid "Alioth"
|
||||
msgstr "Alioth"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:92
|
||||
msgid "Membership"
|
||||
msgstr "Mitgliedschaft"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:93
|
||||
msgid "NM"
|
||||
msgstr "NM"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:94
|
||||
msgid "DB information via finger"
|
||||
msgstr "DB-Informationen per finger"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:95
|
||||
msgid "DB information via HTTP"
|
||||
msgstr "DB-Informationen per HTTP"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:96
|
||||
msgid "FOAF profile"
|
||||
msgstr "FOAF-Profil"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:98
|
||||
msgid "Wiki"
|
||||
msgstr "Wiki"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:99
|
||||
msgid "Forum"
|
||||
msgstr "Forum"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:102
|
||||
msgid "Miscellaneous"
|
||||
msgstr "Sonstiges"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:103
|
||||
msgid "debtags"
|
||||
msgstr "debtags"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:104
|
||||
msgid "Planet Debian (name)"
|
||||
msgstr "Planet Debian (Name)"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:105
|
||||
#| msgid "Debian user name"
|
||||
msgid "Planet Debian (username)"
|
||||
msgstr "Planet Debian (Benutzername)"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:106
|
||||
msgid "links"
|
||||
msgstr "Links"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:107
|
||||
msgid "Debian website"
|
||||
msgstr "Debian Webseite"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:108
|
||||
msgid "Debian search"
|
||||
msgstr "Debian-Suche"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:109
|
||||
msgid "GPG public key via finger"
|
||||
msgstr "öffentlicher GPG-Schlüssel per finger"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:110
|
||||
msgid "GPG public key via HTTP"
|
||||
msgstr "öffentlicher GPG-Schlüssel per HTTP"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:111
|
||||
msgid "NM, AM participation"
|
||||
msgstr "NM-, AM-Mitwirkung"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:112
|
||||
#| msgid "Enter your personal information"
|
||||
msgid "Contribution information"
|
||||
msgstr "Debian Contributor-Informationen"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:115
|
||||
msgid "Information reachable via ssh (for Debian Members)"
|
||||
msgstr "Per ssh erreichbare Informationen (für Debian Mitglieder)"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:116
|
||||
msgid "owned debian.net domains"
|
||||
msgstr "Besitz von debian.net-Domains"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:117
|
||||
msgid ""
|
||||
"<a href=\"http://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> database "
|
||||
"information"
|
||||
msgstr ""
|
||||
"Informationen in der <a href=\"http://wiki.debian.org/qa.debian.org/MIATeam"
|
||||
"\">MIA</a>-Datenbank"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:119
|
||||
msgid "Group membership information"
|
||||
msgstr "Information über Gruppenmitgliedschaften"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:122
|
||||
msgid "Ubuntu"
|
||||
msgstr "Ubuntu"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:123
|
||||
msgid "Available patches from Ubuntu"
|
||||
msgstr "Verfügbare Patches aus Ubuntu"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:40
|
||||
msgid "Email address"
|
||||
msgstr "E-Mailadresse"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:41
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:42
|
||||
msgid "GPG fingerprint"
|
||||
msgstr "GPG-Fingerabdruck"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:43
|
||||
msgid "Debian user name"
|
||||
msgstr "Debian-Benutzername"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:44
|
||||
msgid "Non Debian email address"
|
||||
msgstr "Nicht-Debian-E-Mailadresse"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:45
|
||||
msgid "Alioth user name"
|
||||
msgstr "Alioth-Benutzername"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:97
|
||||
#: ddportfolioservice/model/urlbuilder.py:101
|
||||
#, python-format
|
||||
msgid "Missing input: %s"
|
||||
msgstr "Fehlende Eingabe: %s"
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:25
|
||||
#: ddportfolioservice/templates/base.mako:33
|
||||
msgid "Debian Member Portfolio Service"
|
||||
msgstr "Debian-Mitglieder-Portfolioservice"
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:31
|
||||
msgid "Debian Logo"
|
||||
msgstr "Debian-Logo"
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:34
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
"Dieser Dienst wurde durch Stefano Zacchirolis <a href=\"http://wiki.debian."
|
||||
"org/DDPortfolio\">DDPortfolio-Seite im Debian Wiki</a> inspiriert. Mit dem "
|
||||
"Dienst können personalisierte Links zu Informationen im Bezug auf Debian für "
|
||||
"Debian-Mitglieder und Paketbetreuer erzeugt werden."
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:41
|
||||
msgid "AGPL - Free Software"
|
||||
msgstr "AGPL - Freie Software"
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:43
|
||||
#, python-format
|
||||
msgid ""
|
||||
"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>. If you want to translate this service to "
|
||||
"your language you can contribute at <a href=\"%(transifexurl)s\" title="
|
||||
"\"Debian Member Portfolio Service at Transifex\">Transifex</a>."
|
||||
msgstr ""
|
||||
"Dieser Dienst wird unter den Bedingungen der <a href=\"http://www.gnu.org/"
|
||||
"licenses/agpl.html\">GNU Affero General Public License</a>, 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 <a href=\"%(browseurl)s\" title=\"Gitweb "
|
||||
"Repository-Browser-URL\">den Quelltext ansehen</a> oder mit <a href=\"http://"
|
||||
"git-scm.com\">git</a> von <a href=\"%(cloneurl)s\" title=\"Git Clone-URL\">"
|
||||
"%(cloneurl)s</a> klonen. Wenn Sie diesen Service in Ihre Sprache übersetzen "
|
||||
"möchten, können Sie auf <a href=\"%(transifexurl)s\" title=\"Debian Member "
|
||||
"Portfolio Service bei Transifex\">Transifex</a> dazu beitragen."
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:44
|
||||
#| msgid "Copyright © 2009, 2010, 2011, 2012 Jan Dittberner"
|
||||
msgid "Copyright © 2009-2014 Jan Dittberner"
|
||||
msgstr "Copyright © 2009-2014 Jan Dittberner"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:24
|
||||
msgid "Enter your personal information"
|
||||
msgstr "Eingabe der persönlichen Informationen"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:30
|
||||
#: ddportfolioservice/templates/showurls.mako:28
|
||||
msgid "Debian Member Portfolio"
|
||||
msgstr "Debian-Mitgliederportfolio"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:36
|
||||
msgid "Email address:"
|
||||
msgstr "E-Mailadresse:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:47
|
||||
msgid "Show all form fields"
|
||||
msgstr "Alle Formularfelder anzeigen"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:54
|
||||
msgid "Name:"
|
||||
msgstr "Name:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:64
|
||||
msgid "GPG fingerprint:"
|
||||
msgstr "GPG-Fingerabdruck:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:79
|
||||
msgid "Debian user name:"
|
||||
msgstr "Debian-Benutzername:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:94
|
||||
msgid "Non Debian email address:"
|
||||
msgstr "Nicht-Debian-E-Mailadresse"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:109
|
||||
msgid "Alioth user name:"
|
||||
msgstr "Alioth-Benutzername:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:125
|
||||
msgid "Wiki user name:"
|
||||
msgstr "Wiki-Benutzername:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:140
|
||||
msgid "Forum user id:"
|
||||
msgstr "Forumsbenutzernummer:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:151
|
||||
msgid "Output format:"
|
||||
msgstr "Ausgabeformat:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:157
|
||||
msgid "HTML"
|
||||
msgstr "HTML"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:159
|
||||
msgid "JSON"
|
||||
msgstr "JSON"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:161
|
||||
msgid "Build Debian Member Portfolio URLs"
|
||||
msgstr "Debian-Mitgliedsportfolio-URLs bauen"
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:24
|
||||
msgid "Your personal links"
|
||||
msgstr "Ihre personalisierten Links"
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:31
|
||||
msgid "Usage"
|
||||
msgstr "Verwendung"
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:31
|
||||
msgid "URL"
|
||||
msgstr "URL"
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:41
|
||||
msgid "Error during URL creation:"
|
||||
msgstr "Fehler bei der URL-Erzeugung:"
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:68
|
||||
msgid "Restart"
|
||||
msgstr "Neu beginnen"
|
BIN
debianmemberportfolio/i18n/fr/LC_MESSAGES/ddportfolioservice.mo
Normal file
BIN
debianmemberportfolio/i18n/fr/LC_MESSAGES/ddportfolioservice.mo
Normal file
Binary file not shown.
419
debianmemberportfolio/i18n/fr/LC_MESSAGES/ddportfolioservice.po
Normal file
419
debianmemberportfolio/i18n/fr/LC_MESSAGES/ddportfolioservice.po
Normal file
|
@ -0,0 +1,419 @@
|
|||
# French translations for ddportfolioservice.
|
||||
# This file is distributed under the same license as the ddportfolioservice
|
||||
# project.
|
||||
#
|
||||
# Translators:
|
||||
# Stéphane Aulery <lkppo@free.fr>, 2012.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Debian Member Portfolio Service\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2014-01-11 00:25+0000\n"
|
||||
"PO-Revision-Date: 2014-01-11 01:29+0100\n"
|
||||
"Last-Translator: Jan Dittberner <jan@dittberner.info>\n"
|
||||
"Language-Team: French (http://www.transifex.net/projects/p/"
|
||||
"debportfolioservice/language/fr/)\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.6\n"
|
||||
"X-Generator: Poedit 1.5.4\n"
|
||||
"Language: fr\n"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:45
|
||||
msgid "Overview"
|
||||
msgstr "Vue d'ensemble"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:46
|
||||
msgid "Debian Member's Package Overview"
|
||||
msgstr "Vue d'ensemble des paquets du membre Debian"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:47
|
||||
msgid ""
|
||||
"Debian Member's Package Overview\n"
|
||||
"... showing all email addresses"
|
||||
msgstr ""
|
||||
"Vue d'ensemble des paquets du membre Debian\n"
|
||||
"... affichage de tous les courriels"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:51
|
||||
msgid "Bugs"
|
||||
msgstr "Bogues"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:52
|
||||
msgid ""
|
||||
"bugs received\n"
|
||||
"(note: co-maintainers not listed, see <a href=\"http://bugs.debian.org/cgi-"
|
||||
"bin/bugreport.cgi?bug=430986\">#430986</a>)"
|
||||
msgstr ""
|
||||
"Bogues reçus\n"
|
||||
"(note : co-responsables non listés, voir <a href=\"http://bugs.debian.org/"
|
||||
"cgi-bin/bugreport.cgi?bug=430986\">#430986</a>)"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:56
|
||||
msgid "bugs reported"
|
||||
msgstr "Bogues rapportés"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:57
|
||||
msgid "user tags"
|
||||
msgstr "Tags utilisateur"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:58
|
||||
msgid ""
|
||||
"all messages (i.e., full text search for developer name on all bug logs)"
|
||||
msgstr ""
|
||||
"Tous les messages (c-à-d, recherche plein texte sur le nom du développeur "
|
||||
"dans tous les journaux de bogue)"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:60
|
||||
msgid "<a href=\"http://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
msgstr "<a href=\"http://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:61
|
||||
msgid "correspondent for bugs"
|
||||
msgstr "Correspondant pour les bogues"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:62
|
||||
msgid "one year open bug history graph"
|
||||
msgstr "Graphique de l'évolution des bogues ouverts sur l'année écoulée"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:65
|
||||
msgid "Build"
|
||||
msgstr "Build"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:66
|
||||
msgid "buildd.d.o"
|
||||
msgstr "buildd.d.o"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:67
|
||||
msgid "igloo"
|
||||
msgstr "igloo"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:70
|
||||
msgid "Quality Assurance"
|
||||
msgstr "Assurance qualité"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:71
|
||||
msgid "maintainer dashboard"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:72
|
||||
msgid "lintian reports"
|
||||
msgstr "Rapports lintian"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:73
|
||||
msgid "full lintian reports (i.e. including \"info\"-level messages)"
|
||||
msgstr ""
|
||||
"Rapports lintian complets (c-à-d incluant les messages de niveau \"info\")"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:75
|
||||
msgid "piuparts"
|
||||
msgstr "Piuparts"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:76
|
||||
msgid "Debian patch tracking system"
|
||||
msgstr "Système de suivi des patchs de Debian"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:77
|
||||
msgid "Debian Url ChecKer"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:80
|
||||
msgid "Mailing Lists"
|
||||
msgstr "Listes de diffusion"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:81
|
||||
msgid "lists.d.o"
|
||||
msgstr "lists.d.o"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:82
|
||||
msgid "lists.a.d.o"
|
||||
msgstr "lists.a.d.o"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:83
|
||||
msgid "gmane"
|
||||
msgstr "Gmane"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:86
|
||||
msgid "Files"
|
||||
msgstr "Fichiers"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:87
|
||||
msgid "people.d.o"
|
||||
msgstr "people.d.o"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:88
|
||||
msgid "oldpeople"
|
||||
msgstr "oldpeople"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:89
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:97
|
||||
msgid "Alioth"
|
||||
msgstr "Alioth"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:92
|
||||
msgid "Membership"
|
||||
msgstr "Adhésion"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:93
|
||||
msgid "NM"
|
||||
msgstr "NM"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:94
|
||||
msgid "DB information via finger"
|
||||
msgstr "BD d'informations via finger"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:95
|
||||
msgid "DB information via HTTP"
|
||||
msgstr "BD d'informations via HTTP"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:96
|
||||
msgid "FOAF profile"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:98
|
||||
msgid "Wiki"
|
||||
msgstr "Wiki"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:99
|
||||
msgid "Forum"
|
||||
msgstr "Forum"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:102
|
||||
msgid "Miscellaneous"
|
||||
msgstr "Divers"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:103
|
||||
msgid "debtags"
|
||||
msgstr "Debtags"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:104
|
||||
msgid "Planet Debian (name)"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:105
|
||||
#, fuzzy
|
||||
#| msgid "Debian user name"
|
||||
msgid "Planet Debian (username)"
|
||||
msgstr "Nom d'utilisateur Debian"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:106
|
||||
msgid "links"
|
||||
msgstr "Liens"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:107
|
||||
msgid "Debian website"
|
||||
msgstr "Site web de Debian"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:108
|
||||
msgid "Debian search"
|
||||
msgstr "Recherche Debian"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:109
|
||||
msgid "GPG public key via finger"
|
||||
msgstr "Clef GPG publique via finger"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:110
|
||||
msgid "GPG public key via HTTP"
|
||||
msgstr "Clef GPG publique via HTTP"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:111
|
||||
msgid "NM, AM participation"
|
||||
msgstr "NM, AM participation"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:112
|
||||
#, fuzzy
|
||||
#| msgid "Enter your personal information"
|
||||
msgid "Contribution information"
|
||||
msgstr "Saisissez vos informations personnelles"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:115
|
||||
msgid "Information reachable via ssh (for Debian Members)"
|
||||
msgstr "Informations accessibles via ssh (pour les membres de Debian)"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:116
|
||||
msgid "owned debian.net domains"
|
||||
msgstr "Propriété des domaines debian.net"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:117
|
||||
msgid ""
|
||||
"<a href=\"http://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> database "
|
||||
"information"
|
||||
msgstr ""
|
||||
"Informations de la base de données <a href=\"http://wiki.debian.org/qa."
|
||||
"debian.org/MIATeam\">MIA</a>"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:119
|
||||
msgid "Group membership information"
|
||||
msgstr "Information sur l'adhésion de groupe"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:122
|
||||
msgid "Ubuntu"
|
||||
msgstr "Ubuntu"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:123
|
||||
msgid "Available patches from Ubuntu"
|
||||
msgstr "Patchs disponibles pour Ubuntu"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:40
|
||||
msgid "Email address"
|
||||
msgstr "Courriel"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:41
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:42
|
||||
msgid "GPG fingerprint"
|
||||
msgstr "Empreinte GPG"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:43
|
||||
msgid "Debian user name"
|
||||
msgstr "Nom d'utilisateur Debian"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:44
|
||||
msgid "Non Debian email address"
|
||||
msgstr "Courriel hors Debian"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:45
|
||||
msgid "Alioth user name"
|
||||
msgstr "Nom d'utilisateur Alioth"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:97
|
||||
#: ddportfolioservice/model/urlbuilder.py:101
|
||||
#, python-format
|
||||
msgid "Missing input: %s"
|
||||
msgstr "Entrée manquante : %s"
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:25
|
||||
#: ddportfolioservice/templates/base.mako:33
|
||||
msgid "Debian Member Portfolio Service"
|
||||
msgstr "Service de portefeuille des membres de Debian"
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:31
|
||||
msgid "Debian Logo"
|
||||
msgstr "Logo Debian"
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:34
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
"Ce service a été inspiré par <a href=\"http://wiki.debian.org/DDPortfolio"
|
||||
"\">la page DDPortfolio du Wiki de Debian</a> de Stefano Zacchiroli. Vous "
|
||||
"pouvez créer un ensemble personnalisé de liens fournissant des informations "
|
||||
"sur un membre ou un mainteneur de paquet de Debian."
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:41
|
||||
msgid "AGPL - Free Software"
|
||||
msgstr "AGPL - Logiciel libre"
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:43
|
||||
#, fuzzy, python-format
|
||||
msgid ""
|
||||
"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>. If you want to translate this service to "
|
||||
"your language you can contribute at <a href=\"%(transifexurl)s\" title="
|
||||
"\"Debian Member Portfolio Service at Transifex\">Transifex</a>."
|
||||
msgstr ""
|
||||
"Ce service est disponible sous les termes de la licence <a href=\"http://www."
|
||||
"gnu.org/licenses/agpl.html\">GNU Affero General Public License</a> telle que "
|
||||
"publiée par la Free Software Foundation, soit la version 3 de la licence, ou "
|
||||
"(à votre choix) toute version ultérieure. Vous pouvez <a href=\"%(browseurl)s"
|
||||
"\" title=\"Gitweb repository browser URL\">parcourir le code source</a> ou "
|
||||
"le cloner depuis <a href=\"%(cloneurl)s\" title=\"git clone URL\">"
|
||||
"%(cloneurl)s</a> en utilisant <a href=\"http://git-scm.com/\">git</a>."
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:44
|
||||
#| msgid "Copyright © 2009, 2010, 2011, 2012 Jan Dittberner"
|
||||
msgid "Copyright © 2009-2014 Jan Dittberner"
|
||||
msgstr "Copyright © 2009-2014 Jan Dittberner"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:24
|
||||
msgid "Enter your personal information"
|
||||
msgstr "Saisissez vos informations personnelles"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:30
|
||||
#: ddportfolioservice/templates/showurls.mako:28
|
||||
msgid "Debian Member Portfolio"
|
||||
msgstr "Portefeuille d'un Membre de Debian"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:36
|
||||
msgid "Email address:"
|
||||
msgstr "Courriel :"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:47
|
||||
msgid "Show all form fields"
|
||||
msgstr "Afficher tous les champs du formulaire"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:54
|
||||
msgid "Name:"
|
||||
msgstr "Nom :"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:64
|
||||
msgid "GPG fingerprint:"
|
||||
msgstr "Empreinte GPG :"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:79
|
||||
msgid "Debian user name:"
|
||||
msgstr "Nom d'utilisateur Debian :"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:94
|
||||
msgid "Non Debian email address:"
|
||||
msgstr "Courriel hors Debian :"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:109
|
||||
msgid "Alioth user name:"
|
||||
msgstr "Nom d'utilisateur Alioth :"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:125
|
||||
msgid "Wiki user name:"
|
||||
msgstr "Nom d'utilisateur Wiki :"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:140
|
||||
msgid "Forum user id:"
|
||||
msgstr "Numéro d'utilisateur Forum :"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:151
|
||||
msgid "Output format:"
|
||||
msgstr "Format de sortie :"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:157
|
||||
msgid "HTML"
|
||||
msgstr "HTML"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:159
|
||||
msgid "JSON"
|
||||
msgstr "JSON"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:161
|
||||
msgid "Build Debian Member Portfolio URLs"
|
||||
msgstr "Construire les URLs du portefeuille du membre de Debian"
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:24
|
||||
msgid "Your personal links"
|
||||
msgstr "Vos liens personnels"
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:31
|
||||
msgid "Usage"
|
||||
msgstr "Utilisation"
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:31
|
||||
msgid "URL"
|
||||
msgstr "URL"
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:41
|
||||
msgid "Error during URL creation:"
|
||||
msgstr "Erreur durant la création de l'URL :"
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:68
|
||||
msgid "Restart"
|
||||
msgstr "Recommencer"
|
BIN
debianmemberportfolio/i18n/id/LC_MESSAGES/ddportfolioservice.mo
Normal file
BIN
debianmemberportfolio/i18n/id/LC_MESSAGES/ddportfolioservice.mo
Normal file
Binary file not shown.
419
debianmemberportfolio/i18n/id/LC_MESSAGES/ddportfolioservice.po
Normal file
419
debianmemberportfolio/i18n/id/LC_MESSAGES/ddportfolioservice.po
Normal file
|
@ -0,0 +1,419 @@
|
|||
# Indonesian translations for ddportfolioservice.
|
||||
# Copyright (C) 2012 Izharul Haq
|
||||
# This file is distributed under the same license as the ddportfolioservice
|
||||
# project.
|
||||
#
|
||||
# Translators:
|
||||
# Izharul Haq <atoz.chevara@yahoo.com>, 2012.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Debian Member Portfolio Service\n"
|
||||
"Report-Msgid-Bugs-To: atoz.chevara@yahoo.com\n"
|
||||
"POT-Creation-Date: 2014-01-11 00:25+0000\n"
|
||||
"PO-Revision-Date: 2014-01-11 01:28+0100\n"
|
||||
"Last-Translator: Jan Dittberner <jan@dittberner.info>\n"
|
||||
"Language-Team: Indonesian (http://www.transifex.com/projects/p/"
|
||||
"debportfolioservice/language/id/)\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 0.9.6\n"
|
||||
"Language: id\n"
|
||||
"X-Generator: Poedit 1.5.4\n"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:45
|
||||
msgid "Overview"
|
||||
msgstr "Gambaran Umum"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:46
|
||||
msgid "Debian Member's Package Overview"
|
||||
msgstr "Gambaran Umum Paket Anggota Debian"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:47
|
||||
msgid ""
|
||||
"Debian Member's Package Overview\n"
|
||||
"... showing all email addresses"
|
||||
msgstr ""
|
||||
"Gambaran Umum Paket Anggota Debian\n"
|
||||
"... tampilkan semua alamat email"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:51
|
||||
msgid "Bugs"
|
||||
msgstr "Bugs"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:52
|
||||
msgid ""
|
||||
"bugs received\n"
|
||||
"(note: co-maintainers not listed, see <a href=\"http://bugs.debian.org/cgi-"
|
||||
"bin/bugreport.cgi?bug=430986\">#430986</a>)"
|
||||
msgstr ""
|
||||
"bugs diterima\n"
|
||||
"(catatan: co-maintainers tidak tercantum, lihat <a href=\"http://bugs.debian."
|
||||
"org/cgi-bin/bugreport.cgi?bug=430986\">#430986</a>)"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:56
|
||||
msgid "bugs reported"
|
||||
msgstr "melaporkan bug"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:57
|
||||
msgid "user tags"
|
||||
msgstr "label pengguna"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:58
|
||||
msgid ""
|
||||
"all messages (i.e., full text search for developer name on all bug logs)"
|
||||
msgstr ""
|
||||
"semua pesan (yaitu, pencarian teks lengkap untuk nama pengembang pada semua "
|
||||
"catatan bug)"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:60
|
||||
msgid "<a href=\"http://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
msgstr "<a href=\"http://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:61
|
||||
msgid "correspondent for bugs"
|
||||
msgstr "koresponden untuk bug"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:62
|
||||
msgid "one year open bug history graph"
|
||||
msgstr "grafik perkembangan laporan bug terbuka lebih dari setahun"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:65
|
||||
msgid "Build"
|
||||
msgstr "Bangun"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:66
|
||||
msgid "buildd.d.o"
|
||||
msgstr "buildd.d.o"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:67
|
||||
msgid "igloo"
|
||||
msgstr "igloo"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:70
|
||||
msgid "Quality Assurance"
|
||||
msgstr "Jaminan Mutu"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:71
|
||||
msgid "maintainer dashboard"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:72
|
||||
msgid "lintian reports"
|
||||
msgstr "laporan lintian"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:73
|
||||
msgid "full lintian reports (i.e. including \"info\"-level messages)"
|
||||
msgstr "seluruh pesan lintian (i.e. termasuk pesan \"info\"-level)"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:75
|
||||
msgid "piuparts"
|
||||
msgstr "piuparts"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:76
|
||||
msgid "Debian patch tracking system"
|
||||
msgstr "sistem pelacakan patch Debian"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:77
|
||||
msgid "Debian Url ChecKer"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:80
|
||||
msgid "Mailing Lists"
|
||||
msgstr "Milis"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:81
|
||||
msgid "lists.d.o"
|
||||
msgstr "lists.d.o"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:82
|
||||
msgid "lists.a.d.o"
|
||||
msgstr "lists.a.d.o"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:83
|
||||
msgid "gmane"
|
||||
msgstr "gmane"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:86
|
||||
msgid "Files"
|
||||
msgstr "Berkas-berkas"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:87
|
||||
msgid "people.d.o"
|
||||
msgstr "people.d.o"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:88
|
||||
msgid "oldpeople"
|
||||
msgstr "oldpeople"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:89
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:97
|
||||
msgid "Alioth"
|
||||
msgstr "Alioth"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:92
|
||||
msgid "Membership"
|
||||
msgstr "Keanggotaan"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:93
|
||||
msgid "NM"
|
||||
msgstr "NM"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:94
|
||||
msgid "DB information via finger"
|
||||
msgstr "informasi DB melalui finger"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:95
|
||||
msgid "DB information via HTTP"
|
||||
msgstr "informasi DB melalui HTTP"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:96
|
||||
msgid "FOAF profile"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:98
|
||||
msgid "Wiki"
|
||||
msgstr "Wiki"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:99
|
||||
msgid "Forum"
|
||||
msgstr "Forum"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:102
|
||||
msgid "Miscellaneous"
|
||||
msgstr "Lain-Lain"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:103
|
||||
msgid "debtags"
|
||||
msgstr "debtags"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:104
|
||||
msgid "Planet Debian (name)"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:105
|
||||
#, fuzzy
|
||||
#| msgid "Debian user name"
|
||||
msgid "Planet Debian (username)"
|
||||
msgstr "nama pengguna Debian"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:106
|
||||
msgid "links"
|
||||
msgstr "tautan"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:107
|
||||
msgid "Debian website"
|
||||
msgstr "website Debian"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:108
|
||||
msgid "Debian search"
|
||||
msgstr "pencarian Debian"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:109
|
||||
msgid "GPG public key via finger"
|
||||
msgstr "kunci publik GPG melalui finger"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:110
|
||||
msgid "GPG public key via HTTP"
|
||||
msgstr "kunci publik GPG melalui HTTP"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:111
|
||||
msgid "NM, AM participation"
|
||||
msgstr "partisipasi NM, AM"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:112
|
||||
#, fuzzy
|
||||
#| msgid "Enter your personal information"
|
||||
msgid "Contribution information"
|
||||
msgstr "Masukkan informasi data pribadi anda"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:115
|
||||
msgid "Information reachable via ssh (for Debian Members)"
|
||||
msgstr "Informasi dicapai melalui ssh (untuk Anggota Debian)"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:116
|
||||
msgid "owned debian.net domains"
|
||||
msgstr "domain debian.net sendiri"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:117
|
||||
msgid ""
|
||||
"<a href=\"http://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> database "
|
||||
"information"
|
||||
msgstr ""
|
||||
"informasi database <a href=\"http://wiki.debian.org/qa.debian.org/MIATeam"
|
||||
"\">MIA</a>"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:119
|
||||
msgid "Group membership information"
|
||||
msgstr "Informasi keanggotaan kelompok"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:122
|
||||
msgid "Ubuntu"
|
||||
msgstr "Ubuntu"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:123
|
||||
msgid "Available patches from Ubuntu"
|
||||
msgstr "Tambalan dari Ubuntu yang tersedia"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:40
|
||||
msgid "Email address"
|
||||
msgstr "Alamat Email"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:41
|
||||
msgid "Name"
|
||||
msgstr "Nama"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:42
|
||||
msgid "GPG fingerprint"
|
||||
msgstr "sidik jari GPG"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:43
|
||||
msgid "Debian user name"
|
||||
msgstr "nama pengguna Debian"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:44
|
||||
msgid "Non Debian email address"
|
||||
msgstr "Selain alamat email Debian"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:45
|
||||
msgid "Alioth user name"
|
||||
msgstr "nama pengguna Alioth"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:97
|
||||
#: ddportfolioservice/model/urlbuilder.py:101
|
||||
#, python-format
|
||||
msgid "Missing input: %s"
|
||||
msgstr "Tidak ada masukan: %s"
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:25
|
||||
#: ddportfolioservice/templates/base.mako:33
|
||||
msgid "Debian Member Portfolio Service"
|
||||
msgstr "Layanan Portfolio Anggota Debian"
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:31
|
||||
msgid "Debian Logo"
|
||||
msgstr "Logo Debian"
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:34
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
"Layanan ini terinspirasi dari halaman <a href=\"http://wiki.debian.org/"
|
||||
"DDPortfolio\">DDPortfolio Stefano Zacchiroli di Wiki Debian</a>. Anda dapat "
|
||||
"membuat sebuah link kustom yang mengarah ke Anggota Debian atau informasi "
|
||||
"mengenai pengelola paket Debian."
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:41
|
||||
msgid "AGPL - Free Software"
|
||||
msgstr "AGPL - Free Software"
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:43
|
||||
#, fuzzy, python-format
|
||||
msgid ""
|
||||
"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>. If you want to translate this service to "
|
||||
"your language you can contribute at <a href=\"%(transifexurl)s\" title="
|
||||
"\"Debian Member Portfolio Service at Transifex\">Transifex</a>."
|
||||
msgstr ""
|
||||
"Layanan ini tersedia di bawah persyaratan <a href=\"http://www.gnu.org/"
|
||||
"licenses/agpl.html\">GNU Affero General Public License</a> seperti yang "
|
||||
"diterbitkan oleh Free Software Foundation, baik versi 3 dari Lisensi, atau "
|
||||
"(dengan pilihan Anda) versi lainnya. Anda dapat <a href=\"%(browseurl)s\" "
|
||||
"title=\"Gitweb repository browser URL\">menelusuri kode sumber</a> atau klon "
|
||||
"dari <a href=\"%(cloneurl)s\" title=\"git clone URL\">%(cloneurl)s</a> "
|
||||
"menggunakan <a href=\"http://git-scm.com/\">git</a>."
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:44
|
||||
#| msgid "Copyright © 2009, 2010, 2011, 2012 Jan Dittberner"
|
||||
msgid "Copyright © 2009-2014 Jan Dittberner"
|
||||
msgstr "Hak Cipta © 2009-2014 Jan Dittberner"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:24
|
||||
msgid "Enter your personal information"
|
||||
msgstr "Masukkan informasi data pribadi anda"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:30
|
||||
#: ddportfolioservice/templates/showurls.mako:28
|
||||
msgid "Debian Member Portfolio"
|
||||
msgstr "Portfolio Anggota Debian"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:36
|
||||
msgid "Email address:"
|
||||
msgstr "Alamat surel:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:47
|
||||
msgid "Show all form fields"
|
||||
msgstr "Tampilkan semua bagian formulir"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:54
|
||||
msgid "Name:"
|
||||
msgstr "Nama:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:64
|
||||
msgid "GPG fingerprint:"
|
||||
msgstr "sidik jari GPG"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:79
|
||||
msgid "Debian user name:"
|
||||
msgstr "Nama pengguna Debian:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:94
|
||||
msgid "Non Debian email address:"
|
||||
msgstr "Selain alamat email Debian:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:109
|
||||
msgid "Alioth user name:"
|
||||
msgstr "Nama pengguna Alioth:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:125
|
||||
msgid "Wiki user name:"
|
||||
msgstr "Nama pengguna Wiki"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:140
|
||||
msgid "Forum user id:"
|
||||
msgstr "ID pengguna Forum:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:151
|
||||
msgid "Output format:"
|
||||
msgstr "Format Keluaran:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:157
|
||||
msgid "HTML"
|
||||
msgstr "HTML"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:159
|
||||
msgid "JSON"
|
||||
msgstr "JSON"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:161
|
||||
msgid "Build Debian Member Portfolio URLs"
|
||||
msgstr "Membangun URL Portfolio Anggota Debian"
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:24
|
||||
msgid "Your personal links"
|
||||
msgstr "Tautan pribadi anda"
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:31
|
||||
msgid "Usage"
|
||||
msgstr "Penggunaan"
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:31
|
||||
msgid "URL"
|
||||
msgstr "URL"
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:41
|
||||
msgid "Error during URL creation:"
|
||||
msgstr "Kesalahan selama pembuatan URL:"
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:68
|
||||
msgid "Restart"
|
||||
msgstr "Mulai ulang"
|
Binary file not shown.
|
@ -0,0 +1,419 @@
|
|||
# Portuguese (Brazil) translations for ddportfolioservice.
|
||||
# Copyright (C) 2012 ORGANIZATION
|
||||
# This file is distributed under the same license as the ddportfolioservice
|
||||
# project.
|
||||
#
|
||||
# Translators:
|
||||
# Daniel Manzano <dzm747@hotmail.com>, 2012.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Debian Member Portfolio Service\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2014-01-11 00:25+0000\n"
|
||||
"PO-Revision-Date: 2014-01-11 01:27+0100\n"
|
||||
"Last-Translator: Jan Dittberner <jan@dittberner.info>\n"
|
||||
"Language-Team: Portuguese (Brazil) (http://www.transifex.net/projects/p/"
|
||||
"debportfolioservice/language/pt_BR/)\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.6\n"
|
||||
"X-Generator: Poedit 1.5.4\n"
|
||||
"Language: pt_BR\n"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:45
|
||||
msgid "Overview"
|
||||
msgstr "Visão Geral"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:46
|
||||
msgid "Debian Member's Package Overview"
|
||||
msgstr "Visão geral de Pacote de membros Debian"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:47
|
||||
msgid ""
|
||||
"Debian Member's Package Overview\n"
|
||||
"... showing all email addresses"
|
||||
msgstr ""
|
||||
"Visão geral de Pacote de membros Debian\n"
|
||||
"... mostrando todos os endereços de email"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:51
|
||||
msgid "Bugs"
|
||||
msgstr "Bugs"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:52
|
||||
msgid ""
|
||||
"bugs received\n"
|
||||
"(note: co-maintainers not listed, see <a href=\"http://bugs.debian.org/cgi-"
|
||||
"bin/bugreport.cgi?bug=430986\">#430986</a>)"
|
||||
msgstr ""
|
||||
"Bugs recebidos\n"
|
||||
"(nota: co-mantenedores não listados, veja <a href=\"http://bugs.debian.org/"
|
||||
"cgi-bin/bugreport.cgi?bug=430986\">#430986</a>)"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:56
|
||||
msgid "bugs reported"
|
||||
msgstr "Bugs reportados"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:57
|
||||
msgid "user tags"
|
||||
msgstr "Tags de usuário"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:58
|
||||
msgid ""
|
||||
"all messages (i.e., full text search for developer name on all bug logs)"
|
||||
msgstr ""
|
||||
"Todas as mensagens (Ex. pesquisa completa de texto para nome de desenvovedor "
|
||||
"em todos os logs de bug)"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:60
|
||||
msgid "<a href=\"http://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
msgstr "<a href=\"http://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:61
|
||||
msgid "correspondent for bugs"
|
||||
msgstr "correspondente para bugs"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:62
|
||||
msgid "one year open bug history graph"
|
||||
msgstr "Gráfico histórico de bug aberto há um ano "
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:65
|
||||
msgid "Build"
|
||||
msgstr "Construção"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:66
|
||||
msgid "buildd.d.o"
|
||||
msgstr "buildd.d.o"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:67
|
||||
msgid "igloo"
|
||||
msgstr "Iglu"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:70
|
||||
msgid "Quality Assurance"
|
||||
msgstr "Garantia de qualidade"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:71
|
||||
msgid "maintainer dashboard"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:72
|
||||
msgid "lintian reports"
|
||||
msgstr "relatórios lintian"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:73
|
||||
msgid "full lintian reports (i.e. including \"info\"-level messages)"
|
||||
msgstr "relatórios lintian completos (Ex. incluíndo mensagens \"info\"-level)"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:75
|
||||
msgid "piuparts"
|
||||
msgstr "piuparts"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:76
|
||||
msgid "Debian patch tracking system"
|
||||
msgstr "Sistema de patch tracking Debian"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:77
|
||||
msgid "Debian Url ChecKer"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:80
|
||||
msgid "Mailing Lists"
|
||||
msgstr "Listas de discussão"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:81
|
||||
msgid "lists.d.o"
|
||||
msgstr "lists.d.o"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:82
|
||||
msgid "lists.a.d.o"
|
||||
msgstr "lists.a.d.o"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:83
|
||||
msgid "gmane"
|
||||
msgstr "gmane"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:86
|
||||
msgid "Files"
|
||||
msgstr "Arquivos"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:87
|
||||
msgid "people.d.o"
|
||||
msgstr "people.d.o"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:88
|
||||
msgid "oldpeople"
|
||||
msgstr "oldpeople"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:89
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:97
|
||||
msgid "Alioth"
|
||||
msgstr "Alioth"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:92
|
||||
msgid "Membership"
|
||||
msgstr "Associação"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:93
|
||||
msgid "NM"
|
||||
msgstr "NM"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:94
|
||||
msgid "DB information via finger"
|
||||
msgstr "Infomações DB via finger"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:95
|
||||
msgid "DB information via HTTP"
|
||||
msgstr "Informações DB via HTTP"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:96
|
||||
msgid "FOAF profile"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:98
|
||||
msgid "Wiki"
|
||||
msgstr "Wiki"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:99
|
||||
msgid "Forum"
|
||||
msgstr "Fórum"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:102
|
||||
msgid "Miscellaneous"
|
||||
msgstr "Miscelânea"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:103
|
||||
msgid "debtags"
|
||||
msgstr "debtags"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:104
|
||||
msgid "Planet Debian (name)"
|
||||
msgstr ""
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:105
|
||||
#, fuzzy
|
||||
#| msgid "Debian user name"
|
||||
msgid "Planet Debian (username)"
|
||||
msgstr "Nome de usuário Debian"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:106
|
||||
msgid "links"
|
||||
msgstr "links"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:107
|
||||
msgid "Debian website"
|
||||
msgstr "Site do Debian"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:108
|
||||
msgid "Debian search"
|
||||
msgstr "Pesquisa Debian"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:109
|
||||
msgid "GPG public key via finger"
|
||||
msgstr "Chave pública GPG via finger"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:110
|
||||
msgid "GPG public key via HTTP"
|
||||
msgstr "Chave pública GPG via HTTP"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:111
|
||||
msgid "NM, AM participation"
|
||||
msgstr "Participação NM, AM"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:112
|
||||
#, fuzzy
|
||||
#| msgid "Enter your personal information"
|
||||
msgid "Contribution information"
|
||||
msgstr "Insira suas informações pessoais"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:115
|
||||
msgid "Information reachable via ssh (for Debian Members)"
|
||||
msgstr "Informação alcançável via ssh (para membros Debian)"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:116
|
||||
msgid "owned debian.net domains"
|
||||
msgstr "domínios debian.net adquiridos"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:117
|
||||
msgid ""
|
||||
"<a href=\"http://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> database "
|
||||
"information"
|
||||
msgstr ""
|
||||
"<a href=\"http://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> informações "
|
||||
"de banco de dados"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:119
|
||||
msgid "Group membership information"
|
||||
msgstr "Informações de Grupos associados"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:122
|
||||
msgid "Ubuntu"
|
||||
msgstr "Ubuntu"
|
||||
|
||||
#: ddportfolioservice/controllers/ddportfolio.py:123
|
||||
msgid "Available patches from Ubuntu"
|
||||
msgstr "Patches disponíveis para Ubuntu"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:40
|
||||
msgid "Email address"
|
||||
msgstr "Endereços de email"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:41
|
||||
msgid "Name"
|
||||
msgstr "Nome"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:42
|
||||
msgid "GPG fingerprint"
|
||||
msgstr "Fingerprint GPG"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:43
|
||||
msgid "Debian user name"
|
||||
msgstr "Nome de usuário Debian"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:44
|
||||
msgid "Non Debian email address"
|
||||
msgstr "Endereço de email não Debian"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:45
|
||||
msgid "Alioth user name"
|
||||
msgstr "Nome de usuário Alioth"
|
||||
|
||||
#: ddportfolioservice/model/urlbuilder.py:97
|
||||
#: ddportfolioservice/model/urlbuilder.py:101
|
||||
#, python-format
|
||||
msgid "Missing input: %s"
|
||||
msgstr "Entrada restante: %s"
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:25
|
||||
#: ddportfolioservice/templates/base.mako:33
|
||||
msgid "Debian Member Portfolio Service"
|
||||
msgstr "Membro do Serviço de Portfolio Debian"
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:31
|
||||
msgid "Debian Logo"
|
||||
msgstr "Logo Debian"
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:34
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
"Este serviço tem sido inspirado por Stefano Zacchiroli's <a href=\"http://"
|
||||
"wiki.debian.org/DDPortfolio\">Página DDPortfolio na Debian Wiki</a>. Você "
|
||||
"pode criar um conjunto de links customizados apontando para informações, ou "
|
||||
"de membro Debian, ou de mantenedor de pacotes a respeito de Debian."
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:41
|
||||
msgid "AGPL - Free Software"
|
||||
msgstr "AGPL - Sofware Livre"
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:43
|
||||
#, fuzzy, python-format
|
||||
msgid ""
|
||||
"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>. If you want to translate this service to "
|
||||
"your language you can contribute at <a href=\"%(transifexurl)s\" title="
|
||||
"\"Debian Member Portfolio Service at Transifex\">Transifex</a>."
|
||||
msgstr ""
|
||||
"O serviço está disponível sob os termos da <a href=\"http://www.gnu.org/"
|
||||
"licenses/agpl.html\">Licença Pública Geral Affero GNU</a> conforme "
|
||||
"publicado pela the Free Software Foundation, tanto na versão 3 da licença, "
|
||||
"como (a seu critério) qualquer versão mais recente. Você pode<a href="
|
||||
"\"%(browseurl)s\" title=\"Gitweb repository browser URL\">visualizar o "
|
||||
"código fonte</a> ou cloná-lo<a href=\"%(cloneurl)s\" title=\"git clone URL\">"
|
||||
"%(cloneurl)s</a> usando <a href=\"http://git-scm.com/\">git</a>."
|
||||
|
||||
#: ddportfolioservice/templates/base.mako:44
|
||||
#| msgid "Copyright © 2009, 2010, 2011, 2012 Jan Dittberner"
|
||||
msgid "Copyright © 2009-2014 Jan Dittberner"
|
||||
msgstr "Direitos Autorais © 2009-2014 Jan Dittberner"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:24
|
||||
msgid "Enter your personal information"
|
||||
msgstr "Insira suas informações pessoais"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:30
|
||||
#: ddportfolioservice/templates/showurls.mako:28
|
||||
msgid "Debian Member Portfolio"
|
||||
msgstr "Portfolio de Membro Debian"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:36
|
||||
msgid "Email address:"
|
||||
msgstr "Endereço de email:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:47
|
||||
msgid "Show all form fields"
|
||||
msgstr "Mostrar todos os campos"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:54
|
||||
msgid "Name:"
|
||||
msgstr "Nome:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:64
|
||||
msgid "GPG fingerprint:"
|
||||
msgstr "Fingerprint GPG:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:79
|
||||
msgid "Debian user name:"
|
||||
msgstr "Nome de usuário Debian:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:94
|
||||
msgid "Non Debian email address:"
|
||||
msgstr "Endereço de email não Debian:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:109
|
||||
msgid "Alioth user name:"
|
||||
msgstr "Nome de usuário Alioth:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:125
|
||||
msgid "Wiki user name:"
|
||||
msgstr "Nome de usuário Wiki:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:140
|
||||
msgid "Forum user id:"
|
||||
msgstr "Id de usuário do fórum:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:151
|
||||
msgid "Output format:"
|
||||
msgstr "Formato de saída:"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:157
|
||||
msgid "HTML"
|
||||
msgstr "HTML"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:159
|
||||
msgid "JSON"
|
||||
msgstr "JSON"
|
||||
|
||||
#: ddportfolioservice/templates/showform.mako:161
|
||||
msgid "Build Debian Member Portfolio URLs"
|
||||
msgstr "URLs de Portfolio de Membros Debian em Construção"
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:24
|
||||
msgid "Your personal links"
|
||||
msgstr "Seus links pessoais"
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:31
|
||||
msgid "Usage"
|
||||
msgstr "MOdo de uso"
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:31
|
||||
msgid "URL"
|
||||
msgstr "URL"
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:41
|
||||
msgid "Error during URL creation:"
|
||||
msgstr "Erro durante criação de URL:"
|
||||
|
||||
#: ddportfolioservice/templates/showurls.mako:68
|
||||
msgid "Restart"
|
||||
msgstr "Reiniciar"
|
22
debianmemberportfolio/lib/__init__.py
Normal file
22
debianmemberportfolio/lib/__init__.py
Normal file
|
@ -0,0 +1,22 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# DDPortfolio service lib package
|
||||
# Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# 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
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
41
debianmemberportfolio/lib/app_globals.py
Normal file
41
debianmemberportfolio/lib/app_globals.py
Normal file
|
@ -0,0 +1,41 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# DDPortfolio service application Globals
|
||||
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# 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
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""The application's Globals object"""
|
||||
|
||||
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, config):
|
||||
"""
|
||||
One instance of Globals is created during application
|
||||
initialization and is available during requests via the
|
||||
'app_globals' variable
|
||||
"""
|
||||
self.cache = CacheManager(**parse_cache_config_options(config))
|
47
debianmemberportfolio/lib/base.py
Normal file
47
debianmemberportfolio/lib/base.py
Normal file
|
@ -0,0 +1,47 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# DDPortfolio service base controller
|
||||
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# 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
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""The base Controller API
|
||||
|
||||
Provides the BaseController class for subclassing.
|
||||
"""
|
||||
from pylons import tmpl_context as c, request
|
||||
from pylons.controllers import WSGIController
|
||||
from pylons.i18n import add_fallback
|
||||
from pylons.templating import render_mako as render
|
||||
|
||||
|
||||
class BaseController(WSGIController):
|
||||
|
||||
def __call__(self, environ, start_response):
|
||||
"""Invoke the Controller"""
|
||||
# WSGIController.__call__ dispatches to the Controller method
|
||||
# the request is routed to. This routing information is
|
||||
# available in environ['pylons.routes_dict']
|
||||
# set language environment
|
||||
for lang in request.languages:
|
||||
try:
|
||||
add_fallback(lang.replace('-', '_'))
|
||||
except:
|
||||
pass
|
||||
c.messages = {'errors': [], 'messages': []}
|
||||
return WSGIController.__call__(self, environ, start_response)
|
33
debianmemberportfolio/lib/helpers.py
Normal file
33
debianmemberportfolio/lib/helpers.py
Normal file
|
@ -0,0 +1,33 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# DDPortfolio service webhelpers
|
||||
# Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# 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
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""Helper functions
|
||||
|
||||
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, literal
|
||||
from webhelpers.html.tags import stylesheet_link, javascript_link, image, \
|
||||
form, text, radio, submit, end_form, link_to, checkbox
|
||||
from webhelpers.text import truncate
|
||||
from webhelpers.textile import textile
|
||||
from pylons import url
|
1
debianmemberportfolio/model/.gitignore
vendored
Normal file
1
debianmemberportfolio/model/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
keyringcache
|
26
debianmemberportfolio/model/__init__.py
Normal file
26
debianmemberportfolio/model/__init__.py
Normal file
|
@ -0,0 +1,26 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# DDPortfolio service model package
|
||||
# Copyright (c) 2009 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# 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
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""
|
||||
Model classes and model related utilities for the Debian Member Portfolio
|
||||
service.
|
||||
"""
|
54
debianmemberportfolio/model/dddatabuilder.py
Normal file
54
debianmemberportfolio/model/dddatabuilder.py
Normal file
|
@ -0,0 +1,54 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# DDPortfolio service DD data builder
|
||||
# Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# 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
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""This file contains code to build a representation of a person based
|
||||
on keyring data associated to a given email address."""
|
||||
import logging
|
||||
from ddportfolioservice.model import keyfinder
|
||||
|
||||
TYPE_NO = 0
|
||||
TYPE_DM = 1
|
||||
TYPE_DD = 2
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
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['type'] = TYPE_DD
|
||||
elif fields['name'] and fields['gpgfp']:
|
||||
fields['type'] = TYPE_DM
|
||||
else:
|
||||
fields['type'] = TYPE_NO
|
||||
if fields['name']:
|
||||
log.debug('generate wikihomepage from name')
|
||||
fields['wikihomepage'] = "".join(
|
||||
[part.capitalize() for part in fields['name'].split()])
|
||||
|
||||
return fields
|
124
debianmemberportfolio/model/ddportfolio.ini
Normal file
124
debianmemberportfolio/model/ddportfolio.ini
Normal file
|
@ -0,0 +1,124 @@
|
|||
#
|
||||
# Configuration for Debian Member Portfolio Service
|
||||
#
|
||||
# Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# This file is part of the Debian Member Portfolio Service.
|
||||
#
|
||||
# Debian Member Portfolio 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.
|
||||
#
|
||||
# Debian Member Portfolio 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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
[DEFAULT]
|
||||
gnupghome=~/debian/gnupghome
|
||||
keyring.dir=~/debian/keyring.debian.org/keyrings
|
||||
urlbuilder.sections=overview,bugs,build,qa,lists,files,membership,
|
||||
miscellaneous,ssh,ubuntu
|
||||
|
||||
[overview]
|
||||
urls=ddpo,alladdresses
|
||||
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,usertags,searchall,wnpp,correspondent,graph
|
||||
received.pattern=http://bugs.debian.org/%(email)s
|
||||
reported.pattern=http://bugs.debian.org/from:%(email)s
|
||||
usertags.pattern=http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=%(email)s
|
||||
searchall.pattern=http://bugs-search.debian.org/cgi-bin/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
|
||||
graph.pattern=http://qa.debian.org/data/bts/graphs/by-maint/%(email)s.png
|
||||
|
||||
[build]
|
||||
urls=buildd
|
||||
buildd.pattern=https://buildd.debian.org/status/package.php?p=%(email)s&compact=compact&comaint=yes
|
||||
|
||||
[qa]
|
||||
urls=lintian,lintianfull,piuparts,patchtracker,dmd,duck
|
||||
dmd.pattern=http://udd.debian.org/dmd.cgi?email=%(email)s
|
||||
lintian.pattern=http://lintian.debian.org/maintainer/%(email)s.html
|
||||
lintianfull.pattern=http://lintian.debian.org/full/%(email)s.html
|
||||
piuparts.pattern=http://piuparts.debian.org/sid/maintainer/%(firstchar)s/%(email)s.html
|
||||
patchtracker.pattern=http://patch-tracker.debian.org/email/%(email)s
|
||||
duck.pattern=http://duck.debian.net/?sourcepackage=%(email)s
|
||||
|
||||
[lists]
|
||||
urls=dolists,adolists,gmane
|
||||
dolists.pattern=http://lists.debian.org/cgi-bin/search?author=%(name)s&sort=date
|
||||
adolists.pattern=http://www.google.com/search?q=site%%3Alists.alioth.debian.org+%%22%(name)s%%22
|
||||
gmane.pattern=http://search.gmane.org/?email=%(name)s&group=gmane.linux.debian.*
|
||||
# debconf list search has a tricky URL format
|
||||
# http://lists.debconf.org/lurker/search \
|
||||
# /20100510.202949.00000000@au:%(firstname)s,au:%(lastname)s.en.html
|
||||
# /YYYYMMDD.HHmmss.hashcode@au:%(firstname)s,au:%(lastname)s.en.html
|
||||
# maybe this could be implemented using some custom formatter function
|
||||
|
||||
[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,dbfinger,db,webid,alioth,wiki,forum
|
||||
nm.pattern=https://nm.debian.org/public/nmstatus/%(username)s
|
||||
dbfinger.pattern=finger %(username)s@db.debian.org
|
||||
dbfinger.type=finger
|
||||
dbfinger.optional=true
|
||||
db.pattern=http://db.debian.org/search.cgi?uid=%(username)s&dosearch=Search
|
||||
db.optional=true
|
||||
webid.pattern=http://webid.debian.net/maintainers/%(username)s
|
||||
webid.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
|
||||
|
||||
[miscellaneous]
|
||||
urls=debtags,links,planetname,planetuser,website,search,gpgfinger,gpgweb,contrib
|
||||
debtags.pattern=http://debtags.debian.net/reports/maint/%(email)s
|
||||
planetname.pattern=http://planet-search.debian.org/cgi-bin/search.cgi?terms=%%22%(name)s%%22
|
||||
planetuser.pattern=http://planet-search.debian.org/cgi-bin/search.cgi?terms=%%22%(username)s%%22
|
||||
planetuser.optional=true
|
||||
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/cgi-bin/omega?P=%%22%(name)s%%22
|
||||
gpgfinger.pattern=finger %(username)s/key@db.debian.org
|
||||
gpgfinger.type=finger
|
||||
gpgfinger.optional=true
|
||||
gpgweb.pattern=http://db.debian.org/fetchkey.cgi?fingerprint=%(gpgfp)s
|
||||
gpgweb.optional=true
|
||||
nm.pattern=https://nm.debian.org/public/person/%(username)s
|
||||
contrib.pattern=https://contributors.debian.org/contributors/contributor/%(aliothusername)s
|
||||
contrib.optional=true
|
||||
|
||||
[ssh]
|
||||
# SSH functions
|
||||
urls=owndndoms,miainfo,groupinfo
|
||||
# owned *.debian.net domains
|
||||
owndndoms.pattern=ldapsearch -u -x -H ldap://db.debian.org -b dc=debian,dc=org uid=%(username)s dnsZoneEntry
|
||||
owndndoms.type=ldapsearch
|
||||
owndndoms.optional=true
|
||||
# MIA information
|
||||
miainfo.pattern=ssh qa.debian.org /srv/qa.debian.org/mia/mia-query %(emailnoq)s
|
||||
miainfo.type=ssh
|
||||
# Group information
|
||||
groupinfo.pattern=ssh master.debian.org id %(username)s
|
||||
groupinfo.type=ssh
|
||||
groupinfo.optional=true
|
||||
|
||||
[ubuntu]
|
||||
urls=ubuntudiff
|
||||
ubuntudiff.pattern=http://ubuntudiff.debian.net/q/uploaders/%(email)s
|
46
debianmemberportfolio/model/form.py
Normal file
46
debianmemberportfolio/model/form.py
Normal file
|
@ -0,0 +1,46 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service form handling model
|
||||
# Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# This file is part of Debian Member Portfolio Service.
|
||||
#
|
||||
# Debian Member Portfolio 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.
|
||||
#
|
||||
# Debian Member Portfolio 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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
import formencode
|
||||
|
||||
|
||||
class DeveloperData(formencode.Schema):
|
||||
"""Validation schema for DeveloperData."""
|
||||
allow_extra_fields = True
|
||||
filter_extra_fields = True
|
||||
email = formencode.validators.Email(not_empty=True)
|
||||
name = formencode.validators.String(not_empty=True)
|
||||
gpgfp = formencode.All(formencode.validators.PlainText(),
|
||||
formencode.validators.MinLength(32),
|
||||
formencode.validators.MaxLength(40))
|
||||
username = formencode.validators.PlainText()
|
||||
nonddemail = formencode.validators.Email()
|
||||
aliothusername = formencode.validators.PlainText()
|
||||
mode = formencode.validators.OneOf([u'json', u'html'], if_missing=u'html')
|
||||
forumsid = formencode.validators.Int(if_missing=None)
|
||||
wikihomepage = formencode.validators.String(if_missing=None)
|
||||
|
||||
|
||||
class DDDataRequest(formencode.Schema):
|
||||
"""Validation schema for DDData request."""
|
||||
allow_extra_fields = True
|
||||
filter_extra_fields = False
|
||||
email = formencode.validators.Email(not_empty=True)
|
109
debianmemberportfolio/model/keyfinder.py
Normal file
109
debianmemberportfolio/model/keyfinder.py
Normal file
|
@ -0,0 +1,109 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service key finder module
|
||||
# Copyright (c) 2009-2014 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# This file is part of Debian Member Portfolio Service.
|
||||
#
|
||||
# Debian Member Portfolio 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.
|
||||
#
|
||||
# Debian Member Portfolio 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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""
|
||||
This module provides tools for finding PGP key information from a
|
||||
given keyring.
|
||||
"""
|
||||
import logging
|
||||
import time
|
||||
import sys
|
||||
|
||||
db = None
|
||||
cachetimestamp = 0
|
||||
|
||||
|
||||
def _get_keyring_cache():
|
||||
global db, cachetimestamp
|
||||
if db is None or (time.time() - cachetimestamp) > 86300:
|
||||
import anydbm
|
||||
import pkg_resources
|
||||
import os.path
|
||||
filename = pkg_resources.resource_filename(__name__,
|
||||
'keyringcache')
|
||||
logging.debug('reading cache data from %s', filename)
|
||||
assert os.path.exists(filename) and os.path.isfile(filename)
|
||||
db = anydbm.open(filename, 'r')
|
||||
cachetimestamp = time.time()
|
||||
return db
|
||||
|
||||
|
||||
def _get_cached(cachekey):
|
||||
cache = _get_keyring_cache()
|
||||
logging.debug('cache lookup for %s', cachekey)
|
||||
if cachekey in cache:
|
||||
logging.debug('found entry %s', cache[cachekey])
|
||||
return cache[cachekey]
|
||||
return None
|
||||
|
||||
|
||||
def getFingerprintByEmail(email):
|
||||
"""
|
||||
Gets the fingerprints associated with the given email address if
|
||||
available.
|
||||
"""
|
||||
return _get_cached('fpr:email:%s' % email)
|
||||
|
||||
|
||||
def getRealnameByEmail(email):
|
||||
"""
|
||||
Gets the real names associated with the given email address if
|
||||
available.
|
||||
"""
|
||||
return _get_cached('name:email:%s' % email)
|
||||
|
||||
|
||||
def getLoginByEmail(email):
|
||||
"""
|
||||
Gets the logins associated with the given email address if
|
||||
available.
|
||||
"""
|
||||
return _get_cached('login:email:%s' % email)
|
||||
|
||||
|
||||
def getLoginByFingerprint(fpr):
|
||||
"""
|
||||
Gets the login associated with the given fingerprint if available.
|
||||
"""
|
||||
return _get_cached('login:fpr:%s' % fpr)
|
||||
|
||||
|
||||
def _dump_cache():
|
||||
cache = _get_keyring_cache()
|
||||
fprs = []
|
||||
for key in cache.keys():
|
||||
if key.startswith('email:fpr:'):
|
||||
fpr = key.replace('email:fpr:', '')
|
||||
if not fpr in fprs:
|
||||
fprs.append(fpr)
|
||||
|
||||
for fpr in fprs:
|
||||
login = getLoginByFingerprint(fpr)
|
||||
email = _get_cached('email:fpr:%s' % fpr)
|
||||
name = _get_cached('name:fpr:%s' % fpr)
|
||||
|
||||
print fpr, login, ':'
|
||||
print ' ', name, email
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
logging.basicConfig(stream=sys.stderr, level=logging.WARNING)
|
||||
_dump_cache()
|
182
debianmemberportfolio/model/keyringanalyzer.py
Normal file
182
debianmemberportfolio/model/keyringanalyzer.py
Normal file
|
@ -0,0 +1,182 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio service application key ring analyzer tool
|
||||
#
|
||||
# Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# This file is part of the Debian Member Portfolio service.
|
||||
#
|
||||
# Debian Member Portfolio 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.
|
||||
#
|
||||
# Debian Member Portfolio 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
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""
|
||||
This is a tool that analyzes GPG and PGP keyrings and stores the
|
||||
retrieved data in a file database. The tool was inspired by Debian
|
||||
qa's carnivore.
|
||||
"""
|
||||
|
||||
import anydbm
|
||||
import pkg_resources
|
||||
import glob
|
||||
import ConfigParser
|
||||
import os
|
||||
import os.path
|
||||
import logging
|
||||
import subprocess
|
||||
import sys
|
||||
import email.utils
|
||||
|
||||
|
||||
CONFIG = ConfigParser.SafeConfigParser()
|
||||
|
||||
|
||||
def _get_keyrings():
|
||||
"""
|
||||
Gets the available keyring files from the keyring directory
|
||||
configured in ddportfolio.ini.
|
||||
"""
|
||||
keyringdir = os.path.expanduser(CONFIG.get('DEFAULT', 'keyring.dir'))
|
||||
logging.debug("keyring dir is %s", keyringdir)
|
||||
keyrings = glob.glob(os.path.join(keyringdir, '*.gpg'))
|
||||
keyrings.extend(glob.glob(os.path.join(keyringdir, '*.pgp')))
|
||||
keyrings.sort()
|
||||
return keyrings
|
||||
|
||||
|
||||
def _parse_uid(uid):
|
||||
"""
|
||||
Parse a uid of the form 'Real Name <email@example.com>' into email
|
||||
and realname parts.
|
||||
"""
|
||||
|
||||
# First try with the Python library, but it doesn't always catch everything
|
||||
(name, mail) = email.utils.parseaddr(uid)
|
||||
if (not name) and (not mail):
|
||||
logging.warning("malformed uid %s", uid)
|
||||
if (not name) or (not mail):
|
||||
logging.debug("strange uid %s: '%s' - <%s>", uid, name, mail)
|
||||
# Try and do better than the python library
|
||||
if not '@' in mail:
|
||||
uid = uid.strip()
|
||||
# First, strip comment
|
||||
s = uid.find('(')
|
||||
e = uid.find(')')
|
||||
if s >= 0 and e >= 0:
|
||||
uid = uid[:s] + uid[e + 1:]
|
||||
s = uid.find('<')
|
||||
e = uid.find('>')
|
||||
mail = None
|
||||
if s >= 0 and e >= 0:
|
||||
mail = uid[s + 1:e]
|
||||
uid = uid[:s] + uid[e + 1:]
|
||||
uid = uid.strip()
|
||||
if not mail and uid.find('@') >= 0:
|
||||
mail, uid = uid, mail
|
||||
|
||||
name = uid
|
||||
logging.debug("corrected: '%s' - <%s>", name, mail)
|
||||
return (name, mail)
|
||||
|
||||
resultdict = {}
|
||||
|
||||
|
||||
def _get_canonical(key):
|
||||
if not key in resultdict:
|
||||
resultdict[key] = []
|
||||
return key
|
||||
|
||||
|
||||
def _add_to_result(key, newvalue):
|
||||
logging.debug("adding %s: %s", key, newvalue)
|
||||
thekey = _get_canonical(key)
|
||||
if newvalue not in resultdict[thekey]:
|
||||
resultdict[thekey].append(newvalue)
|
||||
|
||||
|
||||
def _handle_mail(mail, fpr):
|
||||
if mail.endswith('@debian.org'):
|
||||
login = mail[0:-len('@debian.org')]
|
||||
_add_to_result('login:email:%s' % mail, login)
|
||||
_add_to_result('login:fpr:%s' % fpr, login)
|
||||
_add_to_result('fpr:login:%s' % login, fpr)
|
||||
_add_to_result('fpr:email:%s' % mail, fpr)
|
||||
_add_to_result('email:fpr:%s' % fpr, mail)
|
||||
|
||||
|
||||
def _handle_uid(uid, fpr):
|
||||
# Do stuff with 'uid'
|
||||
if uid:
|
||||
(uid, mail) = _parse_uid(uid)
|
||||
if mail:
|
||||
_handle_mail(mail, fpr)
|
||||
if uid:
|
||||
_add_to_result('name:fpr:%s' % fpr, uid)
|
||||
if mail:
|
||||
_add_to_result('name:email:%s' % mail, uid)
|
||||
return fpr
|
||||
|
||||
|
||||
def process_gpg_list_keys_line(line, fpr):
|
||||
"""
|
||||
Process a line of gpg --list-keys --with-colon output.
|
||||
"""
|
||||
items = line.split(':')
|
||||
if items[0] == 'pub':
|
||||
return None
|
||||
if items[0] == 'fpr':
|
||||
return items[9].strip()
|
||||
if items[0] == 'uid':
|
||||
if items[1] == 'r':
|
||||
return fpr
|
||||
return _handle_uid(items[9].strip(), fpr)
|
||||
else:
|
||||
return fpr
|
||||
|
||||
|
||||
def process_keyrings():
|
||||
"""Process the keyrings and store the extracted data in an anydbm
|
||||
file."""
|
||||
for keyring in _get_keyrings():
|
||||
logging.debug("get data from %s", keyring)
|
||||
proc = subprocess.Popen([
|
||||
"gpg", "--no-options", "--no-default-keyring",
|
||||
"--homedir", os.path.expanduser(
|
||||
CONFIG.get('DEFAULT', 'gnupghome')),
|
||||
"--no-expensive-trust-checks",
|
||||
"--keyring", keyring, "--list-keys",
|
||||
"--with-colons", "--fixed-list-mode", "--with-fingerprint",
|
||||
"--with-fingerprint"],
|
||||
stdout=subprocess.PIPE)
|
||||
fpr = None
|
||||
for line in proc.stdout.readlines():
|
||||
fpr = process_gpg_list_keys_line(line, fpr)
|
||||
retcode = proc.wait()
|
||||
if retcode != 0:
|
||||
logging.error("subprocess ended with return code %d", retcode)
|
||||
db = anydbm.open(pkg_resources.resource_filename(__name__,
|
||||
'keyringcache'), 'c')
|
||||
for key in resultdict:
|
||||
db[key] = ":".join(resultdict[key])
|
||||
db.close()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
logging.basicConfig(stream=sys.stderr, level=logging.WARNING)
|
||||
CONFIG.readfp(pkg_resources.resource_stream(
|
||||
__name__, 'ddportfolio.ini'))
|
||||
gpghome = os.path.expanduser(CONFIG.get('DEFAULT', 'gnupghome'))
|
||||
if not os.path.isdir(gpghome):
|
||||
os.makedirs(gpghome, 0700)
|
||||
process_keyrings()
|
102
debianmemberportfolio/model/urlbuilder.py
Normal file
102
debianmemberportfolio/model/urlbuilder.py
Normal file
|
@ -0,0 +1,102 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf8 -*-
|
||||
#
|
||||
# DDPortfolio service url builder
|
||||
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# 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
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""
|
||||
This module provides the function build_urls to build personalized
|
||||
URLs using the given information and the URL patterns defined in
|
||||
ddportfolio.ini.
|
||||
"""
|
||||
|
||||
from ConfigParser import ConfigParser, InterpolationMissingOptionError
|
||||
import pkg_resources
|
||||
from ddportfolioservice.model import keyfinder
|
||||
from urllib import quote_plus
|
||||
from pylons.i18n.translation import _, N_
|
||||
|
||||
|
||||
my_config = ConfigParser()
|
||||
my_config.readfp(pkg_resources.resource_stream(__name__, 'ddportfolio.ini'))
|
||||
|
||||
_FIELDNAMES_MAP = {
|
||||
'email': N_('Email address'),
|
||||
'name': N_('Name'),
|
||||
'gpgfp': N_('GPG fingerprint'),
|
||||
'username': N_('Debian user name'),
|
||||
'nonddemail': N_('Non Debian email address'),
|
||||
'aliothusername': N_('Alioth user name'),
|
||||
}
|
||||
|
||||
|
||||
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."""
|
||||
data = []
|
||||
qfields = {}
|
||||
for key, value in fields.iteritems():
|
||||
if value is not None:
|
||||
if isinstance(value, unicode):
|
||||
qfields[key] = quote_plus(value.encode('utf8'))
|
||||
elif isinstance(value, str):
|
||||
qfields[key] = quote_plus(value)
|
||||
else:
|
||||
qfields[key] = value
|
||||
|
||||
if 'gpgfp' not in qfields:
|
||||
fpr = keyfinder.getFingerprintByEmail(fields['email'].encode('utf8'))
|
||||
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(',')]:
|
||||
data.append(['section', section])
|
||||
if my_config.has_option(section, 'urls'):
|
||||
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 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
|
1
debianmemberportfolio/public/.gitignore
vendored
Normal file
1
debianmemberportfolio/public/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
javascript
|
BIN
debianmemberportfolio/public/images/agplv3-88x31.png
Normal file
BIN
debianmemberportfolio/public/images/agplv3-88x31.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.2 KiB |
BIN
debianmemberportfolio/public/images/openlogo-100.jpg
Normal file
BIN
debianmemberportfolio/public/images/openlogo-100.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.2 KiB |
2
debianmemberportfolio/public/robots.txt
Normal file
2
debianmemberportfolio/public/robots.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
User-Agent: *
|
||||
Allow: /
|
61
debianmemberportfolio/public/stylesheets/style.css
Normal file
61
debianmemberportfolio/public/stylesheets/style.css
Normal file
|
@ -0,0 +1,61 @@
|
|||
html, body {
|
||||
font-family:sans, Arial;
|
||||
font-size:10pt;
|
||||
}
|
||||
|
||||
#debianlogo {
|
||||
float:right;
|
||||
}
|
||||
|
||||
#content {
|
||||
clear:both;
|
||||
}
|
||||
|
||||
#agpllogo {
|
||||
float:left;
|
||||
margin-right:10px;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse:collapse;
|
||||
width:100%;
|
||||
}
|
||||
|
||||
th, td {
|
||||
border:1px solid grey;
|
||||
}
|
||||
|
||||
tr.section {
|
||||
background-color: #a0a0a0;
|
||||
color: #f0f0f0;
|
||||
}
|
||||
|
||||
tr.odd td {
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
|
||||
tr.even td {
|
||||
background-color: #e0e0ff;
|
||||
}
|
||||
|
||||
tr.error td {
|
||||
background-color: #ffe0e0;
|
||||
}
|
||||
|
||||
td {
|
||||
vertical-align:top;
|
||||
padding:2px;
|
||||
}
|
||||
|
||||
td p {
|
||||
padding:0;
|
||||
margin:0;
|
||||
}
|
||||
|
||||
.errormsg {
|
||||
color:red;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display:none;
|
||||
}
|
52
debianmemberportfolio/templates/base.mako
Normal file
52
debianmemberportfolio/templates/base.mako
Normal file
|
@ -0,0 +1,52 @@
|
|||
## -*- coding: utf-8 -*- \
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<%doc>
|
||||
Base template for XHTML templates.
|
||||
Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
|
||||
|
||||
This file is part of the Debian Member Portfolio service.
|
||||
|
||||
Debian Member Portfolio 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.
|
||||
|
||||
Debian Member Portfolio 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 <http://www.gnu.org/licenses/>.
|
||||
</%doc>
|
||||
<html>
|
||||
<head>
|
||||
<title>${_('Debian Member Portfolio Service')}${self.titleaddon()}</title>
|
||||
${h.stylesheet_link(h.url('/stylesheets/style.css'))}
|
||||
${self.extrahead()}
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
${h.image(h.url('/images/openlogo-100.jpg'), _('Debian Logo'), 100, 100,
|
||||
id='debianlogo')}
|
||||
<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 Member's or package maintainer's information regarding Debian.'''))}</p>
|
||||
<p><a class="FlattrButton" style="display:none" title="Debian Member Portfolio Service" href="${request.scheme}://portfolio.debian.net/">Debian Member Portfolio Service</a></p>
|
||||
</div>
|
||||
<div id="content">
|
||||
${self.body()}
|
||||
</div>
|
||||
<div id="footer">
|
||||
${h.image(h.url('/images/agplv3-88x31.png'), _('AGPL - Free Software'), 88, 31,
|
||||
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>. If you want to translate this service to your language you can contribute at <a href="%(transifexurl)s" title="Debian Member Portfolio Service at Transifex">Transifex</a>.''') % dict((('browseurl', 'http://debianstuff.dittberner.info/gitweb/?p=debianmemberportfolio.git;a=summary'), ('cloneurl', 'http://debianstuff.dittberner.info/git/debianmemberportfolio.git'), ('transifexurl', 'https://www.transifex.com/projects/p/debportfolioservice/'))))}</p>
|
||||
<p>${_(u'''Copyright © 2009-2014 Jan Dittberner''')}</p>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var flattr_url = '${request.scheme}://portfolio.debian.net/';
|
||||
</script>
|
||||
<script src="${request.scheme}://api.flattr.com/js/0.6/load.js?mode=auto&button=compact" type="text/javascript"></script>
|
||||
</body>
|
||||
</html>
|
||||
<%def name="extrahead()"></%def>
|
164
debianmemberportfolio/templates/showform.mako
Normal file
164
debianmemberportfolio/templates/showform.mako
Normal file
|
@ -0,0 +1,164 @@
|
|||
## -- coding: utf-8 -- \
|
||||
<%inherit file="base.mako" />
|
||||
<%doc>
|
||||
Template for the data input form.
|
||||
|
||||
Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
|
||||
|
||||
This file is part of the Debian Member Portfolio service.
|
||||
|
||||
Debian Member Portfolio 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.
|
||||
|
||||
Debian Member Portfolio 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 <http://www.gnu.org/licenses/>.
|
||||
</%doc>
|
||||
<%def name="titleaddon()">
|
||||
- ${_('Enter your personal information')}
|
||||
</%def>
|
||||
<%def name="extrahead()">${h.javascript_link('/javascript/jquery/jquery.js',
|
||||
h.url(controller='showformscripts', action='index'))}</%def>
|
||||
${h.form(h.url(action='urllist', controller='ddportfolio'), method='get')}
|
||||
<fieldset id="ddportfolio">
|
||||
<legend>${_('Debian Member Portfolio')}</legend>
|
||||
<div id="emailfield" \
|
||||
% if 'email' in c.messages['errors']:
|
||||
class="witherrors" \
|
||||
% endif
|
||||
>
|
||||
<label for="email">${_('Email address:')}
|
||||
% if 'email' in c.messages['errors']:
|
||||
<br />
|
||||
<span class="errormsg">${c.messages['errors']['email'] | h}</span>
|
||||
% endif
|
||||
</label><br />
|
||||
${h.text('email',
|
||||
h.escape(request.params.get('email', None)), id='email')}<br />
|
||||
</div>
|
||||
<div id="showallfield" class="hidden">
|
||||
${h.checkbox('showall', value='1', checked=False, id='showall')}
|
||||
<label for="showall">${_(u'Show all form fields')}</label><br />
|
||||
</div>
|
||||
<div id="namefield" \
|
||||
% if 'name' in c.messages['errors']:
|
||||
class="witherrors" \
|
||||
% endif
|
||||
>
|
||||
<label for="name">${_('Name:')}
|
||||
% if 'name' in c.messages['errors']:
|
||||
<br />
|
||||
<span class="errormsg">${c.messages['errors']['name'] | h}</span>
|
||||
% endif
|
||||
</label><br />
|
||||
${h.text('name',
|
||||
h.escape(request.params.get('name', None)), id='name')}<br />
|
||||
</div>
|
||||
<div id="gpgfpfield">
|
||||
<label for="gpgfp">${_('GPG fingerprint:')}
|
||||
% if 'gpgfp' in c.messages['errors']:
|
||||
<br />
|
||||
<span class="errormsg">${c.messages['errors']['gpgfp'] | h}</span>
|
||||
% endif
|
||||
</label><br />
|
||||
${h.text('gpgfp',
|
||||
h.escape(request.params.get('gpgfp', None)),
|
||||
id='gpgfp')}<br />
|
||||
</div>
|
||||
<div id="usernamefield" \
|
||||
% if 'username' in c.messages['errors']:
|
||||
class="witherrors" \
|
||||
% endif
|
||||
>
|
||||
<label for="username">${_('Debian user name:')}
|
||||
% if 'username' in c.messages['errors']:
|
||||
<br />
|
||||
<span class="errormsg">${c.messages['errors']['username'] | h}</span>
|
||||
% endif
|
||||
</label><br />
|
||||
${h.text('username',
|
||||
h.escape(request.params.get('username', None)),
|
||||
id='username')}<br />
|
||||
</div>
|
||||
<div id="nonddemailfield" \
|
||||
% if 'nonddemail' in c.messages['errors']:
|
||||
class="witherrors" \
|
||||
% endif
|
||||
>
|
||||
<label for="nonddemail">${_('Non Debian email address:') | h}
|
||||
% if 'nonddemail' in c.messages['errors']:
|
||||
<br />
|
||||
<span class="errormsg">${c.messages['errors']['nonddemail'] | h}</span>
|
||||
% endif
|
||||
</label><br />
|
||||
${h.text('nonddemail',
|
||||
h.escape(request.params.get('nonddemail', None)),
|
||||
id='nonddemail')}<br />
|
||||
</div>
|
||||
<div id="aliothusernamefield" \
|
||||
% if 'aliothusername' in c.messages['errors']:
|
||||
class="witherrors"
|
||||
% endif
|
||||
>
|
||||
<label for="aliothusername">${_('Alioth user name:')}
|
||||
% if 'aliothusername' in c.messages['errors']:
|
||||
<br />
|
||||
<span
|
||||
class="errormsg">${c.messages['errors']['aliothusername'] | h}</span>
|
||||
% endif
|
||||
</label><br />
|
||||
${h.text('aliothusername',
|
||||
h.escape(request.params.get('username', None)),
|
||||
id='aliothusername')}<br />
|
||||
</div>
|
||||
<div id="wikihomepagefield" \
|
||||
% if 'wikihomepage' in c.messages['errors']:
|
||||
class="witherrors"
|
||||
% endif
|
||||
>
|
||||
<label for="wikihomepage">${_('Wiki user name:')}
|
||||
% if 'wikihomepage' in c.messages['errors']:
|
||||
<br />
|
||||
<span class="errormsg">${c.messages['errors']['wikihomepage'] | h}</span>
|
||||
% endif
|
||||
</label><br />
|
||||
${h.text('wikihomepage',
|
||||
h.escape(request.params.get('wikihomepage', None)),
|
||||
id='wikihomepage')}<br />
|
||||
</div>
|
||||
<div id="forumsidfield" \
|
||||
% if 'forumsid' in c.messages['errors']:
|
||||
class="witherrors"
|
||||
% endif
|
||||
>
|
||||
<label for="forumsid">${_('Forum user id:')}
|
||||
% if 'forumsid' in c.messages['errors']:
|
||||
<br />
|
||||
<span class="errormsg">${c.messages['errors']['forumsid'] | h}</span>
|
||||
% endif
|
||||
</label><br />
|
||||
${h.text('forumsid',
|
||||
h.escape(request.params.get('forumsid', None)),
|
||||
id='forumsid')}<br />
|
||||
</div>
|
||||
<div id="modefield">
|
||||
<label for="mode_html">${_('Output format:')}
|
||||
% if 'mode' in c.messages['errors']:
|
||||
<br />
|
||||
<span class="errormsg">${c.messages['errors']['mode'] | h}</span>
|
||||
% endif
|
||||
</label><br />
|
||||
${_('HTML')} ${h.radio('mode', 'html',
|
||||
checked=(request.params.get('mode',
|
||||
'html') == 'html'))} ${_('JSON')} ${h.radio('mode',
|
||||
'json', checked=(request.params.get('mode', 'html') == 'json'))}<br />
|
||||
${h.submit('submit', value=_('Build Debian Member Portfolio URLs'))}
|
||||
</div>
|
||||
</fieldset>
|
||||
${h.end_form()}
|
122
debianmemberportfolio/templates/showformscript.mako
Normal file
122
debianmemberportfolio/templates/showformscript.mako
Normal file
|
@ -0,0 +1,122 @@
|
|||
## -*- coding: utf-8 -*- \
|
||||
<%doc>
|
||||
Helper JavaScript for the data input form.
|
||||
Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
|
||||
|
||||
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
|
||||
<http://www.gnu.org/licenses/>.
|
||||
</%doc>\
|
||||
|
||||
var defaulthiddendivs = new Array(
|
||||
'#namefield', '#gpgfpfield', '#usernamefield', '#nonddemailfield',
|
||||
'#aliothusernamefield', '#wikihomepagefield', '#forumsidfield');
|
||||
var maskedfielddivs = new Array(
|
||||
'#namefield', '#gpgfpfield', '#usernamefield', '#nonddemailfield',
|
||||
'#aliothusernamefield', '#wikihomepagefield', '#forumsidfield');
|
||||
var allfielddivs = new Array(
|
||||
'#namefield', '#gpgfpfield', '#usernamefield', '#nonddemailfield',
|
||||
'#aliothusernamefield', '#wikihomepagefield', '#forumsidfield');
|
||||
|
||||
function updateFields(data, textStatus) {
|
||||
if (data.type == 2) { // DD
|
||||
$('#name').attr('value', data.name).attr('readonly', 'readonly');
|
||||
$('#gpgfp').attr('value', data.gpgfp);
|
||||
$('#username').attr('value', data.username).attr(
|
||||
'readonly', 'readonly');
|
||||
$('#nonddemail').attr('value', data.email).focus();
|
||||
$('#aliothusername').attr('value', data.username);
|
||||
$('#wikihomepage').attr('value', data.wikihomepage);
|
||||
|
||||
$('#namefield').show();
|
||||
$('#gpgfpfield').show();
|
||||
$('#usernamefield').show();
|
||||
$('#nonddemailfield').show();
|
||||
$('#aliothusernamefield').show();
|
||||
$('#wikihomepagefield').show();
|
||||
$('#forumsidfield').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();
|
||||
$('#wikihomepage').attr('value', data.wikihomepage);
|
||||
|
||||
$('#namefield').show();
|
||||
$('#gpgfpfield').show();
|
||||
$('#usernamefield').hide();
|
||||
$('#nonddemailfield').hide();
|
||||
$('#aliothusernamefield').show();
|
||||
$('#wikihomepagefield').show();
|
||||
$('#forumsidfield').show();
|
||||
|
||||
$('#aliothusername').focus().select();
|
||||
} else {
|
||||
$('#nonddemail').attr('value', data.email);
|
||||
$('#name').removeAttr('readonly');
|
||||
$('#username').removeAttr('readonly').attr('value', '');
|
||||
$('#gpgfp').attr('value', '');
|
||||
|
||||
$('#usernamefield').hide();
|
||||
$('#gpgfpfield').hide();
|
||||
$('#nonddemailfield').hide();
|
||||
$('#namefield').show();
|
||||
$('#aliothusernamefield').show();
|
||||
$('#wikihomepagefield').show();
|
||||
$('#forumsidfield').show();
|
||||
|
||||
$('#name').focus().select();
|
||||
}
|
||||
}
|
||||
|
||||
function onChangeShowAll(event) {
|
||||
if ($('#showall').attr('checked')) {
|
||||
for (var fielddiv in allfielddivs) {
|
||||
$(allfielddivs[fielddiv]).show();
|
||||
}
|
||||
} else {
|
||||
for (var fielddiv in maskedfielddivs) {
|
||||
$(maskedfielddivs[fielddiv]).hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function onBlurEmail() {
|
||||
if ($.trim($('#email').attr('value')).length > 0) {
|
||||
$.ajax({
|
||||
'url' : '${h.url(controller="showformscripts", action="fetchdddata")}',
|
||||
'data' : {'email' : $('#email').attr('value')},
|
||||
'dataType' : 'json',
|
||||
'success' : updateFields,
|
||||
'error' : function(request, textStatus, errorThrown) {
|
||||
$('#email').focus();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
for (var index in defaulthiddendivs) {
|
||||
if (!$(defaulthiddendivs[index]).hasClass('witherrors')) {
|
||||
$(defaulthiddendivs[index]).hide();
|
||||
}
|
||||
}
|
||||
|
||||
$('#showall').attr('checked', false).change(onChangeShowAll);
|
||||
$('#showallfield').show();
|
||||
$('#email').blur(onBlurEmail).focus();
|
||||
});
|
67
debianmemberportfolio/templates/showurls.mako
Normal file
67
debianmemberportfolio/templates/showurls.mako
Normal file
|
@ -0,0 +1,67 @@
|
|||
## -*- coding: utf-8 -*-
|
||||
<%inherit file="base.mako" />\
|
||||
<%doc>
|
||||
Template for the url output page.
|
||||
Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
|
||||
|
||||
This file is part of Debian Member Portfolio Service.
|
||||
|
||||
Debian Member Portfolio 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.
|
||||
|
||||
Debian Member Portfolio 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 <http://www.gnu.org/licenses/>.
|
||||
</%doc>\
|
||||
<%def name="titleaddon()">
|
||||
- ${_('Your personal links')}
|
||||
</%def>
|
||||
% if c.urldata:
|
||||
<fieldset id="ddportfolio">
|
||||
<legend>${_('Debian Member Portfolio')}</legend>
|
||||
<table id="urltable">
|
||||
<thead>
|
||||
<tr><th>${_('Usage')}</th><th>${_('URL')}</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
% for row in c.urldata:
|
||||
% if row[0] == 'section':
|
||||
<tr class="section"><th class="sectionlabel" colspan="2">${row[2]}</th></tr>
|
||||
<% urlclass = 'odd' %>
|
||||
% elif row[0] == 'error':
|
||||
<tr class="error">
|
||||
<td>${h.literal(h.textile(row[4]))}</td>
|
||||
<td>${_('Error during URL creation:')}
|
||||
<span class="errormsg">${row[3].replace("\n",
|
||||
'<br />')}</span></td>
|
||||
</tr>
|
||||
% else:
|
||||
<tr class="url ${urlclass}">
|
||||
<td>${h.literal(h.textile(row[4]))}</td>
|
||||
<td>
|
||||
% if row[2].type == 'url':
|
||||
${h.link_to(h.truncate(row[3], length=120), row[3])}
|
||||
% else:
|
||||
<tt>${row[3]}</tt>
|
||||
% endif
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
if urlclass == 'odd':
|
||||
urlclass = 'even'
|
||||
else:
|
||||
urlclass = 'odd'
|
||||
%>
|
||||
% endif
|
||||
% endfor
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
% endif
|
||||
<p>${h.link_to(_('Restart'), h.url(controller='ddportfolio', action='index'))}</p>
|
56
debianmemberportfolio/tests/__init__.py
Normal file
56
debianmemberportfolio/tests/__init__.py
Normal file
|
@ -0,0 +1,56 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service tests package
|
||||
# Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# This file is part of Debian Member Portfolio Service.
|
||||
#
|
||||
# Debian Member Portfolio 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.
|
||||
#
|
||||
# Debian Member Portfolio 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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""Pylons application test package
|
||||
|
||||
When the test runner finds and executes tests within this directory,
|
||||
this file will be loaded to setup the test environment.
|
||||
|
||||
It registers the root directory of the project in sys.path and
|
||||
pkg_resources, in case the project hasn't been installed with
|
||||
setuptools. It also initializes the application via websetup (paster
|
||||
setup-app) with the project's test.ini configuration file.
|
||||
"""
|
||||
from unittest import TestCase
|
||||
|
||||
from paste.script.appinstall import SetupCommand
|
||||
from pylons import url
|
||||
from routes.util import URLGenerator
|
||||
from webtest import TestApp
|
||||
|
||||
import pylons.test
|
||||
|
||||
__all__ = ['environ', 'url', 'TestController']
|
||||
|
||||
# Invoke websetup with the current config file
|
||||
SetupCommand('setup-app').run([pylons.test.pylonsapp.config['__file__']])
|
||||
|
||||
environ = {}
|
||||
|
||||
|
||||
class TestController(TestCase):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
wsgiapp = pylons.test.pylonsapp
|
||||
config = wsgiapp.config
|
||||
self.app = TestApp(wsgiapp)
|
||||
url._push_object(URLGenerator(config['routes.map'], environ))
|
||||
TestCase.__init__(self, *args, **kwargs)
|
22
debianmemberportfolio/tests/functional/__init__.py
Normal file
22
debianmemberportfolio/tests/functional/__init__.py
Normal file
|
@ -0,0 +1,22 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# DDPortfolio service functional tests package
|
||||
# Copyright (c) 2009 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# 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
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
32
debianmemberportfolio/tests/functional/test_ddportfolio.py
Normal file
32
debianmemberportfolio/tests/functional/test_ddportfolio.py
Normal file
|
@ -0,0 +1,32 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service DdportfolioController test
|
||||
# Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# This file is part of Debian Member Portfolio Service.
|
||||
#
|
||||
# Debian Member Portfolio 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.
|
||||
#
|
||||
# Debian Member Portfolio 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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
from ddportfolioservice.tests import TestController, url
|
||||
|
||||
|
||||
class TestDdportfolioController(TestController):
|
||||
|
||||
def test_index(self):
|
||||
response = self.app.get(url(controller='ddportfolio', action='index'))
|
||||
# Test response...
|
||||
assert response.status_int == 200
|
||||
assert response.content_type == "text/html"
|
||||
assert "Debian Member Portfolio Service" in response
|
|
@ -0,0 +1,33 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service DdportfolioController test
|
||||
# Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# This file is part of Debian Member Portfolio Service.
|
||||
#
|
||||
# Debian Member Portfolio 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.
|
||||
#
|
||||
# Debian Member Portfolio 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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
from ddportfolioservice.tests import TestController, url
|
||||
|
||||
|
||||
class TestShowformscriptsController(TestController):
|
||||
|
||||
def test_index(self):
|
||||
response = self.app.get(
|
||||
url(controller='showformscripts', action='index'))
|
||||
# Test response...
|
||||
assert response.status_int == 200
|
||||
assert response.content_type == "text/javascript"
|
||||
assert "function updateField" in response
|
22
debianmemberportfolio/tests/test_models.py
Normal file
22
debianmemberportfolio/tests/test_models.py
Normal file
|
@ -0,0 +1,22 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# DDPortfolio service model tests
|
||||
# Copyright (c) 2009 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# 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
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
40
debianmemberportfolio/websetup.py
Normal file
40
debianmemberportfolio/websetup.py
Normal file
|
@ -0,0 +1,40 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# DDPortfolio service websetup
|
||||
# Copyright (c) 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# 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
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""Setup the ddportfolioservice application"""
|
||||
import logging
|
||||
|
||||
from paste.deploy import appconfig
|
||||
from pylons import config
|
||||
import pylons.test
|
||||
|
||||
from ddportfolioservice.config.environment import load_environment
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def setup_config(command, filename, section, vars):
|
||||
"""Place any commands to setup ddportfolioservice here"""
|
||||
conf = appconfig('config:' + filename)
|
||||
|
||||
if not pylons.test.pylonsapp:
|
||||
load_environment(conf.global_conf, conf.local_conf)
|
Loading…
Add table
Add a link
Reference in a new issue