Merge branch 'release/0.5.0'
* release/0.5.0: (55 commits) Bump version Update translations, reference Weblate instead of Transifex Update dependencies Remove the alioth fileserver Fix parameters for the lists search service Fix subdirectory for the duck service Use https and .org for the debtags service Use https for search.debian.org Use https for planet-search.debian.org Fix unused arguments, remove Pylons websetup Translated using Weblate (Chinese (Simplified)) Translated using Weblate (Dutch) Translated using Weblate (German) Update translation catalogs Switch to Weblate, update Copyright years Fix deprecation warning Ignore PyCharm files Update dependencies to current Debian stretch versions Translated using Weblate (Dutch) Added translation using Weblate (Dutch) ...
This commit is contained in:
commit
77a23cce88
62 changed files with 2399 additions and 2225 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -6,3 +6,6 @@ data/
|
|||
.ropeproject/
|
||||
*.mo
|
||||
*.pot
|
||||
tags
|
||||
debianmemberportfolio/model/keyringcache.db
|
||||
.idea/
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
2015-11-12 Jan Dittberner <jan@dittberner.info>
|
||||
* port to Python 3 and Flask
|
||||
|
||||
2015-03-09 Jan Dittberner <jan@dittberner.info>
|
||||
* apply patch for DMD link by Paul Wise
|
||||
|
||||
|
|
|
@ -1,3 +1,2 @@
|
|||
include debianmemberportfolio/config/deployment.ini_tmpl
|
||||
recursive-include debianmemberportfolio/public *
|
||||
recursive-include debianmemberportfolio/static *
|
||||
recursive-include debianmemberportfolio/templates *
|
||||
|
|
3
babel.cfg
Normal file
3
babel.cfg
Normal file
|
@ -0,0 +1,3 @@
|
|||
[python: **.py]
|
||||
[jinja2: **/templates/**.html]
|
||||
extensions=jinja2.ext.autoescape,jinja2.ext.with_
|
|
@ -1,9 +1,9 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service functional tests package
|
||||
# Debian Member Portfolio Service Flask configuration
|
||||
#
|
||||
# Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
|
||||
# Copyright © 2015 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# This file is part of the Debian Member Portfolio Service.
|
||||
#
|
||||
|
@ -20,3 +20,14 @@
|
|||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
WTF_CSRF_ENABLED = False
|
||||
|
||||
# available languages
|
||||
LANGUAGES = {
|
||||
'en': 'English',
|
||||
'de': 'Deutsch',
|
||||
'fr': 'Français',
|
||||
'id': 'Bahasa Indonesia',
|
||||
'pt_BR': 'Portuguese (Brazil)'
|
||||
}
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
# Debian Member Portfolio Service package
|
||||
#
|
||||
# Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
|
||||
# Copyright © 2009-2015 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# This file is part of the Debian Member Portfolio Service.
|
||||
#
|
||||
|
@ -20,3 +20,12 @@
|
|||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
from flask import Flask
|
||||
from flask_babel import Babel
|
||||
|
||||
app = Flask(__name__)
|
||||
babel = Babel(app)
|
||||
app.config.from_object('config')
|
||||
|
||||
from debianmemberportfolio import views
|
||||
|
|
|
@ -1,60 +0,0 @@
|
|||
#
|
||||
# Debian Member Portfolio Service - 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:debianmemberportfolio
|
||||
full_stack = true
|
||||
static_files = true
|
||||
|
||||
cache_dir = %(here)s/data
|
||||
beaker.session.key = debianmemberportfolio
|
||||
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
|
|
@ -1,75 +0,0 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service environment configuration
|
||||
#
|
||||
# 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 <https://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 debianmemberportfolio.lib.app_globals as app_globals
|
||||
import debianmemberportfolio.lib.helpers
|
||||
from debianmemberportfolio.config.routing import make_map
|
||||
|
||||
|
||||
def load_environment(global_conf, app_conf):
|
||||
"""
|
||||
Configures 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='debianmemberportfolio', paths=paths)
|
||||
|
||||
config['routes.map'] = make_map(config)
|
||||
config['pylons.app_globals'] = app_globals.Globals(config)
|
||||
config['pylons.h'] = debianmemberportfolio.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
|
|
@ -1,95 +0,0 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service middleware configuration
|
||||
#
|
||||
# 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 <https://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 debianmemberportfolio.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
|
|
@ -1,58 +0,0 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service routing configuration
|
||||
#
|
||||
# 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 <https://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 https://routes.readthedocs.org/
|
||||
|
||||
"""
|
||||
|
||||
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='portfolio', action='index')
|
||||
map.connect('/result', controller='portfolio', action='urllist')
|
||||
map.connect('/htmlformhelper.js', controller='showformscripts',
|
||||
action='index')
|
||||
|
||||
map.connect('/{controller}/{action}')
|
||||
map.connect('/{controller}/{action}/{id}')
|
||||
|
||||
return map
|
|
@ -1,22 +0,0 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service controllers package
|
||||
#
|
||||
# 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 <https://www.gnu.org/licenses/>.
|
||||
#
|
|
@ -1,70 +0,0 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service ErrorController
|
||||
#
|
||||
# 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 <https://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 debianmemberportfolio.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'))
|
|
@ -1,212 +0,0 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service PortfolioController
|
||||
#
|
||||
# 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 <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""
|
||||
This module defines the PortfolioController class used to render the portfolio
|
||||
of a person.
|
||||
"""
|
||||
|
||||
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 debianmemberportfolio.lib.base import BaseController, render
|
||||
from debianmemberportfolio.model.form import DDDataRequest, DeveloperData
|
||||
from debianmemberportfolio.model.urlbuilder import build_urls
|
||||
from debianmemberportfolio.model import dddatabuilder
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class PortfolioController(BaseController):
|
||||
"""
|
||||
Main controller for the Debian Member Portfolio Service.
|
||||
"""
|
||||
#: This dictionary defines groups of labeled portfolio items.
|
||||
_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="https://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="https://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="https://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'),
|
||||
},
|
||||
}
|
||||
|
||||
#: list of field name tuples for Debian Maintainers
|
||||
DM_TUPLES = (('name', 'name'),
|
||||
('gpgfp', 'gpgfp'),
|
||||
('nonddemail', 'email'))
|
||||
|
||||
#: list of field name tuples for Debian Developers
|
||||
DD_TUPLES = (('username', 'username'),
|
||||
('aliothusername', 'username'))
|
||||
|
||||
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 _build_request_params(self):
|
||||
schema = DDDataRequest()
|
||||
formencode.api.set_stdtranslation(
|
||||
domain="FormEncode",
|
||||
languages=[lang[0:2] for lang in request.languages])
|
||||
form_result = schema.to_python(request.params)
|
||||
fields = dddatabuilder.build_data(form_result['email'])
|
||||
rp = request.params.copy()
|
||||
|
||||
if fields['type'] in (dddatabuilder.TYPE_DD, dddatabuilder.TYPE_DM):
|
||||
for tuple in self.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 self.DD_TUPLES:
|
||||
if not tuple[0] in rp or not rp[tuple[0]]:
|
||||
rp[tuple[0]] = fields[tuple[1]]
|
||||
|
||||
return rp
|
||||
|
||||
def urllist(self):
|
||||
"""Handle the actual data."""
|
||||
try:
|
||||
rp = self._build_request_params()
|
||||
except formencode.validators.Invalid as error:
|
||||
c.messages = {'errors': error.unpack_errors()}
|
||||
return render('/showform.mako')
|
||||
|
||||
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')
|
|
@ -1,75 +0,0 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service ShowformscriptsController.
|
||||
#
|
||||
# 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 <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""
|
||||
This file defines the ShowformscriptsController used to generate the JavaScript
|
||||
code in forms.
|
||||
"""
|
||||
|
||||
import logging
|
||||
import simplejson
|
||||
|
||||
from pylons import request, response
|
||||
from pylons.controllers.util import abort
|
||||
|
||||
import formencode.api
|
||||
import formencode.validators
|
||||
|
||||
from debianmemberportfolio.lib.base import BaseController, render
|
||||
from debianmemberportfolio.model.form import DDDataRequest
|
||||
from debianmemberportfolio.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)
|
|
@ -1,55 +0,0 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service TemplateController
|
||||
#
|
||||
# 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 <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""
|
||||
This file contains the TemplateController used to render templates.
|
||||
"""
|
||||
|
||||
from debianmemberportfolio.lib.base import BaseController
|
||||
from pylons.controllers.util import abort
|
||||
|
||||
|
||||
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)
|
42
debianmemberportfolio/forms.py
Normal file
42
debianmemberportfolio/forms.py
Normal file
|
@ -0,0 +1,42 @@
|
|||
from __future__ import unicode_literals
|
||||
|
||||
from flask_babel import gettext as _
|
||||
from flask_wtf import Form
|
||||
from wtforms import IntegerField, StringField, RadioField
|
||||
from wtforms.validators import (
|
||||
AnyOf, DataRequired, Email, Length, Optional, Regexp
|
||||
)
|
||||
|
||||
|
||||
class FingerPrint(Regexp):
|
||||
def __init__(self, **kwargs):
|
||||
super(FingerPrint, self).__init__(r'^[a-fA-F0-9]*$', **kwargs)
|
||||
|
||||
|
||||
class PlainText(Regexp):
|
||||
def __init__(self):
|
||||
super(PlainText, self).__init__(r'^[a-zA-Z\-0-9]*$')
|
||||
|
||||
|
||||
class DeveloperData(Form):
|
||||
email = StringField('email', validators=[DataRequired(), Email()])
|
||||
name = StringField('name', validators=[DataRequired()])
|
||||
gpgfp = StringField('gpgfp', validators=[
|
||||
FingerPrint(),
|
||||
Length(min=32, max=40)
|
||||
])
|
||||
username = StringField('username', validators=[PlainText()])
|
||||
nonddemail = StringField('nonddemail', validators=[Email()])
|
||||
aliothusername = StringField('aliothusername', validators=[PlainText()])
|
||||
mode = RadioField(
|
||||
'mode', default='html', choices=[
|
||||
('json', _('JSON')), ('html', _('HTML'))
|
||||
], validators=[AnyOf(['json', 'html'])]
|
||||
)
|
||||
forumsid = IntegerField('forumsid', default=None, validators=[Optional()])
|
||||
wikihomepage = StringField('wikihomepage', default=None, validators=[
|
||||
Optional()])
|
||||
|
||||
|
||||
class DeveloperDataRequest(Form):
|
||||
email = StringField('email', validators=[DataRequired(), Email()])
|
|
@ -1,22 +0,0 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service lib package
|
||||
#
|
||||
# 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 <https://www.gnu.org/licenses/>.
|
||||
#
|
|
@ -1,43 +0,0 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service application Globals
|
||||
#
|
||||
# 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 <https://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))
|
|
@ -1,55 +0,0 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service base controller
|
||||
#
|
||||
# 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 <https://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
|
||||
try:
|
||||
languages = request.languages
|
||||
for lang in languages:
|
||||
try:
|
||||
add_fallback(lang.replace('-', '_'))
|
||||
except:
|
||||
pass
|
||||
except:
|
||||
pass
|
||||
c.messages = {'errors': [], 'messages': []}
|
||||
return WSGIController.__call__(self, environ, start_response)
|
||||
|
||||
|
||||
__all__ = ['BaseController', 'render']
|
|
@ -1,35 +0,0 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service webhelpers
|
||||
#
|
||||
# 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 <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
# pymode:lint_ignore=W0611
|
||||
#
|
||||
"""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
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
# Debian Member Portfolio Service data builder
|
||||
#
|
||||
# Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
|
||||
# Copyright © 2009-2015 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# This file is part of the Debian Member Portfolio Service.
|
||||
#
|
||||
|
|
|
@ -1,51 +0,0 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service form handling model
|
||||
#
|
||||
# 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 <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""
|
||||
This file contains the form definitions used in the controllers.
|
||||
"""
|
||||
|
||||
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)
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
# Debian Member Portfolio Service key finder module
|
||||
#
|
||||
# Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
|
||||
# Copyright © 2009-2015 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# This file is part of the Debian Member Portfolio Service.
|
||||
#
|
||||
|
@ -36,14 +36,17 @@ cachetimestamp = 0
|
|||
def _get_keyring_cache():
|
||||
global db, cachetimestamp
|
||||
if db is None or (time.time() - cachetimestamp) > 86300:
|
||||
import anydbm
|
||||
import dbm
|
||||
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')
|
||||
assert (
|
||||
os.path.exists(filename + '.db') and
|
||||
os.path.isfile(filename + '.db')
|
||||
)
|
||||
db = dbm.open(filename, 'r')
|
||||
cachetimestamp = time.time()
|
||||
return db
|
||||
|
||||
|
@ -53,7 +56,7 @@ def _get_cached(cachekey):
|
|||
logging.debug('cache lookup for %s', cachekey)
|
||||
if cachekey in cache:
|
||||
logging.debug('found entry %s', cache[cachekey])
|
||||
return cache[cachekey]
|
||||
return cache[cachekey].decode('utf8')
|
||||
return None
|
||||
|
||||
|
||||
|
@ -91,7 +94,7 @@ def getLoginByFingerprint(fpr):
|
|||
def _dump_cache():
|
||||
cache = _get_keyring_cache()
|
||||
fprs = []
|
||||
for key in cache.keys():
|
||||
for key in [key.decode('utf8') for key in list(cache.keys())]:
|
||||
if key.startswith('email:fpr:'):
|
||||
fpr = key.replace('email:fpr:', '')
|
||||
if not fpr in fprs:
|
||||
|
@ -102,8 +105,8 @@ def _dump_cache():
|
|||
email = _get_cached('email:fpr:%s' % fpr)
|
||||
name = _get_cached('name:fpr:%s' % fpr)
|
||||
|
||||
print fpr, login, ':'
|
||||
print ' ', name, email
|
||||
print(fpr, login, ':')
|
||||
print(' ', name, email)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
# Debian Member Portfolio Service application key ring analyzer tool
|
||||
#
|
||||
# Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
|
||||
# Copyright © 2009-2015 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# This file is part of the Debian Member Portfolio Service.
|
||||
#
|
||||
|
@ -26,10 +26,10 @@ retrieved data in a file database. The tool was inspired by Debian
|
|||
qa's carnivore.
|
||||
"""
|
||||
|
||||
import anydbm
|
||||
import dbm
|
||||
import pkg_resources
|
||||
import glob
|
||||
import ConfigParser
|
||||
import configparser
|
||||
import os
|
||||
import os.path
|
||||
import logging
|
||||
|
@ -38,7 +38,7 @@ import sys
|
|||
import email.utils
|
||||
|
||||
|
||||
CONFIG = ConfigParser.SafeConfigParser()
|
||||
CONFIG = configparser.ConfigParser()
|
||||
|
||||
|
||||
def _get_keyrings():
|
||||
|
@ -160,11 +160,15 @@ def process_keyrings():
|
|||
stdout=subprocess.PIPE)
|
||||
fpr = None
|
||||
for line in proc.stdout.readlines():
|
||||
try:
|
||||
line = line.decode('utf8')
|
||||
except UnicodeDecodeError:
|
||||
line = line.decode('iso8859-1')
|
||||
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__,
|
||||
db = dbm.open(pkg_resources.resource_filename(__name__,
|
||||
'keyringcache'), 'c')
|
||||
for key in resultdict:
|
||||
db[key] = ":".join(resultdict[key])
|
||||
|
@ -173,9 +177,9 @@ def process_keyrings():
|
|||
|
||||
if __name__ == '__main__':
|
||||
logging.basicConfig(stream=sys.stderr, level=logging.WARNING)
|
||||
CONFIG.readfp(pkg_resources.resource_stream(
|
||||
__name__, 'portfolio.ini'))
|
||||
CONFIG.read_string(pkg_resources.resource_string(
|
||||
__name__, 'portfolio.ini').decode('utf8'))
|
||||
gpghome = os.path.expanduser(CONFIG.get('DEFAULT', 'gnupghome'))
|
||||
if not os.path.isdir(gpghome):
|
||||
os.makedirs(gpghome, 0700)
|
||||
os.makedirs(gpghome, 0o700)
|
||||
process_keyrings()
|
||||
|
|
|
@ -50,11 +50,11 @@ lintian.pattern=https://lintian.debian.org/maintainer/%(email)s.html
|
|||
lintianfull.pattern=https://lintian.debian.org/full/%(email)s.html
|
||||
piuparts.pattern=https://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/static/maintainer/%(email)s.html
|
||||
duck.pattern=http://duck.debian.net/persons/%(email)s.html
|
||||
|
||||
[lists]
|
||||
urls=dolists,adolists,gmane
|
||||
dolists.pattern=https://lists.debian.org/cgi-bin/search?author=%(name)s&sort=date
|
||||
dolists.pattern=https://lists.debian.org/cgi-bin/search?P="%%22%(name)s%%22&SORT=0
|
||||
adolists.pattern=https://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
|
||||
|
@ -64,11 +64,9 @@ gmane.pattern=http://search.gmane.org/?email=%(name)s&group=gmane.linux.debian.*
|
|||
# maybe this could be implemented using some custom formatter function
|
||||
|
||||
[files]
|
||||
urls=people,alioth
|
||||
urls=people
|
||||
people.pattern=https://people.debian.org/~%(username)s/
|
||||
people.optional=true
|
||||
alioth.pattern=https://alioth.debian.org/~%(aliothusername)s/
|
||||
alioth.optional=true
|
||||
|
||||
[membership]
|
||||
urls=nm,dbfinger,db,webid,alioth,wiki,forum
|
||||
|
@ -83,18 +81,18 @@ webid.optional=true
|
|||
alioth.pattern=https://alioth.debian.org/users/%(aliothusername)s/
|
||||
alioth.optional=true
|
||||
wiki.pattern=https://wiki.debian.org/%(wikihomepage)s
|
||||
forum.pattern=http://forums.debian.net/memberlist.php?mode=viewprofile&u=%(forumsid)d
|
||||
forum.pattern=http://forums.debian.net/memberlist.php?mode=viewprofile&u=%(forumsid)s
|
||||
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
|
||||
debtags.pattern=https://debtags.debian.org/reports/maint/%(email)s
|
||||
planetname.pattern=https://planet-search.debian.org/cgi-bin/search.cgi?terms=%%22%(name)s%%22
|
||||
planetuser.pattern=https://planet-search.debian.org/cgi-bin/search.cgi?terms=%%22%(username)s%%22
|
||||
planetuser.optional=true
|
||||
links.pattern=https://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=https://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
|
||||
search.pattern=https://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
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
# Debian Member Portfolio Service url builder
|
||||
#
|
||||
# Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
|
||||
# Copyright © 2009-2015 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# This file is part of the Debian Member Portfolio Service.
|
||||
#
|
||||
|
@ -26,15 +26,18 @@ URLs using the given information and the URL patterns defined in
|
|||
portfolio.ini.
|
||||
"""
|
||||
|
||||
from ConfigParser import ConfigParser, InterpolationMissingOptionError
|
||||
from configparser import ConfigParser, InterpolationMissingOptionError
|
||||
from encodings.utf_8 import StreamReader as UTF8StreamReader
|
||||
|
||||
import pkg_resources
|
||||
from debianmemberportfolio.model import keyfinder
|
||||
from urllib import quote_plus
|
||||
from pylons.i18n.translation import _, N_
|
||||
from urllib.parse import quote_plus
|
||||
from flask_babel import gettext as _, lazy_gettext as N_
|
||||
|
||||
|
||||
my_config = ConfigParser()
|
||||
my_config.readfp(pkg_resources.resource_stream(__name__, 'portfolio.ini'))
|
||||
my_config.read_file(UTF8StreamReader(
|
||||
pkg_resources.resource_stream(__name__, 'portfolio.ini')))
|
||||
|
||||
_FIELDNAMES_MAP = {
|
||||
'email': N_('Email address'),
|
||||
|
@ -62,14 +65,15 @@ def _build_quoted_fields(fields):
|
|||
Take a dictionary of raw field values and quote the values if required.
|
||||
"""
|
||||
qfields = {}
|
||||
for key, value in fields.iteritems():
|
||||
for key, value in fields.items():
|
||||
if value is not None:
|
||||
if isinstance(value, unicode):
|
||||
if isinstance(value, str):
|
||||
qfields[key] = quote_plus(value.encode('utf8'))
|
||||
elif isinstance(value, str):
|
||||
qfields[key] = quote_plus(value)
|
||||
else:
|
||||
qfields[key] = value
|
||||
qfields[key] = qfields[key].replace('%', '%%')
|
||||
|
||||
if 'gpgfp' not in qfields:
|
||||
fpr = keyfinder.getFingerprintByEmail(fields['email'].encode('utf8'))
|
||||
|
@ -97,8 +101,8 @@ def build_urls(fields):
|
|||
data.append(
|
||||
['url', section, entry,
|
||||
my_config.get(section, entry.name + '.pattern',
|
||||
False, qfields)])
|
||||
except InterpolationMissingOptionError, e:
|
||||
raw=False, vars=qfields)])
|
||||
except InterpolationMissingOptionError as e:
|
||||
if not entry.optional:
|
||||
if e.reference in _FIELDNAMES_MAP:
|
||||
data.append(['error', section, entry,
|
||||
|
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.2 KiB |
48
debianmemberportfolio/templates/base.html
Normal file
48
debianmemberportfolio/templates/base.html
Normal file
|
@ -0,0 +1,48 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
{# vim: ft=jinja
|
||||
Base template for XHTML templates.
|
||||
Copyright © 2009-2017 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 <https://www.gnu.org/licenses/>.
|
||||
#}
|
||||
<html>
|
||||
<head>
|
||||
<title>{% block title %}{{ _('Debian Member Portfolio Service') }}{% endblock %}</title>
|
||||
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='stylesheets/style.css') }}" />
|
||||
{% block extrahead %}{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<img alt="{{ _('Debian Logo') }}" id="debianlogo" src="{{ url_for('static', filename='images/openlogo-100.jpg') }}" height="100" width="100" />
|
||||
<h1>{{ _('Debian Member Portfolio Service') }}</h1>
|
||||
<p>{% trans %}This service has been inspired by Stefano Zacchiroli's <a href="https://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.{% endtrans %}</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">
|
||||
{% block body %}{% endblock %}
|
||||
</div>
|
||||
<div id="footer">
|
||||
<img alt="{{ _('AGPL - Free Software') }}" id="agpllogo" src="{{ url_for('static', filename='images/agplv3-88x31.png') }}" width="88" height="31" />
|
||||
<p>{% trans browseurl='https://debianstuff.dittberner.info/gitweb/?p=debianmemberportfolio.git;a=summary', cloneurl='https://debianstuff.dittberner.info/git/debianmemberportfolio.git', weblateurl='https://hosted.weblate.org/projects/debian-member-portfolio-service/' %}The service is available under the terms of the <a href="https://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 }}" title="Gitweb repository browser URL">browse the source code</a> or clone it from <a href="{{ cloneurl }}" title="git clone URL">{{ cloneurl }}</a> using <a href="https://git-scm.com/">git</a>. If you want to translate this service to your language you can contribute at <a href="{{ weblateurl }}" title="Debian Member Portfolio Service at Weblate">Weblate</a>.{% endtrans %}</p>
|
||||
<p>{{ _('Copyright © 2009-2017 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>
|
|
@ -1,52 +0,0 @@
|
|||
## -*- 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 <https://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="https://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="https://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>
|
103
debianmemberportfolio/templates/showform.html
Normal file
103
debianmemberportfolio/templates/showform.html
Normal file
|
@ -0,0 +1,103 @@
|
|||
{% extends "base.html" %}
|
||||
{#
|
||||
Template for the data input form.
|
||||
|
||||
Copyright © 2009-2015 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 <https://www.gnu.org/licenses/>.
|
||||
#}
|
||||
{% block title %}{{ super()}} - {{ _('Enter your personal information') }}{% endblock %}
|
||||
{% block extrahead %}{{ super() }}<script type="text/javascript" src="{{ url_for('static', filename='javascript/jquery/jquery.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ url_for('formhelper_js') }}"></script>
|
||||
{% endblock %}
|
||||
{% block body %}{{ super() }}
|
||||
<form action="{{ url_for('urllist') }}" method="get">
|
||||
<fieldset id="portfolio">
|
||||
<legend>{{ _('Debian Member Portfolio') }}</legend>
|
||||
<div id="emailfield"{% if form.email.errors %} class="witherrors"{% endif %}>
|
||||
<label for="email">{{ _('Email address:') }}
|
||||
{% if form.email.errors %}<br />
|
||||
<span class="errormsg">{{ form.email.errors|join(', ') }}</span>
|
||||
{% endif %}
|
||||
</label><br />
|
||||
{{ form.email }}<br />
|
||||
</div>
|
||||
<div id="showallfield" class="hidden">
|
||||
<input type="checkbox" id="showall" name="showall"/>
|
||||
<label for="showall">{{ _('Show all form fields') }}</label><br />
|
||||
</div>
|
||||
<div id="namefield"{% if form.name.errors %} class="witherrors"{% endif %}>
|
||||
<label for="name">{{ _('Name:') }}{% if form.name.errors %}<br />
|
||||
<span class="errormsg">{{ form.name.errors|join(', ') }}</span>
|
||||
{% endif %}
|
||||
</label><br />
|
||||
{{ form.name }}
|
||||
</div>
|
||||
<div id="gpgfpfield"{% if form.gpgfp.errors %} class="witherrors"{% endif %}>
|
||||
<label for="gpgfp">{{ _('GPG fingerprint:') }}{% if form.gpgfp.errors %}<br />
|
||||
<span class="errormsg">{{ form.gpgfp.errors|join(', ') }}</span>
|
||||
{% endif %}
|
||||
</label><br />
|
||||
{{ form.gpgfp }}
|
||||
</div>
|
||||
<div id="usernamefield"{% if form.username.errors %} class="witherrors"{% endif %}>
|
||||
<label for="username">{{ _('Debian user name:') }}{% if form.username.errors %}<br />
|
||||
<span class="errormsg">{{ form.username.errors|join(', ') }}</span>
|
||||
{% endif %}
|
||||
</label><br />
|
||||
{{ form.username }}
|
||||
</div>
|
||||
<div id="nonddemailfield"{% if form.nonddemail.errors %} class="witherrors"{% endif %}>
|
||||
<label for="nonddemail">{{ _('Non Debian email address:') }}{% if form.nonddemail.errors %}<br />
|
||||
<span class="errormsg">{{ form.nonddemail.errors|join(', ') }}</span>
|
||||
{% endif %}
|
||||
</label><br />
|
||||
{{ form.nonddemail }}
|
||||
</div>
|
||||
<div id="aliothusernamefield"{% if form.aliothusername.errors %} class="witherrors"{% endif %}>
|
||||
<label for="aliothusername">{{ _('Alioth user name:') }}{% if form.aliothusername.errors %}<br />
|
||||
<span class="errormsg">{{ form.aliothusername.errors|join(', ') }}</span>
|
||||
{% endif %}
|
||||
</label><br />
|
||||
{{ form.aliothusername }}
|
||||
</div>
|
||||
<div id="wikihomepagefield"{% if form.wikihomepage.errors %} class="witherrors"{% endif %}>
|
||||
<label for="wikihomepage">{{ _('Wiki user name:') }}{% if form.wikihomepage.errors %}<br />
|
||||
<span class="errormsg">{{ form.wikihomepage.errors|join(', ') }}</span>
|
||||
{% endif %}
|
||||
</label><br />
|
||||
{{ form.wikihomepage }}
|
||||
</div>
|
||||
<div id="forumsidfield"{% if form.forumsid.errors %} class="witherrors"{% endif %}>
|
||||
<label for="forumsid">{{ _('Forum user id:') }}{% if form.forumsid.erros %}<br />
|
||||
<span class="errormsg">{{ form.forumsid.errors|join(', ') }}</span>
|
||||
{% endif %}
|
||||
</label><br />
|
||||
{{ form.forumsid }}
|
||||
</div>
|
||||
<div id="modefield"{% if form.mode.errors %} class="witherrors"{% endif %}>
|
||||
<label for="mode">{{ _('Output format:') }}{% if form.mode.errors %}<br />
|
||||
<span class="errormsg">{{ form.mode.errors|join(', ') }}</span>
|
||||
{% endif %}
|
||||
</label><br />
|
||||
{% for subfield in form.mode %}
|
||||
{{ subfield.label }} {{ subfield }}
|
||||
{% endfor %}<br />
|
||||
<input type="submit" value="{{ _('Build Debian Member Portfolio URLs') }}" />
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
{% endblock %}
|
|
@ -1,164 +0,0 @@
|
|||
## -- 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 <https://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='portfolio'), method='get')}
|
||||
<fieldset id="portfolio">
|
||||
<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()}
|
|
@ -1,25 +1,22 @@
|
|||
## -*- coding: utf-8 -*- \
|
||||
<%doc>
|
||||
{# vim: ft=jinja
|
||||
Helper JavaScript for the data input form.
|
||||
Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
|
||||
Copyright © 2009, 2010, 2015 Jan Dittberner <jan@dittberner.info>
|
||||
|
||||
This file is part of DDPortfolio service.
|
||||
This file is part of the Debian Member Portfolio 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.
|
||||
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.
|
||||
|
||||
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
|
||||
<https://www.gnu.org/licenses/>.
|
||||
</%doc>\
|
||||
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 <https://www.gnu.org/licenses/>.
|
||||
#}
|
||||
var defaulthiddendivs = new Array(
|
||||
'#namefield', '#gpgfpfield', '#usernamefield', '#nonddemailfield',
|
||||
'#aliothusernamefield', '#wikihomepagefield', '#forumsidfield');
|
||||
|
@ -32,13 +29,13 @@ var allfielddivs = new Array(
|
|||
|
||||
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(
|
||||
$('#name').prop('value', data.name).prop('readonly', 'readonly');
|
||||
$('#gpgfp').prop('value', data.gpgfp);
|
||||
$('#username').prop('value', data.username).prop(
|
||||
'readonly', 'readonly');
|
||||
$('#nonddemail').attr('value', data.email).focus();
|
||||
$('#aliothusername').attr('value', data.username);
|
||||
$('#wikihomepage').attr('value', data.wikihomepage);
|
||||
$('#nonddemail').prop('value', data.email).focus();
|
||||
$('#aliothusername').prop('value', data.username);
|
||||
$('#wikihomepage').prop('value', data.wikihomepage);
|
||||
|
||||
$('#namefield').show();
|
||||
$('#gpgfpfield').show();
|
||||
|
@ -50,11 +47,11 @@ function updateFields(data, textStatus) {
|
|||
|
||||
$('#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);
|
||||
$('#name').prop('value', data.name).prop('readonly', 'readonly');
|
||||
$('#gpgfp').prop('value', data.gpgfp);
|
||||
$('#username').prop('value', '');
|
||||
$('#nonddemail').prop('value', data.email).focus();
|
||||
$('#wikihomepage').prop('value', data.wikihomepage);
|
||||
|
||||
$('#namefield').show();
|
||||
$('#gpgfpfield').show();
|
||||
|
@ -66,10 +63,10 @@ function updateFields(data, textStatus) {
|
|||
|
||||
$('#aliothusername').focus().select();
|
||||
} else {
|
||||
$('#nonddemail').attr('value', data.email);
|
||||
$('#nonddemail').prop('value', data.email);
|
||||
$('#name').removeAttr('readonly');
|
||||
$('#username').removeAttr('readonly').attr('value', '');
|
||||
$('#gpgfp').attr('value', '');
|
||||
$('#username').removeAttr('readonly').prop('value', '');
|
||||
$('#gpgfp').prop('value', '');
|
||||
|
||||
$('#usernamefield').hide();
|
||||
$('#gpgfpfield').hide();
|
||||
|
@ -84,7 +81,7 @@ function updateFields(data, textStatus) {
|
|||
}
|
||||
|
||||
function onChangeShowAll(event) {
|
||||
if ($('#showall').attr('checked')) {
|
||||
if ($('#showall').prop('checked')) {
|
||||
for (var fielddiv in allfielddivs) {
|
||||
$(allfielddivs[fielddiv]).show();
|
||||
}
|
||||
|
@ -96,10 +93,10 @@ function onChangeShowAll(event) {
|
|||
}
|
||||
|
||||
function onBlurEmail() {
|
||||
if ($.trim($('#email').attr('value')).length > 0) {
|
||||
if ($.trim($('#email').prop('value')).length > 0) {
|
||||
$.ajax({
|
||||
'url' : '${h.url(controller="showformscripts", action="fetchdddata")}',
|
||||
'data' : {'email' : $('#email').attr('value')},
|
||||
'url' : '{{ url_for("fetchdddata") }}',
|
||||
'data' : {'email' : $('#email').prop('value')},
|
||||
'dataType' : 'json',
|
||||
'success' : updateFields,
|
||||
'error' : function(request, textStatus, errorThrown) {
|
||||
|
@ -116,7 +113,7 @@ $(document).ready(function() {
|
|||
}
|
||||
}
|
||||
|
||||
$('#showall').attr('checked', false).change(onChangeShowAll);
|
||||
$('#showall').prop('checked', false).change(onChangeShowAll);
|
||||
$('#showallfield').show();
|
||||
$('#email').blur(onBlurEmail).focus();
|
||||
});
|
61
debianmemberportfolio/templates/showurls.html
Normal file
61
debianmemberportfolio/templates/showurls.html
Normal file
|
@ -0,0 +1,61 @@
|
|||
{% extends "base.html" %}
|
||||
{#
|
||||
Template for the url output page.
|
||||
Copyright © 2009-2015 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 <https://www.gnu.org/licenses/>.
|
||||
#}
|
||||
{% block title %}{{ super() }} - {{ _('Your personal links') }}{% endblock %}
|
||||
{% block body %}{{ super() }}
|
||||
{% if urldata %}
|
||||
<fieldset id="portfolio">
|
||||
<legend>{{ _('Debian Member Porfolio') }}</legend>
|
||||
<table id="urltable">
|
||||
<thead>
|
||||
<tr><th>{{ _('Usage') }}</th><th>{{ _('URL') }}</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for row in urldata %}
|
||||
{% if row[0] == 'section' %}
|
||||
<tr class="section"><th class="sectionlabel" colspan="2">{{ row[2] }}</th></tr>
|
||||
{% set urlclass = 'odd' %}
|
||||
{% elif row[0] == 'error' %}
|
||||
<tr class="error">
|
||||
<td>{{ 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>{{ row[4]|safe }}</td>
|
||||
<td>
|
||||
{% if row[2].type == 'url' %}
|
||||
<a href="{{ row[3] }}">{{ row[3]|truncate(120) }}</a>
|
||||
{% else %}
|
||||
<tt>{{ row[3] }}</tt>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% if urlclass == "odd" %}{% set urlclass = "even" %}{% else %}{% set urlclass = "odd" %}{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
{% endif %}
|
||||
<p><a href="{{ url_for('urllist') }}">{{ _('Restart') }}</a></p>
|
||||
{% endblock body %}
|
||||
|
|
@ -1,67 +0,0 @@
|
|||
## -*- 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 <https://www.gnu.org/licenses/>.
|
||||
</%doc>\
|
||||
<%def name="titleaddon()">
|
||||
- ${_('Your personal links')}
|
||||
</%def>
|
||||
% if c.urldata:
|
||||
<fieldset id="portfolio">
|
||||
<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='portfolio', action='index'))}</p>
|
|
@ -1,59 +0,0 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service tests package
|
||||
#
|
||||
# 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 <https://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)
|
|
@ -1,43 +0,0 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service PortfolioController test
|
||||
#
|
||||
# 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 <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""
|
||||
This module defines test cases for the PortfolioController.
|
||||
"""
|
||||
|
||||
from debianmemberportfolio.tests import TestController, url
|
||||
|
||||
|
||||
class TestPortfolioController(TestController):
|
||||
"""
|
||||
Test cases for PortfolioController.
|
||||
"""
|
||||
|
||||
def test_index(self):
|
||||
"""
|
||||
Test for the controller's index action.
|
||||
"""
|
||||
response = self.app.get(url(controller='portfolio', action='index'))
|
||||
# Test response...
|
||||
assert response.status_int == 200
|
||||
assert response.content_type == "text/html"
|
||||
assert "Debian Member Portfolio Service" in response
|
|
@ -1,44 +0,0 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service ShowformscriptsController test
|
||||
#
|
||||
# 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 <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""
|
||||
This module defines test cases for the ShowformscriptsController.
|
||||
"""
|
||||
|
||||
from debianmemberportfolio.tests import TestController, url
|
||||
|
||||
|
||||
class TestShowformscriptsController(TestController):
|
||||
"""
|
||||
Test cases for ShowformscriptsController.
|
||||
"""
|
||||
|
||||
def test_index(self):
|
||||
"""
|
||||
Test for the controller's index action.
|
||||
"""
|
||||
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
|
|
@ -1,22 +0,0 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service model tests
|
||||
#
|
||||
# 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 <https://www.gnu.org/licenses/>.
|
||||
#
|
|
@ -9,25 +9,35 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n"
|
||||
"Report-Msgid-Bugs-To: jan@dittberner.info\n"
|
||||
"POT-Creation-Date: 2014-02-08 18:14+0100\n"
|
||||
"PO-Revision-Date: 2014-02-08 18:03+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"
|
||||
"POT-Creation-Date: 2017-09-10 10:49+0200\n"
|
||||
"PO-Revision-Date: 2017-02-17 11:19+0000\n"
|
||||
"Last-Translator: Jan Dittberner <jandd@debian.org>\n"
|
||||
"Language: de\n"
|
||||
"Language-Team: German <https://hosted.weblate.org/projects/debian-member-"
|
||||
"portfolio-service/translations/de/>\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 0.9.6\n"
|
||||
"Generated-By: Babel 2.5.0\n"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:45
|
||||
#: debianmemberportfolio/forms.py:33
|
||||
msgid "JSON"
|
||||
msgstr "JSON"
|
||||
|
||||
#: debianmemberportfolio/forms.py:33
|
||||
msgid "HTML"
|
||||
msgstr "HTML"
|
||||
|
||||
#: debianmemberportfolio/views.py:40
|
||||
msgid "Overview"
|
||||
msgstr "Überblick"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:46
|
||||
#: debianmemberportfolio/views.py:41
|
||||
msgid "Debian Member's Package Overview"
|
||||
msgstr "Paketübersicht des Debian-Mitglieds"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:47
|
||||
#: debianmemberportfolio/views.py:42
|
||||
msgid ""
|
||||
"Debian Member's Package Overview\n"
|
||||
"... showing all email addresses"
|
||||
|
@ -35,11 +45,11 @@ msgstr ""
|
|||
"Paketübersicht des Debian-Mitglieds\n"
|
||||
"... mit allen E-Mailadressen"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:51
|
||||
#: debianmemberportfolio/views.py:46
|
||||
msgid "Bugs"
|
||||
msgstr "Fehler"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:52
|
||||
#: debianmemberportfolio/views.py:47
|
||||
msgid ""
|
||||
"bugs received\n"
|
||||
"(note: co-maintainers not listed, see <a href=\"https://bugs.debian.org"
|
||||
|
@ -50,247 +60,246 @@ msgstr ""
|
|||
"href=\"https://bugs.debian.org/cgi-"
|
||||
"bin/bugreport.cgi?bug=430986\">#430986</a>)"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:56
|
||||
#: debianmemberportfolio/views.py:51
|
||||
msgid "bugs reported"
|
||||
msgstr "Berichtete Fehler"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:57
|
||||
#: debianmemberportfolio/views.py:52
|
||||
msgid "user tags"
|
||||
msgstr "User Tags"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:58
|
||||
#: debianmemberportfolio/views.py:53
|
||||
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)"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:60
|
||||
#: debianmemberportfolio/views.py:55
|
||||
msgid "<a href=\"https://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
msgstr "<a href=\"https://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:61
|
||||
#: debianmemberportfolio/views.py:56
|
||||
msgid "correspondent for bugs"
|
||||
msgstr "Beitragender zu Fehlern"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:62
|
||||
#: debianmemberportfolio/views.py:57
|
||||
msgid "one year open bug history graph"
|
||||
msgstr "Graph der Entwicklung offener Fehlerberichte über ein Jahr"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:65
|
||||
#: debianmemberportfolio/views.py:60
|
||||
msgid "Build"
|
||||
msgstr "Build"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:66
|
||||
#: debianmemberportfolio/views.py:61
|
||||
msgid "buildd.d.o"
|
||||
msgstr "buildd.d.o"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:67
|
||||
#: debianmemberportfolio/views.py:62
|
||||
msgid "igloo"
|
||||
msgstr "Igloo"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:70
|
||||
#: debianmemberportfolio/views.py:65
|
||||
msgid "Quality Assurance"
|
||||
msgstr "Qualitätssicherung"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:71
|
||||
#: debianmemberportfolio/views.py:66
|
||||
msgid "maintainer dashboard"
|
||||
msgstr "Maintainer Dashboard"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:72
|
||||
#: debianmemberportfolio/views.py:67
|
||||
msgid "lintian reports"
|
||||
msgstr "Lintian-Berichte"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:73
|
||||
#: debianmemberportfolio/views.py:68
|
||||
msgid "full lintian reports (i.e. including \"info\"-level messages)"
|
||||
msgstr ""
|
||||
"vollständige Lintian-Berichte (d.h. inklusive Meldungen der Stufe "
|
||||
"\"info\")"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:75
|
||||
#: debianmemberportfolio/views.py:70
|
||||
msgid "piuparts"
|
||||
msgstr "piuparts"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:76
|
||||
#: debianmemberportfolio/views.py:71
|
||||
msgid "Debian patch tracking system"
|
||||
msgstr "Debian Nachverfolgungssystem für Patches"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:77
|
||||
#: debianmemberportfolio/views.py:72
|
||||
msgid "Debian Url ChecKer"
|
||||
msgstr "Debian URL-Prüfer"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:80
|
||||
#: debianmemberportfolio/views.py:75
|
||||
msgid "Mailing Lists"
|
||||
msgstr "Mailinglisten"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:81
|
||||
#: debianmemberportfolio/views.py:76
|
||||
msgid "lists.d.o"
|
||||
msgstr "lists.d.o"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:82
|
||||
#: debianmemberportfolio/views.py:77
|
||||
msgid "lists.a.d.o"
|
||||
msgstr "lists.a.d.o"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:83
|
||||
#: debianmemberportfolio/views.py:78
|
||||
msgid "gmane"
|
||||
msgstr "Gmane"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:86
|
||||
#: debianmemberportfolio/views.py:81
|
||||
msgid "Files"
|
||||
msgstr "Dateien"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:87
|
||||
#: debianmemberportfolio/views.py:82
|
||||
msgid "people.d.o"
|
||||
msgstr "people.d.o"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:88
|
||||
#: debianmemberportfolio/views.py:83
|
||||
msgid "oldpeople"
|
||||
msgstr "oldpeople"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:89
|
||||
#: debianmemberportfolio/controllers/portfolio.py:97
|
||||
#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:92
|
||||
msgid "Alioth"
|
||||
msgstr "Alioth"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:92
|
||||
#: debianmemberportfolio/views.py:87
|
||||
msgid "Membership"
|
||||
msgstr "Mitgliedschaft"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:93
|
||||
#: debianmemberportfolio/views.py:88
|
||||
msgid "NM"
|
||||
msgstr "NM"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:94
|
||||
#: debianmemberportfolio/views.py:89
|
||||
msgid "DB information via finger"
|
||||
msgstr "DB-Informationen per finger"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:95
|
||||
#: debianmemberportfolio/views.py:90
|
||||
msgid "DB information via HTTP"
|
||||
msgstr "DB-Informationen per HTTP"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:96
|
||||
#: debianmemberportfolio/views.py:91
|
||||
msgid "FOAF profile"
|
||||
msgstr "FOAF-Profil"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:98
|
||||
#: debianmemberportfolio/views.py:93
|
||||
msgid "Wiki"
|
||||
msgstr "Wiki"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:99
|
||||
#: debianmemberportfolio/views.py:94
|
||||
msgid "Forum"
|
||||
msgstr "Forum"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:102
|
||||
#: debianmemberportfolio/views.py:97
|
||||
msgid "Miscellaneous"
|
||||
msgstr "Sonstiges"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:103
|
||||
#: debianmemberportfolio/views.py:98
|
||||
msgid "debtags"
|
||||
msgstr "debtags"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:104
|
||||
#: debianmemberportfolio/views.py:99
|
||||
msgid "Planet Debian (name)"
|
||||
msgstr "Planet Debian (Name)"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:105
|
||||
#: debianmemberportfolio/views.py:100
|
||||
msgid "Planet Debian (username)"
|
||||
msgstr "Planet Debian (Benutzername)"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:106
|
||||
#: debianmemberportfolio/views.py:101
|
||||
msgid "links"
|
||||
msgstr "Links"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:107
|
||||
#: debianmemberportfolio/views.py:102
|
||||
msgid "Debian website"
|
||||
msgstr "Debian Webseite"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:108
|
||||
#: debianmemberportfolio/views.py:103
|
||||
msgid "Debian search"
|
||||
msgstr "Debian-Suche"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:109
|
||||
#: debianmemberportfolio/views.py:104
|
||||
msgid "GPG public key via finger"
|
||||
msgstr "öffentlicher GPG-Schlüssel per finger"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:110
|
||||
#: debianmemberportfolio/views.py:105
|
||||
msgid "GPG public key via HTTP"
|
||||
msgstr "öffentlicher GPG-Schlüssel per HTTP"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:111
|
||||
#: debianmemberportfolio/views.py:106
|
||||
msgid "NM, AM participation"
|
||||
msgstr "NM-, AM-Mitwirkung"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:112
|
||||
#: debianmemberportfolio/views.py:107
|
||||
msgid "Contribution information"
|
||||
msgstr "Debian Contributor-Informationen"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:115
|
||||
#: debianmemberportfolio/views.py:110
|
||||
msgid "Information reachable via ssh (for Debian Members)"
|
||||
msgstr "Per ssh erreichbare Informationen (für Debian Mitglieder)"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:116
|
||||
#: debianmemberportfolio/views.py:111
|
||||
msgid "owned debian.net domains"
|
||||
msgstr "Besitz von debian.net-Domains"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:117
|
||||
#: debianmemberportfolio/views.py:112
|
||||
msgid ""
|
||||
"<a href=\"https://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> database"
|
||||
" information"
|
||||
"<a href=\"https://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> "
|
||||
"database information"
|
||||
msgstr ""
|
||||
"Informationen in der <a "
|
||||
"href=\"https://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a>-Datenbank"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:119
|
||||
#: debianmemberportfolio/views.py:114
|
||||
msgid "Group membership information"
|
||||
msgstr "Information über Gruppenmitgliedschaften"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:122
|
||||
#: debianmemberportfolio/views.py:117
|
||||
msgid "Ubuntu"
|
||||
msgstr "Ubuntu"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:123
|
||||
#: debianmemberportfolio/views.py:118
|
||||
msgid "Available patches from Ubuntu"
|
||||
msgstr "Verfügbare Patches aus Ubuntu"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:40
|
||||
#: debianmemberportfolio/model/urlbuilder.py:43
|
||||
msgid "Email address"
|
||||
msgstr "E-Mailadresse"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:41
|
||||
#: debianmemberportfolio/model/urlbuilder.py:44
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:42
|
||||
#: debianmemberportfolio/model/urlbuilder.py:45
|
||||
msgid "GPG fingerprint"
|
||||
msgstr "GPG-Fingerabdruck"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:43
|
||||
#: debianmemberportfolio/model/urlbuilder.py:46
|
||||
msgid "Debian user name"
|
||||
msgstr "Debian-Benutzername"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:44
|
||||
#: debianmemberportfolio/model/urlbuilder.py:47
|
||||
msgid "Non Debian email address"
|
||||
msgstr "Nicht-Debian-E-Mailadresse"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:45
|
||||
#: debianmemberportfolio/model/urlbuilder.py:48
|
||||
msgid "Alioth user name"
|
||||
msgstr "Alioth-Benutzername"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:97
|
||||
#: debianmemberportfolio/model/urlbuilder.py:101
|
||||
#: debianmemberportfolio/model/urlbuilder.py:109
|
||||
#: debianmemberportfolio/model/urlbuilder.py:113
|
||||
#, python-format
|
||||
msgid "Missing input: %s"
|
||||
msgstr "Fehlende Eingabe: %s"
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:25
|
||||
#: debianmemberportfolio/templates/base.mako:33
|
||||
#: debianmemberportfolio/templates/base.html:24
|
||||
#: debianmemberportfolio/templates/base.html:31
|
||||
msgid "Debian Member Portfolio Service"
|
||||
msgstr "Debian-Mitglieder-Portfolioservice"
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:31
|
||||
#: debianmemberportfolio/templates/base.html:30
|
||||
msgid "Debian Logo"
|
||||
msgstr "Debian-Logo"
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:34
|
||||
#: debianmemberportfolio/templates/base.html:32
|
||||
msgid ""
|
||||
"This service has been inspired by Stefano Zacchiroli's <a "
|
||||
"href=\"https://wiki.debian.org/DDPortfolio\">DDPortfolio page in the "
|
||||
|
@ -298,16 +307,16 @@ msgid ""
|
|||
"Debian Member's or package maintainer's information regarding Debian."
|
||||
msgstr ""
|
||||
"Dieser Dienst wurde durch Stefano Zacchirolis <a "
|
||||
"href=\"https://wiki.debian.org/DDPortfolio\">DDPortfolio-Seite im Debian "
|
||||
"href=\"http://wiki.debian.org/DDPortfolio\">DDPortfolio-Seite im Debian "
|
||||
"Wiki</a> inspiriert. Mit dem Dienst können personalisierte Links zu "
|
||||
"Informationen im Bezug auf Debian für Debian-Mitglieder und Paketbetreuer"
|
||||
" erzeugt werden."
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:41
|
||||
#: debianmemberportfolio/templates/base.html:39
|
||||
msgid "AGPL - Free Software"
|
||||
msgstr "AGPL - Freie Software"
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:43
|
||||
#: debianmemberportfolio/templates/base.html:40
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The service is available under the terms of the <a "
|
||||
|
@ -316,13 +325,13 @@ msgid ""
|
|||
" 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-"
|
||||
"clone URL\">%(cloneurl)s</a> using <a href=\"https://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>."
|
||||
"language you can contribute at <a href=\"%(weblateurl)s\" title=\"Debian "
|
||||
"Member Portfolio Service at Weblate\">Weblate</a>."
|
||||
msgstr ""
|
||||
"Dieser Dienst wird unter den Bedingungen der <a "
|
||||
"href=\"https://www.gnu.org/licenses/agpl.html\">GNU Affero General Public "
|
||||
"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 "
|
||||
|
@ -330,91 +339,86 @@ msgstr ""
|
|||
"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."
|
||||
"können Sie auf <a href=\"%(weblateurl)s\" title=\"Debian Member Portfolio"
|
||||
" Service bei Weblate\">Weblate</a> dazu beitragen."
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:44
|
||||
msgid "Copyright © 2009-2014 Jan Dittberner"
|
||||
msgstr "Copyright © 2009-2014 Jan Dittberner"
|
||||
#: debianmemberportfolio/templates/base.html:41
|
||||
msgid "Copyright © 2009-2017 Jan Dittberner"
|
||||
msgstr "Copyright © 2009-2017 Jan Dittberner"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:24
|
||||
#: debianmemberportfolio/templates/showform.html:22
|
||||
msgid "Enter your personal information"
|
||||
msgstr "Eingabe der persönlichen Informationen"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:30
|
||||
#: debianmemberportfolio/templates/showurls.mako:27
|
||||
#: debianmemberportfolio/templates/showform.html:29
|
||||
msgid "Debian Member Portfolio"
|
||||
msgstr "Debian-Mitgliederportfolio"
|
||||
msgstr "Debian-Mitglieder-Portfolioservice"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:36
|
||||
#: debianmemberportfolio/templates/showform.html:31
|
||||
msgid "Email address:"
|
||||
msgstr "E-Mailadresse:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:47
|
||||
#: debianmemberportfolio/templates/showform.html:40
|
||||
msgid "Show all form fields"
|
||||
msgstr "Alle Formularfelder anzeigen"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:54
|
||||
#: debianmemberportfolio/templates/showform.html:43
|
||||
msgid "Name:"
|
||||
msgstr "Name:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:64
|
||||
#: debianmemberportfolio/templates/showform.html:50
|
||||
msgid "GPG fingerprint:"
|
||||
msgstr "GPG-Fingerabdruck:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:79
|
||||
#: debianmemberportfolio/templates/showform.html:57
|
||||
msgid "Debian user name:"
|
||||
msgstr "Debian-Benutzername:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:94
|
||||
#: debianmemberportfolio/templates/showform.html:64
|
||||
msgid "Non Debian email address:"
|
||||
msgstr "Nicht-Debian-E-Mailadresse"
|
||||
msgstr "Nicht-Debian-E-Mailadresse:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:109
|
||||
#: debianmemberportfolio/templates/showform.html:71
|
||||
msgid "Alioth user name:"
|
||||
msgstr "Alioth-Benutzername:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:125
|
||||
#: debianmemberportfolio/templates/showform.html:78
|
||||
msgid "Wiki user name:"
|
||||
msgstr "Wiki-Benutzername:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:140
|
||||
#: debianmemberportfolio/templates/showform.html:85
|
||||
msgid "Forum user id:"
|
||||
msgstr "Forumsbenutzernummer:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:151
|
||||
#: debianmemberportfolio/templates/showform.html:92
|
||||
msgid "Output format:"
|
||||
msgstr "Ausgabeformat:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:157
|
||||
msgid "HTML"
|
||||
msgstr "HTML"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:159
|
||||
msgid "JSON"
|
||||
msgstr "JSON"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:161
|
||||
#: debianmemberportfolio/templates/showform.html:99
|
||||
msgid "Build Debian Member Portfolio URLs"
|
||||
msgstr "Debian-Mitgliedsportfolio-URLs bauen"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.mako:23
|
||||
#: debianmemberportfolio/templates/showurls.html:21
|
||||
msgid "Your personal links"
|
||||
msgstr "Ihre personalisierten Links"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.mako:30
|
||||
#: debianmemberportfolio/templates/showurls.html:25
|
||||
msgid "Debian Member Porfolio"
|
||||
msgstr "Debian-Mitgliederportfolio"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:28
|
||||
msgid "Usage"
|
||||
msgstr "Verwendung"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.mako:30
|
||||
#: debianmemberportfolio/templates/showurls.html:28
|
||||
msgid "URL"
|
||||
msgstr "URL"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.mako:40
|
||||
#: debianmemberportfolio/templates/showurls.html:38
|
||||
msgid "Error during URL creation:"
|
||||
msgstr "Fehler bei der URL-Erzeugung:"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.mako:67
|
||||
#: debianmemberportfolio/templates/showurls.html:59
|
||||
msgid "Restart"
|
||||
msgstr "Neu beginnen"
|
||||
|
|
@ -9,26 +9,35 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Debian Member Portfolio Service\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2014-02-08 18:14+0100\n"
|
||||
"POT-Creation-Date: 2017-09-10 10:49+0200\n"
|
||||
"PO-Revision-Date: 2014-01-11 01:29+0100\n"
|
||||
"Last-Translator: Jan Dittberner <jan@dittberner.info>\n"
|
||||
"Language: fr\n"
|
||||
"Language-Team: French "
|
||||
"(https://www.transifex.com/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"
|
||||
"Generated-By: Babel 2.5.0\n"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:45
|
||||
#: debianmemberportfolio/forms.py:33
|
||||
msgid "JSON"
|
||||
msgstr "JSON"
|
||||
|
||||
#: debianmemberportfolio/forms.py:33
|
||||
msgid "HTML"
|
||||
msgstr "HTML"
|
||||
|
||||
#: debianmemberportfolio/views.py:40
|
||||
msgid "Overview"
|
||||
msgstr "Vue d'ensemble"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:46
|
||||
#: debianmemberportfolio/views.py:41
|
||||
msgid "Debian Member's Package Overview"
|
||||
msgstr "Vue d'ensemble des paquets du membre Debian"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:47
|
||||
#: debianmemberportfolio/views.py:42
|
||||
msgid ""
|
||||
"Debian Member's Package Overview\n"
|
||||
"... showing all email addresses"
|
||||
|
@ -36,261 +45,261 @@ msgstr ""
|
|||
"Vue d'ensemble des paquets du membre Debian\n"
|
||||
"... affichage de tous les courriels"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:51
|
||||
#: debianmemberportfolio/views.py:46
|
||||
msgid "Bugs"
|
||||
msgstr "Bogues"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:52
|
||||
#: debianmemberportfolio/views.py:47
|
||||
msgid ""
|
||||
"bugs received\n"
|
||||
"(note: co-maintainers not listed, see <a href=\"https://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=\"https://bugs.debian.org"
|
||||
"/cgi-bin/bugreport.cgi?bug=430986\">#430986</a>)"
|
||||
"(note : co-responsables non listés, voir <a "
|
||||
"href=\"https://bugs.debian.org/cgi-"
|
||||
"bin/bugreport.cgi?bug=430986\">#430986</a>)"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:56
|
||||
#: debianmemberportfolio/views.py:51
|
||||
msgid "bugs reported"
|
||||
msgstr "Bogues rapportés"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:57
|
||||
#: debianmemberportfolio/views.py:52
|
||||
msgid "user tags"
|
||||
msgstr "Tags utilisateur"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:58
|
||||
#: debianmemberportfolio/views.py:53
|
||||
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)"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:60
|
||||
#: debianmemberportfolio/views.py:55
|
||||
msgid "<a href=\"https://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
msgstr "<a href=\"https://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:61
|
||||
#: debianmemberportfolio/views.py:56
|
||||
msgid "correspondent for bugs"
|
||||
msgstr "Correspondant pour les bogues"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:62
|
||||
#: debianmemberportfolio/views.py:57
|
||||
msgid "one year open bug history graph"
|
||||
msgstr "Graphique de l'évolution des bogues ouverts sur l'année écoulée"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:65
|
||||
#: debianmemberportfolio/views.py:60
|
||||
msgid "Build"
|
||||
msgstr "Build"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:66
|
||||
#: debianmemberportfolio/views.py:61
|
||||
msgid "buildd.d.o"
|
||||
msgstr "buildd.d.o"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:67
|
||||
#: debianmemberportfolio/views.py:62
|
||||
msgid "igloo"
|
||||
msgstr "igloo"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:70
|
||||
#: debianmemberportfolio/views.py:65
|
||||
msgid "Quality Assurance"
|
||||
msgstr "Assurance qualité"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:71
|
||||
#: debianmemberportfolio/views.py:66
|
||||
msgid "maintainer dashboard"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:72
|
||||
#: debianmemberportfolio/views.py:67
|
||||
msgid "lintian reports"
|
||||
msgstr "Rapports lintian"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:73
|
||||
#: debianmemberportfolio/views.py:68
|
||||
msgid "full lintian reports (i.e. including \"info\"-level messages)"
|
||||
msgstr "Rapports lintian complets (c-à-d incluant les messages de niveau \"info\")"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:75
|
||||
#: debianmemberportfolio/views.py:70
|
||||
msgid "piuparts"
|
||||
msgstr "Piuparts"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:76
|
||||
#: debianmemberportfolio/views.py:71
|
||||
msgid "Debian patch tracking system"
|
||||
msgstr "Système de suivi des patchs de Debian"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:77
|
||||
#: debianmemberportfolio/views.py:72
|
||||
msgid "Debian Url ChecKer"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:80
|
||||
#: debianmemberportfolio/views.py:75
|
||||
msgid "Mailing Lists"
|
||||
msgstr "Listes de diffusion"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:81
|
||||
#: debianmemberportfolio/views.py:76
|
||||
msgid "lists.d.o"
|
||||
msgstr "lists.d.o"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:82
|
||||
#: debianmemberportfolio/views.py:77
|
||||
msgid "lists.a.d.o"
|
||||
msgstr "lists.a.d.o"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:83
|
||||
#: debianmemberportfolio/views.py:78
|
||||
msgid "gmane"
|
||||
msgstr "Gmane"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:86
|
||||
#: debianmemberportfolio/views.py:81
|
||||
msgid "Files"
|
||||
msgstr "Fichiers"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:87
|
||||
#: debianmemberportfolio/views.py:82
|
||||
msgid "people.d.o"
|
||||
msgstr "people.d.o"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:88
|
||||
#: debianmemberportfolio/views.py:83
|
||||
msgid "oldpeople"
|
||||
msgstr "oldpeople"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:89
|
||||
#: debianmemberportfolio/controllers/portfolio.py:97
|
||||
#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:92
|
||||
msgid "Alioth"
|
||||
msgstr "Alioth"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:92
|
||||
#: debianmemberportfolio/views.py:87
|
||||
msgid "Membership"
|
||||
msgstr "Adhésion"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:93
|
||||
#: debianmemberportfolio/views.py:88
|
||||
msgid "NM"
|
||||
msgstr "NM"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:94
|
||||
#: debianmemberportfolio/views.py:89
|
||||
msgid "DB information via finger"
|
||||
msgstr "BD d'informations via finger"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:95
|
||||
#: debianmemberportfolio/views.py:90
|
||||
msgid "DB information via HTTP"
|
||||
msgstr "BD d'informations via HTTP"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:96
|
||||
#: debianmemberportfolio/views.py:91
|
||||
msgid "FOAF profile"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:98
|
||||
#: debianmemberportfolio/views.py:93
|
||||
msgid "Wiki"
|
||||
msgstr "Wiki"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:99
|
||||
#: debianmemberportfolio/views.py:94
|
||||
msgid "Forum"
|
||||
msgstr "Forum"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:102
|
||||
#: debianmemberportfolio/views.py:97
|
||||
msgid "Miscellaneous"
|
||||
msgstr "Divers"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:103
|
||||
#: debianmemberportfolio/views.py:98
|
||||
msgid "debtags"
|
||||
msgstr "Debtags"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:104
|
||||
#: debianmemberportfolio/views.py:99
|
||||
msgid "Planet Debian (name)"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:105
|
||||
#: debianmemberportfolio/views.py:100
|
||||
#, fuzzy
|
||||
msgid "Planet Debian (username)"
|
||||
msgstr "Nom d'utilisateur Debian"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:106
|
||||
#: debianmemberportfolio/views.py:101
|
||||
msgid "links"
|
||||
msgstr "Liens"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:107
|
||||
#: debianmemberportfolio/views.py:102
|
||||
msgid "Debian website"
|
||||
msgstr "Site web de Debian"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:108
|
||||
#: debianmemberportfolio/views.py:103
|
||||
msgid "Debian search"
|
||||
msgstr "Recherche Debian"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:109
|
||||
#: debianmemberportfolio/views.py:104
|
||||
msgid "GPG public key via finger"
|
||||
msgstr "Clef GPG publique via finger"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:110
|
||||
#: debianmemberportfolio/views.py:105
|
||||
msgid "GPG public key via HTTP"
|
||||
msgstr "Clef GPG publique via HTTP"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:111
|
||||
#: debianmemberportfolio/views.py:106
|
||||
msgid "NM, AM participation"
|
||||
msgstr "NM, AM participation"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:112
|
||||
#: debianmemberportfolio/views.py:107
|
||||
#, fuzzy
|
||||
msgid "Contribution information"
|
||||
msgstr "Saisissez vos informations personnelles"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:115
|
||||
#: debianmemberportfolio/views.py:110
|
||||
msgid "Information reachable via ssh (for Debian Members)"
|
||||
msgstr "Informations accessibles via ssh (pour les membres de Debian)"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:116
|
||||
#: debianmemberportfolio/views.py:111
|
||||
msgid "owned debian.net domains"
|
||||
msgstr "Propriété des domaines debian.net"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:117
|
||||
#: debianmemberportfolio/views.py:112
|
||||
msgid ""
|
||||
"<a href=\"https://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> database"
|
||||
" information"
|
||||
"<a href=\"https://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> "
|
||||
"database information"
|
||||
msgstr ""
|
||||
"Informations de la base de données <a "
|
||||
"href=\"https://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a>"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:119
|
||||
#: debianmemberportfolio/views.py:114
|
||||
msgid "Group membership information"
|
||||
msgstr "Information sur l'adhésion de groupe"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:122
|
||||
#: debianmemberportfolio/views.py:117
|
||||
msgid "Ubuntu"
|
||||
msgstr "Ubuntu"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:123
|
||||
#: debianmemberportfolio/views.py:118
|
||||
msgid "Available patches from Ubuntu"
|
||||
msgstr "Patchs disponibles pour Ubuntu"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:40
|
||||
#: debianmemberportfolio/model/urlbuilder.py:43
|
||||
msgid "Email address"
|
||||
msgstr "Courriel"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:41
|
||||
#: debianmemberportfolio/model/urlbuilder.py:44
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:42
|
||||
#: debianmemberportfolio/model/urlbuilder.py:45
|
||||
msgid "GPG fingerprint"
|
||||
msgstr "Empreinte GPG"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:43
|
||||
#: debianmemberportfolio/model/urlbuilder.py:46
|
||||
msgid "Debian user name"
|
||||
msgstr "Nom d'utilisateur Debian"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:44
|
||||
#: debianmemberportfolio/model/urlbuilder.py:47
|
||||
msgid "Non Debian email address"
|
||||
msgstr "Courriel hors Debian"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:45
|
||||
#: debianmemberportfolio/model/urlbuilder.py:48
|
||||
msgid "Alioth user name"
|
||||
msgstr "Nom d'utilisateur Alioth"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:97
|
||||
#: debianmemberportfolio/model/urlbuilder.py:101
|
||||
#: debianmemberportfolio/model/urlbuilder.py:109
|
||||
#: debianmemberportfolio/model/urlbuilder.py:113
|
||||
#, python-format
|
||||
msgid "Missing input: %s"
|
||||
msgstr "Entrée manquante : %s"
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:25
|
||||
#: debianmemberportfolio/templates/base.mako:33
|
||||
#: debianmemberportfolio/templates/base.html:24
|
||||
#: debianmemberportfolio/templates/base.html:31
|
||||
msgid "Debian Member Portfolio Service"
|
||||
msgstr "Service de portefeuille des membres de Debian"
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:31
|
||||
#: debianmemberportfolio/templates/base.html:30
|
||||
msgid "Debian Logo"
|
||||
msgstr "Logo Debian"
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:34
|
||||
#: debianmemberportfolio/templates/base.html:32
|
||||
msgid ""
|
||||
"This service has been inspired by Stefano Zacchiroli's <a "
|
||||
"href=\"https://wiki.debian.org/DDPortfolio\">DDPortfolio page in the "
|
||||
|
@ -303,11 +312,11 @@ msgstr ""
|
|||
"personnalisé de liens fournissant des informations sur un membre ou un "
|
||||
"mainteneur de paquet de Debian."
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:41
|
||||
#: debianmemberportfolio/templates/base.html:39
|
||||
msgid "AGPL - Free Software"
|
||||
msgstr "AGPL - Logiciel libre"
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:43
|
||||
#: debianmemberportfolio/templates/base.html:40
|
||||
#, fuzzy, python-format
|
||||
msgid ""
|
||||
"The service is available under the terms of the <a "
|
||||
|
@ -316,10 +325,10 @@ msgid ""
|
|||
" 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-"
|
||||
"clone URL\">%(cloneurl)s</a> using <a href=\"https://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>."
|
||||
"language you can contribute at <a href=\"%(weblateurl)s\" title=\"Debian "
|
||||
"Member Portfolio Service at Weblate\">Weblate</a>."
|
||||
msgstr ""
|
||||
"Ce service est disponible sous les termes de la licence <a "
|
||||
"href=\"https://www.gnu.org/licenses/agpl.html\">GNU Affero General Public"
|
||||
|
@ -330,88 +339,85 @@ msgstr ""
|
|||
"href=\"%(cloneurl)s\" title=\"git clone URL\">%(cloneurl)s</a> en "
|
||||
"utilisant <a href=\"http://git-scm.com/\">git</a>."
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:44
|
||||
msgid "Copyright © 2009-2014 Jan Dittberner"
|
||||
#: debianmemberportfolio/templates/base.html:41
|
||||
#, fuzzy
|
||||
msgid "Copyright © 2009-2017 Jan Dittberner"
|
||||
msgstr "Copyright © 2009-2014 Jan Dittberner"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:24
|
||||
#: debianmemberportfolio/templates/showform.html:22
|
||||
msgid "Enter your personal information"
|
||||
msgstr "Saisissez vos informations personnelles"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:30
|
||||
#: debianmemberportfolio/templates/showurls.mako:27
|
||||
#: debianmemberportfolio/templates/showform.html:29
|
||||
msgid "Debian Member Portfolio"
|
||||
msgstr "Portefeuille d'un Membre de Debian"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:36
|
||||
#: debianmemberportfolio/templates/showform.html:31
|
||||
msgid "Email address:"
|
||||
msgstr "Courriel :"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:47
|
||||
#: debianmemberportfolio/templates/showform.html:40
|
||||
msgid "Show all form fields"
|
||||
msgstr "Afficher tous les champs du formulaire"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:54
|
||||
#: debianmemberportfolio/templates/showform.html:43
|
||||
msgid "Name:"
|
||||
msgstr "Nom :"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:64
|
||||
#: debianmemberportfolio/templates/showform.html:50
|
||||
msgid "GPG fingerprint:"
|
||||
msgstr "Empreinte GPG :"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:79
|
||||
#: debianmemberportfolio/templates/showform.html:57
|
||||
msgid "Debian user name:"
|
||||
msgstr "Nom d'utilisateur Debian :"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:94
|
||||
#: debianmemberportfolio/templates/showform.html:64
|
||||
msgid "Non Debian email address:"
|
||||
msgstr "Courriel hors Debian :"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:109
|
||||
#: debianmemberportfolio/templates/showform.html:71
|
||||
msgid "Alioth user name:"
|
||||
msgstr "Nom d'utilisateur Alioth :"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:125
|
||||
#: debianmemberportfolio/templates/showform.html:78
|
||||
msgid "Wiki user name:"
|
||||
msgstr "Nom d'utilisateur Wiki :"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:140
|
||||
#: debianmemberportfolio/templates/showform.html:85
|
||||
msgid "Forum user id:"
|
||||
msgstr "Numéro d'utilisateur Forum :"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:151
|
||||
#: debianmemberportfolio/templates/showform.html:92
|
||||
msgid "Output format:"
|
||||
msgstr "Format de sortie :"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:157
|
||||
msgid "HTML"
|
||||
msgstr "HTML"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:159
|
||||
msgid "JSON"
|
||||
msgstr "JSON"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:161
|
||||
#: debianmemberportfolio/templates/showform.html:99
|
||||
msgid "Build Debian Member Portfolio URLs"
|
||||
msgstr "Construire les URLs du portefeuille du membre de Debian"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.mako:23
|
||||
#: debianmemberportfolio/templates/showurls.html:21
|
||||
msgid "Your personal links"
|
||||
msgstr "Vos liens personnels"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.mako:30
|
||||
#: debianmemberportfolio/templates/showurls.html:25
|
||||
#, fuzzy
|
||||
msgid "Debian Member Porfolio"
|
||||
msgstr "Portefeuille d'un Membre de Debian"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:28
|
||||
msgid "Usage"
|
||||
msgstr "Utilisation"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.mako:30
|
||||
#: debianmemberportfolio/templates/showurls.html:28
|
||||
msgid "URL"
|
||||
msgstr "URL"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.mako:40
|
||||
#: debianmemberportfolio/templates/showurls.html:38
|
||||
msgid "Error during URL creation:"
|
||||
msgstr "Erreur durant la création de l'URL :"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.mako:67
|
||||
#: debianmemberportfolio/templates/showurls.html:59
|
||||
msgid "Restart"
|
||||
msgstr "Recommencer"
|
||||
|
|
@ -9,26 +9,35 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Debian Member Portfolio Service\n"
|
||||
"Report-Msgid-Bugs-To: atoz.chevara@yahoo.com\n"
|
||||
"POT-Creation-Date: 2014-02-08 18:14+0100\n"
|
||||
"PO-Revision-Date: 2014-01-11 01:28+0100\n"
|
||||
"Last-Translator: Jan Dittberner <jan@dittberner.info>\n"
|
||||
"Language-Team: Indonesian "
|
||||
"(https://www.transifex.com/projects/p/debportfolioservice/language/id/)\n"
|
||||
"POT-Creation-Date: 2017-09-10 10:49+0200\n"
|
||||
"PO-Revision-Date: 2016-08-27 20:15+0000\n"
|
||||
"Last-Translator: Izharul Haq <atoz.chevara.2013@gmail.com>\n"
|
||||
"Language: id\n"
|
||||
"Language-Team: Indonesian <https://hosted.weblate.org/projects/debian-"
|
||||
"member-portfolio-service/translations/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"
|
||||
"Generated-By: Babel 2.5.0\n"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:45
|
||||
#: debianmemberportfolio/forms.py:33
|
||||
msgid "JSON"
|
||||
msgstr "JSON"
|
||||
|
||||
#: debianmemberportfolio/forms.py:33
|
||||
msgid "HTML"
|
||||
msgstr "HTML"
|
||||
|
||||
#: debianmemberportfolio/views.py:40
|
||||
msgid "Overview"
|
||||
msgstr "Gambaran Umum"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:46
|
||||
#: debianmemberportfolio/views.py:41
|
||||
msgid "Debian Member's Package Overview"
|
||||
msgstr "Gambaran Umum Paket Anggota Debian"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:47
|
||||
#: debianmemberportfolio/views.py:42
|
||||
msgid ""
|
||||
"Debian Member's Package Overview\n"
|
||||
"... showing all email addresses"
|
||||
|
@ -36,11 +45,11 @@ msgstr ""
|
|||
"Gambaran Umum Paket Anggota Debian\n"
|
||||
"... tampilkan semua alamat email"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:51
|
||||
#: debianmemberportfolio/views.py:46
|
||||
msgid "Bugs"
|
||||
msgstr "Bugs"
|
||||
msgstr "Kutu"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:52
|
||||
#: debianmemberportfolio/views.py:47
|
||||
msgid ""
|
||||
"bugs received\n"
|
||||
"(note: co-maintainers not listed, see <a href=\"https://bugs.debian.org"
|
||||
|
@ -51,247 +60,246 @@ msgstr ""
|
|||
"href=\"https://bugs.debian.org/cgi-"
|
||||
"bin/bugreport.cgi?bug=430986\">#430986</a>)"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:56
|
||||
#: debianmemberportfolio/views.py:51
|
||||
msgid "bugs reported"
|
||||
msgstr "melaporkan bug"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:57
|
||||
#: debianmemberportfolio/views.py:52
|
||||
msgid "user tags"
|
||||
msgstr "label pengguna"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:58
|
||||
#: debianmemberportfolio/views.py:53
|
||||
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)"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:60
|
||||
#: debianmemberportfolio/views.py:55
|
||||
msgid "<a href=\"https://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
msgstr "<a href=\"https://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:61
|
||||
#: debianmemberportfolio/views.py:56
|
||||
msgid "correspondent for bugs"
|
||||
msgstr "koresponden untuk bug"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:62
|
||||
#: debianmemberportfolio/views.py:57
|
||||
msgid "one year open bug history graph"
|
||||
msgstr "grafik perkembangan laporan bug terbuka lebih dari setahun"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:65
|
||||
#: debianmemberportfolio/views.py:60
|
||||
msgid "Build"
|
||||
msgstr "Bangun"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:66
|
||||
#: debianmemberportfolio/views.py:61
|
||||
msgid "buildd.d.o"
|
||||
msgstr "buildd.d.o"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:67
|
||||
#: debianmemberportfolio/views.py:62
|
||||
msgid "igloo"
|
||||
msgstr "igloo"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:70
|
||||
#: debianmemberportfolio/views.py:65
|
||||
msgid "Quality Assurance"
|
||||
msgstr "Jaminan Mutu"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:71
|
||||
#: debianmemberportfolio/views.py:66
|
||||
msgid "maintainer dashboard"
|
||||
msgstr ""
|
||||
msgstr "dasbor maintainer"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:72
|
||||
#: debianmemberportfolio/views.py:67
|
||||
msgid "lintian reports"
|
||||
msgstr "laporan lintian"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:73
|
||||
#: debianmemberportfolio/views.py:68
|
||||
msgid "full lintian reports (i.e. including \"info\"-level messages)"
|
||||
msgstr "seluruh pesan lintian (i.e. termasuk pesan \"info\"-level)"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:75
|
||||
#: debianmemberportfolio/views.py:70
|
||||
msgid "piuparts"
|
||||
msgstr "piuparts"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:76
|
||||
#: debianmemberportfolio/views.py:71
|
||||
msgid "Debian patch tracking system"
|
||||
msgstr "sistem pelacakan patch Debian"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:77
|
||||
#: debianmemberportfolio/views.py:72
|
||||
msgid "Debian Url ChecKer"
|
||||
msgstr ""
|
||||
msgstr "Debian Url ChecKer"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:80
|
||||
#: debianmemberportfolio/views.py:75
|
||||
msgid "Mailing Lists"
|
||||
msgstr "Milis"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:81
|
||||
#: debianmemberportfolio/views.py:76
|
||||
msgid "lists.d.o"
|
||||
msgstr "lists.d.o"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:82
|
||||
#: debianmemberportfolio/views.py:77
|
||||
msgid "lists.a.d.o"
|
||||
msgstr "lists.a.d.o"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:83
|
||||
#: debianmemberportfolio/views.py:78
|
||||
msgid "gmane"
|
||||
msgstr "gmane"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:86
|
||||
#: debianmemberportfolio/views.py:81
|
||||
msgid "Files"
|
||||
msgstr "Berkas-berkas"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:87
|
||||
#: debianmemberportfolio/views.py:82
|
||||
msgid "people.d.o"
|
||||
msgstr "people.d.o"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:88
|
||||
#: debianmemberportfolio/views.py:83
|
||||
msgid "oldpeople"
|
||||
msgstr "oldpeople"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:89
|
||||
#: debianmemberportfolio/controllers/portfolio.py:97
|
||||
#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:92
|
||||
msgid "Alioth"
|
||||
msgstr "Alioth"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:92
|
||||
#: debianmemberportfolio/views.py:87
|
||||
msgid "Membership"
|
||||
msgstr "Keanggotaan"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:93
|
||||
#: debianmemberportfolio/views.py:88
|
||||
msgid "NM"
|
||||
msgstr "NM"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:94
|
||||
#: debianmemberportfolio/views.py:89
|
||||
msgid "DB information via finger"
|
||||
msgstr "informasi DB melalui finger"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:95
|
||||
#: debianmemberportfolio/views.py:90
|
||||
msgid "DB information via HTTP"
|
||||
msgstr "informasi DB melalui HTTP"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:96
|
||||
#: debianmemberportfolio/views.py:91
|
||||
msgid "FOAF profile"
|
||||
msgstr ""
|
||||
msgstr "profil FOAF"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:98
|
||||
#: debianmemberportfolio/views.py:93
|
||||
msgid "Wiki"
|
||||
msgstr "Wiki"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:99
|
||||
#: debianmemberportfolio/views.py:94
|
||||
msgid "Forum"
|
||||
msgstr "Forum"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:102
|
||||
#: debianmemberportfolio/views.py:97
|
||||
msgid "Miscellaneous"
|
||||
msgstr "Lain-Lain"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:103
|
||||
#: debianmemberportfolio/views.py:98
|
||||
msgid "debtags"
|
||||
msgstr "debtags"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:104
|
||||
#: debianmemberportfolio/views.py:99
|
||||
msgid "Planet Debian (name)"
|
||||
msgstr ""
|
||||
msgstr "Planet Debian (nama)"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:105
|
||||
#: debianmemberportfolio/views.py:100
|
||||
#, fuzzy
|
||||
msgid "Planet Debian (username)"
|
||||
msgstr "nama pengguna Debian"
|
||||
msgstr "Planet Debian (nama pengguna)"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:106
|
||||
#: debianmemberportfolio/views.py:101
|
||||
msgid "links"
|
||||
msgstr "tautan"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:107
|
||||
#: debianmemberportfolio/views.py:102
|
||||
msgid "Debian website"
|
||||
msgstr "website Debian"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:108
|
||||
#: debianmemberportfolio/views.py:103
|
||||
msgid "Debian search"
|
||||
msgstr "pencarian Debian"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:109
|
||||
#: debianmemberportfolio/views.py:104
|
||||
msgid "GPG public key via finger"
|
||||
msgstr "kunci publik GPG melalui finger"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:110
|
||||
#: debianmemberportfolio/views.py:105
|
||||
msgid "GPG public key via HTTP"
|
||||
msgstr "kunci publik GPG melalui HTTP"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:111
|
||||
#: debianmemberportfolio/views.py:106
|
||||
msgid "NM, AM participation"
|
||||
msgstr "partisipasi NM, AM"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:112
|
||||
#: debianmemberportfolio/views.py:107
|
||||
#, fuzzy
|
||||
msgid "Contribution information"
|
||||
msgstr "Masukkan informasi data pribadi anda"
|
||||
msgstr "Informasi kontribusi"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:115
|
||||
#: debianmemberportfolio/views.py:110
|
||||
msgid "Information reachable via ssh (for Debian Members)"
|
||||
msgstr "Informasi dicapai melalui ssh (untuk Anggota Debian)"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:116
|
||||
#: debianmemberportfolio/views.py:111
|
||||
msgid "owned debian.net domains"
|
||||
msgstr "domain debian.net sendiri"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:117
|
||||
#: debianmemberportfolio/views.py:112
|
||||
msgid ""
|
||||
"<a href=\"https://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> database"
|
||||
" information"
|
||||
"<a href=\"https://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> "
|
||||
"database information"
|
||||
msgstr ""
|
||||
"informasi database <a "
|
||||
"href=\"https://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a>"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:119
|
||||
#: debianmemberportfolio/views.py:114
|
||||
msgid "Group membership information"
|
||||
msgstr "Informasi keanggotaan kelompok"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:122
|
||||
#: debianmemberportfolio/views.py:117
|
||||
msgid "Ubuntu"
|
||||
msgstr "Ubuntu"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:123
|
||||
#: debianmemberportfolio/views.py:118
|
||||
msgid "Available patches from Ubuntu"
|
||||
msgstr "Tambalan dari Ubuntu yang tersedia"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:40
|
||||
#: debianmemberportfolio/model/urlbuilder.py:43
|
||||
msgid "Email address"
|
||||
msgstr "Alamat Email"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:41
|
||||
#: debianmemberportfolio/model/urlbuilder.py:44
|
||||
msgid "Name"
|
||||
msgstr "Nama"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:42
|
||||
#: debianmemberportfolio/model/urlbuilder.py:45
|
||||
msgid "GPG fingerprint"
|
||||
msgstr "sidik jari GPG"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:43
|
||||
#: debianmemberportfolio/model/urlbuilder.py:46
|
||||
msgid "Debian user name"
|
||||
msgstr "nama pengguna Debian"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:44
|
||||
#: debianmemberportfolio/model/urlbuilder.py:47
|
||||
msgid "Non Debian email address"
|
||||
msgstr "Selain alamat email Debian"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:45
|
||||
#: debianmemberportfolio/model/urlbuilder.py:48
|
||||
msgid "Alioth user name"
|
||||
msgstr "nama pengguna Alioth"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:97
|
||||
#: debianmemberportfolio/model/urlbuilder.py:101
|
||||
#: debianmemberportfolio/model/urlbuilder.py:109
|
||||
#: debianmemberportfolio/model/urlbuilder.py:113
|
||||
#, python-format
|
||||
msgid "Missing input: %s"
|
||||
msgstr "Tidak ada masukan: %s"
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:25
|
||||
#: debianmemberportfolio/templates/base.mako:33
|
||||
#: debianmemberportfolio/templates/base.html:24
|
||||
#: debianmemberportfolio/templates/base.html:31
|
||||
msgid "Debian Member Portfolio Service"
|
||||
msgstr "Layanan Portfolio Anggota Debian"
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:31
|
||||
#: debianmemberportfolio/templates/base.html:30
|
||||
msgid "Debian Logo"
|
||||
msgstr "Logo Debian"
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:34
|
||||
#: debianmemberportfolio/templates/base.html:32
|
||||
msgid ""
|
||||
"This service has been inspired by Stefano Zacchiroli's <a "
|
||||
"href=\"https://wiki.debian.org/DDPortfolio\">DDPortfolio page in the "
|
||||
|
@ -304,11 +312,11 @@ msgstr ""
|
|||
" mengarah ke Anggota Debian atau informasi mengenai pengelola paket "
|
||||
"Debian."
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:41
|
||||
#: debianmemberportfolio/templates/base.html:39
|
||||
msgid "AGPL - Free Software"
|
||||
msgstr "AGPL - Free Software"
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:43
|
||||
#: debianmemberportfolio/templates/base.html:40
|
||||
#, fuzzy, python-format
|
||||
msgid ""
|
||||
"The service is available under the terms of the <a "
|
||||
|
@ -317,10 +325,10 @@ msgid ""
|
|||
" 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-"
|
||||
"clone URL\">%(cloneurl)s</a> using <a href=\"https://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>."
|
||||
"language you can contribute at <a href=\"%(weblateurl)s\" title=\"Debian "
|
||||
"Member Portfolio Service at Weblate\">Weblate</a>."
|
||||
msgstr ""
|
||||
"Layanan ini tersedia di bawah persyaratan <a "
|
||||
"href=\"https://www.gnu.org/licenses/agpl.html\">GNU Affero General Public"
|
||||
|
@ -329,90 +337,89 @@ msgstr ""
|
|||
"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>."
|
||||
"://git-scm.com/\">git</a>.\n"
|
||||
"Jika anda ingin menerjemahkan layanan ini ke dalam bahasa anda, anda "
|
||||
"dapat berkontribusi di <a href=\"%(weblateurl)s\" title=\"Debian Member"
|
||||
" Portfolio Service at Weblate\">Weblate</a>."
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:44
|
||||
msgid "Copyright © 2009-2014 Jan Dittberner"
|
||||
msgstr "Hak Cipta © 2009-2014 Jan Dittberner"
|
||||
#: debianmemberportfolio/templates/base.html:41
|
||||
msgid "Copyright © 2009-2017 Jan Dittberner"
|
||||
msgstr "Hak Cipta © 2009-2017 Jan Dittberner"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:24
|
||||
#: debianmemberportfolio/templates/showform.html:22
|
||||
msgid "Enter your personal information"
|
||||
msgstr "Masukkan informasi data pribadi anda"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:30
|
||||
#: debianmemberportfolio/templates/showurls.mako:27
|
||||
#: debianmemberportfolio/templates/showform.html:29
|
||||
msgid "Debian Member Portfolio"
|
||||
msgstr "Portfolio Anggota Debian"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:36
|
||||
#: debianmemberportfolio/templates/showform.html:31
|
||||
msgid "Email address:"
|
||||
msgstr "Alamat surel:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:47
|
||||
#: debianmemberportfolio/templates/showform.html:40
|
||||
msgid "Show all form fields"
|
||||
msgstr "Tampilkan semua bagian formulir"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:54
|
||||
#: debianmemberportfolio/templates/showform.html:43
|
||||
msgid "Name:"
|
||||
msgstr "Nama:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:64
|
||||
#: debianmemberportfolio/templates/showform.html:50
|
||||
msgid "GPG fingerprint:"
|
||||
msgstr "sidik jari GPG"
|
||||
msgstr "sidik jari GPG:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:79
|
||||
#: debianmemberportfolio/templates/showform.html:57
|
||||
msgid "Debian user name:"
|
||||
msgstr "Nama pengguna Debian:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:94
|
||||
#: debianmemberportfolio/templates/showform.html:64
|
||||
msgid "Non Debian email address:"
|
||||
msgstr "Selain alamat email Debian:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:109
|
||||
#: debianmemberportfolio/templates/showform.html:71
|
||||
msgid "Alioth user name:"
|
||||
msgstr "Nama pengguna Alioth:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:125
|
||||
#: debianmemberportfolio/templates/showform.html:78
|
||||
msgid "Wiki user name:"
|
||||
msgstr "Nama pengguna Wiki"
|
||||
msgstr "Nama pengguna Wiki:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:140
|
||||
#: debianmemberportfolio/templates/showform.html:85
|
||||
msgid "Forum user id:"
|
||||
msgstr "ID pengguna Forum:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:151
|
||||
#: debianmemberportfolio/templates/showform.html:92
|
||||
msgid "Output format:"
|
||||
msgstr "Format Keluaran:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:157
|
||||
msgid "HTML"
|
||||
msgstr "HTML"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:159
|
||||
msgid "JSON"
|
||||
msgstr "JSON"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:161
|
||||
#: debianmemberportfolio/templates/showform.html:99
|
||||
msgid "Build Debian Member Portfolio URLs"
|
||||
msgstr "Membangun URL Portfolio Anggota Debian"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.mako:23
|
||||
#: debianmemberportfolio/templates/showurls.html:21
|
||||
msgid "Your personal links"
|
||||
msgstr "Tautan pribadi anda"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.mako:30
|
||||
#: debianmemberportfolio/templates/showurls.html:25
|
||||
#, fuzzy
|
||||
msgid "Debian Member Porfolio"
|
||||
msgstr "Portfolio Anggota Debian"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:28
|
||||
msgid "Usage"
|
||||
msgstr "Penggunaan"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.mako:30
|
||||
#: debianmemberportfolio/templates/showurls.html:28
|
||||
msgid "URL"
|
||||
msgstr "URL"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.mako:40
|
||||
#: debianmemberportfolio/templates/showurls.html:38
|
||||
msgid "Error during URL creation:"
|
||||
msgstr "Kesalahan selama pembuatan URL:"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.mako:67
|
||||
#: debianmemberportfolio/templates/showurls.html:59
|
||||
msgid "Restart"
|
||||
msgstr "Mulai ulang"
|
||||
|
402
debianmemberportfolio/translations/nb/LC_MESSAGES/messages.po
Normal file
402
debianmemberportfolio/translations/nb/LC_MESSAGES/messages.po
Normal file
|
@ -0,0 +1,402 @@
|
|||
# German translations for the Debian Member Portfolio Service.
|
||||
#
|
||||
# Copyright (C) 2009-2014 Jan Dittberner
|
||||
# This file is distributed under the same license as the Debian Member
|
||||
# Portfolio Service project.
|
||||
# Translators:
|
||||
# Jan Dittberner <jan@dittberner.info>, 2009-2014
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n"
|
||||
"Report-Msgid-Bugs-To: jan@dittberner.info\n"
|
||||
"POT-Creation-Date: 2017-09-10 10:49+0200\n"
|
||||
"PO-Revision-Date: 2017-09-10 10:52+0200\n"
|
||||
"Last-Translator: Petter Reinholdtsen <pere-weblate@hungry.com>\n"
|
||||
"Language: nb\n"
|
||||
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects"
|
||||
"/debian-member-portfolio-service/translations/nb/>\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 2.5.0\n"
|
||||
|
||||
#: debianmemberportfolio/forms.py:33
|
||||
msgid "JSON"
|
||||
msgstr "JSON"
|
||||
|
||||
#: debianmemberportfolio/forms.py:33
|
||||
msgid "HTML"
|
||||
msgstr "HTML"
|
||||
|
||||
#: debianmemberportfolio/views.py:40
|
||||
msgid "Overview"
|
||||
msgstr "Oversikt"
|
||||
|
||||
#: debianmemberportfolio/views.py:41
|
||||
msgid "Debian Member's Package Overview"
|
||||
msgstr "Debian-medlemmers pakkeoversikt"
|
||||
|
||||
#: debianmemberportfolio/views.py:42
|
||||
msgid ""
|
||||
"Debian Member's Package Overview\n"
|
||||
"... showing all email addresses"
|
||||
msgstr ""
|
||||
"Debianmedlemmers pakkeoversikt\n"
|
||||
"... viser alle epostadresser"
|
||||
|
||||
#: debianmemberportfolio/views.py:46
|
||||
msgid "Bugs"
|
||||
msgstr "Feil"
|
||||
|
||||
#: debianmemberportfolio/views.py:47
|
||||
msgid ""
|
||||
"bugs received\n"
|
||||
"(note: co-maintainers not listed, see <a href=\"https://bugs.debian.org"
|
||||
"/cgi-bin/bugreport.cgi?bug=430986\">#430986</a>)"
|
||||
msgstr ""
|
||||
"feilrapporter mottatt\n"
|
||||
"(merk: med-vedlikeholdere er ikke listet opp, se <a "
|
||||
"href=\"https://bugs.debian.org/430986\">#430986</a>)"
|
||||
|
||||
#: debianmemberportfolio/views.py:51
|
||||
msgid "bugs reported"
|
||||
msgstr "feil rapportert"
|
||||
|
||||
#: debianmemberportfolio/views.py:52
|
||||
msgid "user tags"
|
||||
msgstr "brukermerker"
|
||||
|
||||
#: debianmemberportfolio/views.py:53
|
||||
msgid "all messages (i.e., full text search for developer name on all bug logs)"
|
||||
msgstr ""
|
||||
"alle meldinger (med andre ord, fulltekstsøk etter utviklernavnet i alle "
|
||||
"feilrapporter)"
|
||||
|
||||
#: debianmemberportfolio/views.py:55
|
||||
msgid "<a href=\"https://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
msgstr "<a href=\"https://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
|
||||
#: debianmemberportfolio/views.py:56
|
||||
msgid "correspondent for bugs"
|
||||
msgstr "korrespondent for feilrapporter"
|
||||
|
||||
#: debianmemberportfolio/views.py:57
|
||||
msgid "one year open bug history graph"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/views.py:60
|
||||
msgid "Build"
|
||||
msgstr "Bygg"
|
||||
|
||||
#: debianmemberportfolio/views.py:61
|
||||
msgid "buildd.d.o"
|
||||
msgstr "buildd.d.o"
|
||||
|
||||
#: debianmemberportfolio/views.py:62
|
||||
msgid "igloo"
|
||||
msgstr "iglo"
|
||||
|
||||
#: debianmemberportfolio/views.py:65
|
||||
msgid "Quality Assurance"
|
||||
msgstr "Kvalitetssikring"
|
||||
|
||||
#: debianmemberportfolio/views.py:66
|
||||
msgid "maintainer dashboard"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/views.py:67
|
||||
msgid "lintian reports"
|
||||
msgstr "lintian-rapporter"
|
||||
|
||||
#: debianmemberportfolio/views.py:68
|
||||
msgid "full lintian reports (i.e. including \"info\"-level messages)"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/views.py:70
|
||||
msgid "piuparts"
|
||||
msgstr "piuparts"
|
||||
|
||||
#: debianmemberportfolio/views.py:71
|
||||
msgid "Debian patch tracking system"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/views.py:72
|
||||
msgid "Debian Url ChecKer"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/views.py:75
|
||||
msgid "Mailing Lists"
|
||||
msgstr "Epostlister"
|
||||
|
||||
#: debianmemberportfolio/views.py:76
|
||||
msgid "lists.d.o"
|
||||
msgstr "lists.d.o"
|
||||
|
||||
#: debianmemberportfolio/views.py:77
|
||||
msgid "lists.a.d.o"
|
||||
msgstr "lists.a.d.o"
|
||||
|
||||
#: debianmemberportfolio/views.py:78
|
||||
msgid "gmane"
|
||||
msgstr "gmane"
|
||||
|
||||
#: debianmemberportfolio/views.py:81
|
||||
msgid "Files"
|
||||
msgstr "Filer"
|
||||
|
||||
#: debianmemberportfolio/views.py:82
|
||||
msgid "people.d.o"
|
||||
msgstr "people.d.o"
|
||||
|
||||
#: debianmemberportfolio/views.py:83
|
||||
msgid "oldpeople"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:92
|
||||
msgid "Alioth"
|
||||
msgstr "Alioth"
|
||||
|
||||
#: debianmemberportfolio/views.py:87
|
||||
msgid "Membership"
|
||||
msgstr "Medlemskap"
|
||||
|
||||
#: debianmemberportfolio/views.py:88
|
||||
msgid "NM"
|
||||
msgstr "NM"
|
||||
|
||||
#: debianmemberportfolio/views.py:89
|
||||
msgid "DB information via finger"
|
||||
msgstr "DB-informasjon via finger"
|
||||
|
||||
#: debianmemberportfolio/views.py:90
|
||||
msgid "DB information via HTTP"
|
||||
msgstr "DB-informasjon via HTTP"
|
||||
|
||||
#: debianmemberportfolio/views.py:91
|
||||
msgid "FOAF profile"
|
||||
msgstr "FOAF-profil"
|
||||
|
||||
#: debianmemberportfolio/views.py:93
|
||||
msgid "Wiki"
|
||||
msgstr "Wiki"
|
||||
|
||||
#: debianmemberportfolio/views.py:94
|
||||
msgid "Forum"
|
||||
msgstr "Forum"
|
||||
|
||||
#: debianmemberportfolio/views.py:97
|
||||
msgid "Miscellaneous"
|
||||
msgstr "Diverse"
|
||||
|
||||
#: debianmemberportfolio/views.py:98
|
||||
msgid "debtags"
|
||||
msgstr "debtags"
|
||||
|
||||
#: debianmemberportfolio/views.py:99
|
||||
msgid "Planet Debian (name)"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/views.py:100
|
||||
msgid "Planet Debian (username)"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/views.py:101
|
||||
msgid "links"
|
||||
msgstr "lenker"
|
||||
|
||||
#: debianmemberportfolio/views.py:102
|
||||
msgid "Debian website"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/views.py:103
|
||||
msgid "Debian search"
|
||||
msgstr "Debian-søk"
|
||||
|
||||
#: debianmemberportfolio/views.py:104
|
||||
msgid "GPG public key via finger"
|
||||
msgstr "Offentlig GPG-nøkkel via finger"
|
||||
|
||||
#: debianmemberportfolio/views.py:105
|
||||
msgid "GPG public key via HTTP"
|
||||
msgstr "Offentlig GPG-nøkkel via HTTP"
|
||||
|
||||
#: debianmemberportfolio/views.py:106
|
||||
msgid "NM, AM participation"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/views.py:107
|
||||
msgid "Contribution information"
|
||||
msgstr "Bidragsinformasjon"
|
||||
|
||||
#: debianmemberportfolio/views.py:110
|
||||
msgid "Information reachable via ssh (for Debian Members)"
|
||||
msgstr "Informasjon tilgjengelig via ssh (for Debian-medlemmer)"
|
||||
|
||||
#: debianmemberportfolio/views.py:111
|
||||
msgid "owned debian.net domains"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/views.py:112
|
||||
msgid ""
|
||||
"<a href=\"https://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> "
|
||||
"database information"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/views.py:114
|
||||
msgid "Group membership information"
|
||||
msgstr "Gruppemedlemskapsinformasjon"
|
||||
|
||||
#: debianmemberportfolio/views.py:117
|
||||
msgid "Ubuntu"
|
||||
msgstr "Ubuntu"
|
||||
|
||||
#: debianmemberportfolio/views.py:118
|
||||
msgid "Available patches from Ubuntu"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:43
|
||||
msgid "Email address"
|
||||
msgstr "Epostadresse"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:44
|
||||
msgid "Name"
|
||||
msgstr "Navn"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:45
|
||||
msgid "GPG fingerprint"
|
||||
msgstr "GPG-fingeravtrykk"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:46
|
||||
msgid "Debian user name"
|
||||
msgstr "Debian-brukernavn"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:47
|
||||
msgid "Non Debian email address"
|
||||
msgstr "Epostadresser utenom Debian"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:48
|
||||
msgid "Alioth user name"
|
||||
msgstr "Alioth-brukernavn"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:109
|
||||
#: debianmemberportfolio/model/urlbuilder.py:113
|
||||
#, python-format
|
||||
msgid "Missing input: %s"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/templates/base.html:24
|
||||
#: debianmemberportfolio/templates/base.html:31
|
||||
msgid "Debian Member Portfolio Service"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/templates/base.html:30
|
||||
msgid "Debian Logo"
|
||||
msgstr "Debian-logo"
|
||||
|
||||
#: debianmemberportfolio/templates/base.html:32
|
||||
msgid ""
|
||||
"This service has been inspired by Stefano Zacchiroli's <a "
|
||||
"href=\"https://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 ""
|
||||
|
||||
#: debianmemberportfolio/templates/base.html:39
|
||||
msgid "AGPL - Free Software"
|
||||
msgstr "AGPL - Fri programvare"
|
||||
|
||||
#: debianmemberportfolio/templates/base.html:40
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The service is available under the terms of the <a "
|
||||
"href=\"https://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=\"https://git-"
|
||||
"scm.com/\">git</a>. If you want to translate this service to your "
|
||||
"language you can contribute at <a href=\"%(weblateurl)s\" title=\"Debian "
|
||||
"Member Portfolio Service at Weblate\">Weblate</a>."
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/templates/base.html:41
|
||||
msgid "Copyright © 2009-2017 Jan Dittberner"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:22
|
||||
msgid "Enter your personal information"
|
||||
msgstr "Skriv inn informasjon om deg selv"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:29
|
||||
msgid "Debian Member Portfolio"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:31
|
||||
msgid "Email address:"
|
||||
msgstr "Epostadresse:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:40
|
||||
msgid "Show all form fields"
|
||||
msgstr "Vis alle felt i skjema"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:43
|
||||
msgid "Name:"
|
||||
msgstr "Navn:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:50
|
||||
msgid "GPG fingerprint:"
|
||||
msgstr "GPG-fingeravtrykk:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:57
|
||||
msgid "Debian user name:"
|
||||
msgstr "Debian-brukernavn:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:64
|
||||
msgid "Non Debian email address:"
|
||||
msgstr "Epostadresse utenom Debian:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:71
|
||||
msgid "Alioth user name:"
|
||||
msgstr "Alioth-brukernavn:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:78
|
||||
msgid "Wiki user name:"
|
||||
msgstr "Wiki-brukernavn:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:85
|
||||
msgid "Forum user id:"
|
||||
msgstr "Forum-brukerid:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:92
|
||||
msgid "Output format:"
|
||||
msgstr "Fremvisningsformat:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:99
|
||||
msgid "Build Debian Member Portfolio URLs"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:21
|
||||
msgid "Your personal links"
|
||||
msgstr "Dine personlige lenker"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:25
|
||||
msgid "Debian Member Porfolio"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:28
|
||||
msgid "Usage"
|
||||
msgstr "Bruk"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:28
|
||||
msgid "URL"
|
||||
msgstr "URL"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:38
|
||||
msgid "Error during URL creation:"
|
||||
msgstr "Feil under oppretting av URL:"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:59
|
||||
msgid "Restart"
|
||||
msgstr "Start om igjen"
|
427
debianmemberportfolio/translations/nl/LC_MESSAGES/messages.po
Normal file
427
debianmemberportfolio/translations/nl/LC_MESSAGES/messages.po
Normal file
|
@ -0,0 +1,427 @@
|
|||
# German translations for the Debian Member Portfolio Service.
|
||||
#
|
||||
# Copyright (C) 2009-2014 Jan Dittberner
|
||||
# This file is distributed under the same license as the Debian Member
|
||||
# Portfolio Service project.
|
||||
# Translators:
|
||||
# Jan Dittberner <jan@dittberner.info>, 2009-2014
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n"
|
||||
"Report-Msgid-Bugs-To: jan@dittberner.info\n"
|
||||
"POT-Creation-Date: 2017-09-10 10:49+0200\n"
|
||||
"PO-Revision-Date: 2017-09-10 10:53+0200\n"
|
||||
"Last-Translator: Heimen Stoffels <vistausss@outlook.com>\n"
|
||||
"Language: nl\n"
|
||||
"Language-Team: Dutch <https://hosted.weblate.org/projects/debian-member-"
|
||||
"portfolio-service/translations/nl/>\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"
|
||||
"X-Generator: Weblate 2.12-dev\n"
|
||||
"Generated-By: Babel 2.5.0\n"
|
||||
|
||||
#: debianmemberportfolio/forms.py:33
|
||||
msgid "JSON"
|
||||
msgstr "JSON"
|
||||
|
||||
#: debianmemberportfolio/forms.py:33
|
||||
msgid "HTML"
|
||||
msgstr "HTML"
|
||||
|
||||
#: debianmemberportfolio/views.py:40
|
||||
msgid "Overview"
|
||||
msgstr "Overzicht"
|
||||
|
||||
#: debianmemberportfolio/views.py:41
|
||||
msgid "Debian Member's Package Overview"
|
||||
msgstr "Debian-ledenpakket - Overzicht"
|
||||
|
||||
#: debianmemberportfolio/views.py:42
|
||||
msgid ""
|
||||
"Debian Member's Package Overview\n"
|
||||
"... showing all email addresses"
|
||||
msgstr ""
|
||||
"Debian-ledenpakket - Overzicht\n"
|
||||
"... alle e-mailadressen worden weergegeven"
|
||||
|
||||
#: debianmemberportfolio/views.py:46
|
||||
msgid "Bugs"
|
||||
msgstr "Fouten"
|
||||
|
||||
#: debianmemberportfolio/views.py:47
|
||||
msgid ""
|
||||
"bugs received\n"
|
||||
"(note: co-maintainers not listed, see <a href=\"https://bugs.debian.org"
|
||||
"/cgi-bin/bugreport.cgi?bug=430986\">#430986</a>)"
|
||||
msgstr ""
|
||||
"fouten ontvangen\n"
|
||||
"(let op: mede-beheerders staan niet op de lijst, zie <a "
|
||||
"href=\"https://bugs.debian.org/cgi-"
|
||||
"bin/bugreport.cgi?bug=430986\">#430986</a>"
|
||||
|
||||
#: debianmemberportfolio/views.py:51
|
||||
msgid "bugs reported"
|
||||
msgstr "fouten gemeld"
|
||||
|
||||
#: debianmemberportfolio/views.py:52
|
||||
msgid "user tags"
|
||||
msgstr "gebruikerslabels"
|
||||
|
||||
#: debianmemberportfolio/views.py:53
|
||||
msgid "all messages (i.e., full text search for developer name on all bug logs)"
|
||||
msgstr ""
|
||||
"alle berichten (zoals zoeken in volledige tekst voor naam van "
|
||||
"ontwikkelaar in alle foutlogs)"
|
||||
|
||||
#: debianmemberportfolio/views.py:55
|
||||
msgid "<a href=\"https://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
msgstr "<a href=\"https://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
|
||||
#: debianmemberportfolio/views.py:56
|
||||
msgid "correspondent for bugs"
|
||||
msgstr "correspondent voor fouten"
|
||||
|
||||
#: debianmemberportfolio/views.py:57
|
||||
msgid "one year open bug history graph"
|
||||
msgstr "geschiedenisgrafiek voor fouten die één jaar openstaan"
|
||||
|
||||
#: debianmemberportfolio/views.py:60
|
||||
msgid "Build"
|
||||
msgstr "Bouwen"
|
||||
|
||||
#: debianmemberportfolio/views.py:61
|
||||
msgid "buildd.d.o"
|
||||
msgstr "buildd.d.o"
|
||||
|
||||
#: debianmemberportfolio/views.py:62
|
||||
msgid "igloo"
|
||||
msgstr "iglo"
|
||||
|
||||
#: debianmemberportfolio/views.py:65
|
||||
msgid "Quality Assurance"
|
||||
msgstr "Kwaliteitszekerheid"
|
||||
|
||||
#: debianmemberportfolio/views.py:66
|
||||
msgid "maintainer dashboard"
|
||||
msgstr "beheerdersdashboard"
|
||||
|
||||
#: debianmemberportfolio/views.py:67
|
||||
msgid "lintian reports"
|
||||
msgstr "lintian-meldingen"
|
||||
|
||||
#: debianmemberportfolio/views.py:68
|
||||
msgid "full lintian reports (i.e. including \"info\"-level messages)"
|
||||
msgstr "volledige lintian-rapporten (bijv. inclusief \"info\"-niveauberichten)"
|
||||
|
||||
#: debianmemberportfolio/views.py:70
|
||||
msgid "piuparts"
|
||||
msgstr "piuparts"
|
||||
|
||||
#: debianmemberportfolio/views.py:71
|
||||
msgid "Debian patch tracking system"
|
||||
msgstr "Debian-patchtrackingsysteem"
|
||||
|
||||
#: debianmemberportfolio/views.py:72
|
||||
msgid "Debian Url ChecKer"
|
||||
msgstr "Debian URL-controleerder"
|
||||
|
||||
#: debianmemberportfolio/views.py:75
|
||||
msgid "Mailing Lists"
|
||||
msgstr "Mailinglijsten"
|
||||
|
||||
#: debianmemberportfolio/views.py:76
|
||||
msgid "lists.d.o"
|
||||
msgstr "lists.d.o"
|
||||
|
||||
#: debianmemberportfolio/views.py:77
|
||||
msgid "lists.a.d.o"
|
||||
msgstr "lists.a.d.o"
|
||||
|
||||
#: debianmemberportfolio/views.py:78
|
||||
msgid "gmane"
|
||||
msgstr "gmane"
|
||||
|
||||
#: debianmemberportfolio/views.py:81
|
||||
msgid "Files"
|
||||
msgstr "Bestanden"
|
||||
|
||||
#: debianmemberportfolio/views.py:82
|
||||
msgid "people.d.o"
|
||||
msgstr "people.d.o"
|
||||
|
||||
#: debianmemberportfolio/views.py:83
|
||||
msgid "oldpeople"
|
||||
msgstr "oudemensen"
|
||||
|
||||
#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:92
|
||||
msgid "Alioth"
|
||||
msgstr "Alioth"
|
||||
|
||||
#: debianmemberportfolio/views.py:87
|
||||
msgid "Membership"
|
||||
msgstr "Lidmaatschap"
|
||||
|
||||
#: debianmemberportfolio/views.py:88
|
||||
msgid "NM"
|
||||
msgstr "NM"
|
||||
|
||||
#: debianmemberportfolio/views.py:89
|
||||
msgid "DB information via finger"
|
||||
msgstr "DB-informatie via finger"
|
||||
|
||||
#: debianmemberportfolio/views.py:90
|
||||
msgid "DB information via HTTP"
|
||||
msgstr "DB-informatie over HTTP"
|
||||
|
||||
#: debianmemberportfolio/views.py:91
|
||||
msgid "FOAF profile"
|
||||
msgstr "FOAF-profiel"
|
||||
|
||||
#: debianmemberportfolio/views.py:93
|
||||
msgid "Wiki"
|
||||
msgstr "Wiki"
|
||||
|
||||
#: debianmemberportfolio/views.py:94
|
||||
msgid "Forum"
|
||||
msgstr "Forum"
|
||||
|
||||
#: debianmemberportfolio/views.py:97
|
||||
msgid "Miscellaneous"
|
||||
msgstr "Diversen"
|
||||
|
||||
#: debianmemberportfolio/views.py:98
|
||||
msgid "debtags"
|
||||
msgstr "deblabels"
|
||||
|
||||
#: debianmemberportfolio/views.py:99
|
||||
msgid "Planet Debian (name)"
|
||||
msgstr "Planet Debian (naam)"
|
||||
|
||||
#: debianmemberportfolio/views.py:100
|
||||
msgid "Planet Debian (username)"
|
||||
msgstr "Planet Debian (gebruikersnaam)"
|
||||
|
||||
#: debianmemberportfolio/views.py:101
|
||||
msgid "links"
|
||||
msgstr "links"
|
||||
|
||||
#: debianmemberportfolio/views.py:102
|
||||
msgid "Debian website"
|
||||
msgstr "Debian-website"
|
||||
|
||||
#: debianmemberportfolio/views.py:103
|
||||
msgid "Debian search"
|
||||
msgstr "Debian-zoeken"
|
||||
|
||||
#: debianmemberportfolio/views.py:104
|
||||
msgid "GPG public key via finger"
|
||||
msgstr "GPG openbare sleutel via finger"
|
||||
|
||||
#: debianmemberportfolio/views.py:105
|
||||
msgid "GPG public key via HTTP"
|
||||
msgstr "GPG openbare sleutel over HTTP"
|
||||
|
||||
#: debianmemberportfolio/views.py:106
|
||||
msgid "NM, AM participation"
|
||||
msgstr "NM, AM-deelname"
|
||||
|
||||
#: debianmemberportfolio/views.py:107
|
||||
msgid "Contribution information"
|
||||
msgstr "Bijdraaginformatie"
|
||||
|
||||
#: debianmemberportfolio/views.py:110
|
||||
msgid "Information reachable via ssh (for Debian Members)"
|
||||
msgstr "Informatie is bereikbaar over ssh (voor Debian-leden)"
|
||||
|
||||
#: debianmemberportfolio/views.py:111
|
||||
msgid "owned debian.net domains"
|
||||
msgstr "debian.net-domeinnamen in eigendom"
|
||||
|
||||
#: debianmemberportfolio/views.py:112
|
||||
msgid ""
|
||||
"<a href=\"https://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> "
|
||||
"database information"
|
||||
msgstr ""
|
||||
"<a href=\"https://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a"
|
||||
">-database-informatie"
|
||||
|
||||
#: debianmemberportfolio/views.py:114
|
||||
msgid "Group membership information"
|
||||
msgstr "Groepslidmaatschap-informatie"
|
||||
|
||||
#: debianmemberportfolio/views.py:117
|
||||
msgid "Ubuntu"
|
||||
msgstr "Ubuntu"
|
||||
|
||||
#: debianmemberportfolio/views.py:118
|
||||
msgid "Available patches from Ubuntu"
|
||||
msgstr "Beschikbare patches van Ubuntu"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:43
|
||||
msgid "Email address"
|
||||
msgstr "E-mailadres"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:44
|
||||
msgid "Name"
|
||||
msgstr "Naam"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:45
|
||||
msgid "GPG fingerprint"
|
||||
msgstr "GPG-vingerafdruk"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:46
|
||||
msgid "Debian user name"
|
||||
msgstr "Debian-gebruikersnaam"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:47
|
||||
msgid "Non Debian email address"
|
||||
msgstr "Geen Debian-e-mailadres"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:48
|
||||
msgid "Alioth user name"
|
||||
msgstr "Alioth-gebruikersnaam"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:109
|
||||
#: debianmemberportfolio/model/urlbuilder.py:113
|
||||
#, python-format
|
||||
msgid "Missing input: %s"
|
||||
msgstr "Ontbrekende invoer: %s"
|
||||
|
||||
#: debianmemberportfolio/templates/base.html:24
|
||||
#: debianmemberportfolio/templates/base.html:31
|
||||
msgid "Debian Member Portfolio Service"
|
||||
msgstr "Debian-ledenportfoliodienst"
|
||||
|
||||
#: debianmemberportfolio/templates/base.html:30
|
||||
msgid "Debian Logo"
|
||||
msgstr "Debian-logo"
|
||||
|
||||
#: debianmemberportfolio/templates/base.html:32
|
||||
msgid ""
|
||||
"This service has been inspired by Stefano Zacchiroli's <a "
|
||||
"href=\"https://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 ""
|
||||
"Deze dienst is geïnspireerd op Stefano Zacchiroli's <a "
|
||||
"href=\"https://wiki.debian.org/DDPortfolio\">DDPortfolio-pagina op de "
|
||||
"Debian-wiki</a>. U kunt een set aangepaste links creëren die leiden naar "
|
||||
"een Debian-lid of pakketbeheerder-informatie aangaande Debian."
|
||||
|
||||
#: debianmemberportfolio/templates/base.html:39
|
||||
msgid "AGPL - Free Software"
|
||||
msgstr "AGPL - Vrije software"
|
||||
|
||||
#: debianmemberportfolio/templates/base.html:40
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The service is available under the terms of the <a "
|
||||
"href=\"https://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=\"https://git-"
|
||||
"scm.com/\">git</a>. If you want to translate this service to your "
|
||||
"language you can contribute at <a href=\"%(weblateurl)s\" title=\"Debian "
|
||||
"Member Portfolio Service at Weblate\">Weblate</a>."
|
||||
msgstr ""
|
||||
"Deze dienst is beschikbaar onder de voorwaarden van de <a "
|
||||
"href=\"https://www.gnu.org/licenses/agpl.html\">GNU Affero General Public"
|
||||
" License</a>, zoals gepubliceerd door de Free Software Foundation, zowel "
|
||||
"versie 3, als (optioneel) een hogere versie. U kunt <a "
|
||||
"href=\"%(browseurl)s\" title=\"Gitweb repository browser URL\">door de "
|
||||
"broncode bladeren</a> of deze klonen <a href=\"%(cloneurl)s\" title=\"git"
|
||||
" clone URL\">%(cloneurl)s</a> m.b.v. <a href=\"http://git-"
|
||||
"scm.com/\">git</a>. Als u deze dienst wilt vertalen naar uw eigen taal, "
|
||||
"dan kunt u bijdragen op <a href=\"%(weblateurl)s\" title=\"Debian "
|
||||
"Member Portfolio Service at Weblate\">Weblate</a>."
|
||||
|
||||
#: debianmemberportfolio/templates/base.html:41
|
||||
msgid "Copyright © 2009-2017 Jan Dittberner"
|
||||
msgstr "Copyright © 2009-2017 Jan Dittberner"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:22
|
||||
msgid "Enter your personal information"
|
||||
msgstr "Voer uw persoonlijke informatie in"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:29
|
||||
msgid "Debian Member Portfolio"
|
||||
msgstr "Debian-lidportfolio"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:31
|
||||
msgid "Email address:"
|
||||
msgstr "E-mailadres:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:40
|
||||
msgid "Show all form fields"
|
||||
msgstr "Alle formuliervelden weergeven"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:43
|
||||
msgid "Name:"
|
||||
msgstr "Naam:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:50
|
||||
msgid "GPG fingerprint:"
|
||||
msgstr "GPG-vingerafdruk:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:57
|
||||
msgid "Debian user name:"
|
||||
msgstr "Debian-gebruikersnaam:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:64
|
||||
msgid "Non Debian email address:"
|
||||
msgstr "Geen Debian-e-mailadres:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:71
|
||||
msgid "Alioth user name:"
|
||||
msgstr "Alioth-gebruikersnaam:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:78
|
||||
msgid "Wiki user name:"
|
||||
msgstr "Wiki-gebruikersnaam:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:85
|
||||
msgid "Forum user id:"
|
||||
msgstr "Forum-gebruikersid:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:92
|
||||
msgid "Output format:"
|
||||
msgstr "Uitvoerformaat:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:99
|
||||
msgid "Build Debian Member Portfolio URLs"
|
||||
msgstr "Debian-ledenportfolio URL's bouwen"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:21
|
||||
msgid "Your personal links"
|
||||
msgstr "Uw persoonlijke links"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:25
|
||||
msgid "Debian Member Porfolio"
|
||||
msgstr "Debian-lidportfolio"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:28
|
||||
msgid "Usage"
|
||||
msgstr "Gebruik"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:28
|
||||
msgid "URL"
|
||||
msgstr "URL"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:38
|
||||
msgid "Error during URL creation:"
|
||||
msgstr "Er is een fout opgetreden tijdens de URL-creatie:"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:59
|
||||
msgid "Restart"
|
||||
msgstr "Herstarten"
|
||||
|
||||
#~ msgid ""
|
||||
#~ msgstr ""
|
||||
|
||||
#~ msgid "Copyright © 2009-2014 Jan Dittberner"
|
||||
#~ msgstr "Copyright © 2009-2014 Jan Dittberner"
|
||||
|
|
@ -9,9 +9,10 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Debian Member Portfolio Service\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2014-02-08 18:14+0100\n"
|
||||
"POT-Creation-Date: 2017-09-10 10:49+0200\n"
|
||||
"PO-Revision-Date: 2014-01-11 01:27+0100\n"
|
||||
"Last-Translator: Jan Dittberner <jan@dittberner.info>\n"
|
||||
"Language: pt_BR\n"
|
||||
"Language-Team: Portuguese (Brazil) "
|
||||
"(https://www.transifex.com/projects/p/debportfolioservice/language/pt_BR/)"
|
||||
"\n"
|
||||
|
@ -19,17 +20,25 @@ msgstr ""
|
|||
"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"
|
||||
"Generated-By: Babel 2.5.0\n"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:45
|
||||
#: debianmemberportfolio/forms.py:33
|
||||
msgid "JSON"
|
||||
msgstr "JSON"
|
||||
|
||||
#: debianmemberportfolio/forms.py:33
|
||||
msgid "HTML"
|
||||
msgstr "HTML"
|
||||
|
||||
#: debianmemberportfolio/views.py:40
|
||||
msgid "Overview"
|
||||
msgstr "Visão Geral"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:46
|
||||
#: debianmemberportfolio/views.py:41
|
||||
msgid "Debian Member's Package Overview"
|
||||
msgstr "Visão geral de Pacote de membros Debian"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:47
|
||||
#: debianmemberportfolio/views.py:42
|
||||
msgid ""
|
||||
"Debian Member's Package Overview\n"
|
||||
"... showing all email addresses"
|
||||
|
@ -37,11 +46,11 @@ msgstr ""
|
|||
"Visão geral de Pacote de membros Debian\n"
|
||||
"... mostrando todos os endereços de email"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:51
|
||||
#: debianmemberportfolio/views.py:46
|
||||
msgid "Bugs"
|
||||
msgstr "Bugs"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:52
|
||||
#: debianmemberportfolio/views.py:47
|
||||
msgid ""
|
||||
"bugs received\n"
|
||||
"(note: co-maintainers not listed, see <a href=\"https://bugs.debian.org"
|
||||
|
@ -52,247 +61,246 @@ msgstr ""
|
|||
"href=\"https://bugs.debian.org/cgi-"
|
||||
"bin/bugreport.cgi?bug=430986\">#430986</a>)"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:56
|
||||
#: debianmemberportfolio/views.py:51
|
||||
msgid "bugs reported"
|
||||
msgstr "Bugs reportados"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:57
|
||||
#: debianmemberportfolio/views.py:52
|
||||
msgid "user tags"
|
||||
msgstr "Tags de usuário"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:58
|
||||
#: debianmemberportfolio/views.py:53
|
||||
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)"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:60
|
||||
#: debianmemberportfolio/views.py:55
|
||||
msgid "<a href=\"https://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
msgstr "<a href=\"https://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:61
|
||||
#: debianmemberportfolio/views.py:56
|
||||
msgid "correspondent for bugs"
|
||||
msgstr "correspondente para bugs"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:62
|
||||
#: debianmemberportfolio/views.py:57
|
||||
msgid "one year open bug history graph"
|
||||
msgstr "Gráfico histórico de bug aberto há um ano "
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:65
|
||||
#: debianmemberportfolio/views.py:60
|
||||
msgid "Build"
|
||||
msgstr "Construção"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:66
|
||||
#: debianmemberportfolio/views.py:61
|
||||
msgid "buildd.d.o"
|
||||
msgstr "buildd.d.o"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:67
|
||||
#: debianmemberportfolio/views.py:62
|
||||
msgid "igloo"
|
||||
msgstr "Iglu"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:70
|
||||
#: debianmemberportfolio/views.py:65
|
||||
msgid "Quality Assurance"
|
||||
msgstr "Garantia de qualidade"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:71
|
||||
#: debianmemberportfolio/views.py:66
|
||||
msgid "maintainer dashboard"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:72
|
||||
#: debianmemberportfolio/views.py:67
|
||||
msgid "lintian reports"
|
||||
msgstr "relatórios lintian"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:73
|
||||
#: debianmemberportfolio/views.py:68
|
||||
msgid "full lintian reports (i.e. including \"info\"-level messages)"
|
||||
msgstr "relatórios lintian completos (Ex. incluíndo mensagens \"info\"-level)"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:75
|
||||
#: debianmemberportfolio/views.py:70
|
||||
msgid "piuparts"
|
||||
msgstr "piuparts"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:76
|
||||
#: debianmemberportfolio/views.py:71
|
||||
msgid "Debian patch tracking system"
|
||||
msgstr "Sistema de patch tracking Debian"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:77
|
||||
#: debianmemberportfolio/views.py:72
|
||||
msgid "Debian Url ChecKer"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:80
|
||||
#: debianmemberportfolio/views.py:75
|
||||
msgid "Mailing Lists"
|
||||
msgstr "Listas de discussão"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:81
|
||||
#: debianmemberportfolio/views.py:76
|
||||
msgid "lists.d.o"
|
||||
msgstr "lists.d.o"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:82
|
||||
#: debianmemberportfolio/views.py:77
|
||||
msgid "lists.a.d.o"
|
||||
msgstr "lists.a.d.o"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:83
|
||||
#: debianmemberportfolio/views.py:78
|
||||
msgid "gmane"
|
||||
msgstr "gmane"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:86
|
||||
#: debianmemberportfolio/views.py:81
|
||||
msgid "Files"
|
||||
msgstr "Arquivos"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:87
|
||||
#: debianmemberportfolio/views.py:82
|
||||
msgid "people.d.o"
|
||||
msgstr "people.d.o"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:88
|
||||
#: debianmemberportfolio/views.py:83
|
||||
msgid "oldpeople"
|
||||
msgstr "oldpeople"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:89
|
||||
#: debianmemberportfolio/controllers/portfolio.py:97
|
||||
#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:92
|
||||
msgid "Alioth"
|
||||
msgstr "Alioth"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:92
|
||||
#: debianmemberportfolio/views.py:87
|
||||
msgid "Membership"
|
||||
msgstr "Associação"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:93
|
||||
#: debianmemberportfolio/views.py:88
|
||||
msgid "NM"
|
||||
msgstr "NM"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:94
|
||||
#: debianmemberportfolio/views.py:89
|
||||
msgid "DB information via finger"
|
||||
msgstr "Infomações DB via finger"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:95
|
||||
#: debianmemberportfolio/views.py:90
|
||||
msgid "DB information via HTTP"
|
||||
msgstr "Informações DB via HTTP"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:96
|
||||
#: debianmemberportfolio/views.py:91
|
||||
msgid "FOAF profile"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:98
|
||||
#: debianmemberportfolio/views.py:93
|
||||
msgid "Wiki"
|
||||
msgstr "Wiki"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:99
|
||||
#: debianmemberportfolio/views.py:94
|
||||
msgid "Forum"
|
||||
msgstr "Fórum"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:102
|
||||
#: debianmemberportfolio/views.py:97
|
||||
msgid "Miscellaneous"
|
||||
msgstr "Miscelânea"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:103
|
||||
#: debianmemberportfolio/views.py:98
|
||||
msgid "debtags"
|
||||
msgstr "debtags"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:104
|
||||
#: debianmemberportfolio/views.py:99
|
||||
msgid "Planet Debian (name)"
|
||||
msgstr ""
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:105
|
||||
#: debianmemberportfolio/views.py:100
|
||||
#, fuzzy
|
||||
msgid "Planet Debian (username)"
|
||||
msgstr "Nome de usuário Debian"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:106
|
||||
#: debianmemberportfolio/views.py:101
|
||||
msgid "links"
|
||||
msgstr "links"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:107
|
||||
#: debianmemberportfolio/views.py:102
|
||||
msgid "Debian website"
|
||||
msgstr "Site do Debian"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:108
|
||||
#: debianmemberportfolio/views.py:103
|
||||
msgid "Debian search"
|
||||
msgstr "Pesquisa Debian"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:109
|
||||
#: debianmemberportfolio/views.py:104
|
||||
msgid "GPG public key via finger"
|
||||
msgstr "Chave pública GPG via finger"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:110
|
||||
#: debianmemberportfolio/views.py:105
|
||||
msgid "GPG public key via HTTP"
|
||||
msgstr "Chave pública GPG via HTTP"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:111
|
||||
#: debianmemberportfolio/views.py:106
|
||||
msgid "NM, AM participation"
|
||||
msgstr "Participação NM, AM"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:112
|
||||
#: debianmemberportfolio/views.py:107
|
||||
#, fuzzy
|
||||
msgid "Contribution information"
|
||||
msgstr "Insira suas informações pessoais"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:115
|
||||
#: debianmemberportfolio/views.py:110
|
||||
msgid "Information reachable via ssh (for Debian Members)"
|
||||
msgstr "Informação alcançável via ssh (para membros Debian)"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:116
|
||||
#: debianmemberportfolio/views.py:111
|
||||
msgid "owned debian.net domains"
|
||||
msgstr "domínios debian.net adquiridos"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:117
|
||||
#: debianmemberportfolio/views.py:112
|
||||
msgid ""
|
||||
"<a href=\"https://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> database"
|
||||
" information"
|
||||
"<a href=\"https://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> "
|
||||
"database information"
|
||||
msgstr ""
|
||||
"<a href=\"https://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> "
|
||||
"informações de banco de dados"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:119
|
||||
#: debianmemberportfolio/views.py:114
|
||||
msgid "Group membership information"
|
||||
msgstr "Informações de Grupos associados"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:122
|
||||
#: debianmemberportfolio/views.py:117
|
||||
msgid "Ubuntu"
|
||||
msgstr "Ubuntu"
|
||||
|
||||
#: debianmemberportfolio/controllers/portfolio.py:123
|
||||
#: debianmemberportfolio/views.py:118
|
||||
msgid "Available patches from Ubuntu"
|
||||
msgstr "Patches disponíveis para Ubuntu"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:40
|
||||
#: debianmemberportfolio/model/urlbuilder.py:43
|
||||
msgid "Email address"
|
||||
msgstr "Endereços de email"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:41
|
||||
#: debianmemberportfolio/model/urlbuilder.py:44
|
||||
msgid "Name"
|
||||
msgstr "Nome"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:42
|
||||
#: debianmemberportfolio/model/urlbuilder.py:45
|
||||
msgid "GPG fingerprint"
|
||||
msgstr "Fingerprint GPG"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:43
|
||||
#: debianmemberportfolio/model/urlbuilder.py:46
|
||||
msgid "Debian user name"
|
||||
msgstr "Nome de usuário Debian"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:44
|
||||
#: debianmemberportfolio/model/urlbuilder.py:47
|
||||
msgid "Non Debian email address"
|
||||
msgstr "Endereço de email não Debian"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:45
|
||||
#: debianmemberportfolio/model/urlbuilder.py:48
|
||||
msgid "Alioth user name"
|
||||
msgstr "Nome de usuário Alioth"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:97
|
||||
#: debianmemberportfolio/model/urlbuilder.py:101
|
||||
#: debianmemberportfolio/model/urlbuilder.py:109
|
||||
#: debianmemberportfolio/model/urlbuilder.py:113
|
||||
#, python-format
|
||||
msgid "Missing input: %s"
|
||||
msgstr "Entrada restante: %s"
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:25
|
||||
#: debianmemberportfolio/templates/base.mako:33
|
||||
#: debianmemberportfolio/templates/base.html:24
|
||||
#: debianmemberportfolio/templates/base.html:31
|
||||
msgid "Debian Member Portfolio Service"
|
||||
msgstr "Membro do Serviço de Portfolio Debian"
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:31
|
||||
#: debianmemberportfolio/templates/base.html:30
|
||||
msgid "Debian Logo"
|
||||
msgstr "Logo Debian"
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:34
|
||||
#: debianmemberportfolio/templates/base.html:32
|
||||
msgid ""
|
||||
"This service has been inspired by Stefano Zacchiroli's <a "
|
||||
"href=\"https://wiki.debian.org/DDPortfolio\">DDPortfolio page in the "
|
||||
|
@ -305,11 +313,11 @@ msgstr ""
|
|||
"para informações, ou de membro Debian, ou de mantenedor de pacotes a "
|
||||
"respeito de Debian."
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:41
|
||||
#: debianmemberportfolio/templates/base.html:39
|
||||
msgid "AGPL - Free Software"
|
||||
msgstr "AGPL - Sofware Livre"
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:43
|
||||
#: debianmemberportfolio/templates/base.html:40
|
||||
#, fuzzy, python-format
|
||||
msgid ""
|
||||
"The service is available under the terms of the <a "
|
||||
|
@ -318,10 +326,10 @@ msgid ""
|
|||
" 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-"
|
||||
"clone URL\">%(cloneurl)s</a> using <a href=\"https://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>."
|
||||
"language you can contribute at <a href=\"%(weblateurl)s\" title=\"Debian "
|
||||
"Member Portfolio Service at Weblate\">Weblate</a>."
|
||||
msgstr ""
|
||||
"O serviço está disponível sob os termos da <a "
|
||||
"href=\"https://www.gnu.org/licenses/agpl.html\">Licença Pública Geral "
|
||||
|
@ -332,88 +340,85 @@ msgstr ""
|
|||
"href=\"%(cloneurl)s\" title=\"git clone URL\">%(cloneurl)s</a> usando <a "
|
||||
"href=\"http://git-scm.com/\">git</a>."
|
||||
|
||||
#: debianmemberportfolio/templates/base.mako:44
|
||||
msgid "Copyright © 2009-2014 Jan Dittberner"
|
||||
#: debianmemberportfolio/templates/base.html:41
|
||||
#, fuzzy
|
||||
msgid "Copyright © 2009-2017 Jan Dittberner"
|
||||
msgstr "Direitos Autorais © 2009-2014 Jan Dittberner"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:24
|
||||
#: debianmemberportfolio/templates/showform.html:22
|
||||
msgid "Enter your personal information"
|
||||
msgstr "Insira suas informações pessoais"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:30
|
||||
#: debianmemberportfolio/templates/showurls.mako:27
|
||||
#: debianmemberportfolio/templates/showform.html:29
|
||||
msgid "Debian Member Portfolio"
|
||||
msgstr "Portfolio de Membro Debian"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:36
|
||||
#: debianmemberportfolio/templates/showform.html:31
|
||||
msgid "Email address:"
|
||||
msgstr "Endereço de email:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:47
|
||||
#: debianmemberportfolio/templates/showform.html:40
|
||||
msgid "Show all form fields"
|
||||
msgstr "Mostrar todos os campos"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:54
|
||||
#: debianmemberportfolio/templates/showform.html:43
|
||||
msgid "Name:"
|
||||
msgstr "Nome:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:64
|
||||
#: debianmemberportfolio/templates/showform.html:50
|
||||
msgid "GPG fingerprint:"
|
||||
msgstr "Fingerprint GPG:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:79
|
||||
#: debianmemberportfolio/templates/showform.html:57
|
||||
msgid "Debian user name:"
|
||||
msgstr "Nome de usuário Debian:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:94
|
||||
#: debianmemberportfolio/templates/showform.html:64
|
||||
msgid "Non Debian email address:"
|
||||
msgstr "Endereço de email não Debian:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:109
|
||||
#: debianmemberportfolio/templates/showform.html:71
|
||||
msgid "Alioth user name:"
|
||||
msgstr "Nome de usuário Alioth:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:125
|
||||
#: debianmemberportfolio/templates/showform.html:78
|
||||
msgid "Wiki user name:"
|
||||
msgstr "Nome de usuário Wiki:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:140
|
||||
#: debianmemberportfolio/templates/showform.html:85
|
||||
msgid "Forum user id:"
|
||||
msgstr "Id de usuário do fórum:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:151
|
||||
#: debianmemberportfolio/templates/showform.html:92
|
||||
msgid "Output format:"
|
||||
msgstr "Formato de saída:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:157
|
||||
msgid "HTML"
|
||||
msgstr "HTML"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:159
|
||||
msgid "JSON"
|
||||
msgstr "JSON"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.mako:161
|
||||
#: debianmemberportfolio/templates/showform.html:99
|
||||
msgid "Build Debian Member Portfolio URLs"
|
||||
msgstr "URLs de Portfolio de Membros Debian em Construção"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.mako:23
|
||||
#: debianmemberportfolio/templates/showurls.html:21
|
||||
msgid "Your personal links"
|
||||
msgstr "Seus links pessoais"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.mako:30
|
||||
#: debianmemberportfolio/templates/showurls.html:25
|
||||
#, fuzzy
|
||||
msgid "Debian Member Porfolio"
|
||||
msgstr "Portfolio de Membro Debian"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:28
|
||||
msgid "Usage"
|
||||
msgstr "MOdo de uso"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.mako:30
|
||||
#: debianmemberportfolio/templates/showurls.html:28
|
||||
msgid "URL"
|
||||
msgstr "URL"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.mako:40
|
||||
#: debianmemberportfolio/templates/showurls.html:38
|
||||
msgid "Error during URL creation:"
|
||||
msgstr "Erro durante criação de URL:"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.mako:67
|
||||
#: debianmemberportfolio/templates/showurls.html:59
|
||||
msgid "Restart"
|
||||
msgstr "Reiniciar"
|
||||
|
413
debianmemberportfolio/translations/zh_CN/LC_MESSAGES/messages.po
Normal file
413
debianmemberportfolio/translations/zh_CN/LC_MESSAGES/messages.po
Normal file
|
@ -0,0 +1,413 @@
|
|||
# German translations for the Debian Member Portfolio Service.
|
||||
# Copyright (C) 2009-2014 Jan Dittberner
|
||||
# This file is distributed under the same license as the Debian Member
|
||||
# Portfolio Service project.
|
||||
# Translators:
|
||||
# Jan Dittberner <jan@dittberner.info>, 2009-2014
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n"
|
||||
"Report-Msgid-Bugs-To: jan@dittberner.info\n"
|
||||
"POT-Creation-Date: 2017-09-10 10:49+0200\n"
|
||||
"PO-Revision-Date: 2016-08-18 03:24+0000\n"
|
||||
"Last-Translator: chimez <chimez@163.com>\n"
|
||||
"Language: zh_Hans_CN\n"
|
||||
"Language-Team: Chinese (China) <https://hosted.weblate.org/projects"
|
||||
"/debian-member-portfolio-service/translations/zh_CN/>\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"
|
||||
"X-Generator: Weblate 2.13-dev\n"
|
||||
"Generated-By: Babel 2.5.0\n"
|
||||
|
||||
#: debianmemberportfolio/forms.py:33
|
||||
msgid "JSON"
|
||||
msgstr "JSON"
|
||||
|
||||
#: debianmemberportfolio/forms.py:33
|
||||
msgid "HTML"
|
||||
msgstr "HTML"
|
||||
|
||||
#: debianmemberportfolio/views.py:40
|
||||
msgid "Overview"
|
||||
msgstr "概述"
|
||||
|
||||
#: debianmemberportfolio/views.py:41
|
||||
msgid "Debian Member's Package Overview"
|
||||
msgstr "Debian 成员的软件包概览"
|
||||
|
||||
#: debianmemberportfolio/views.py:42
|
||||
msgid ""
|
||||
"Debian Member's Package Overview\n"
|
||||
"... showing all email addresses"
|
||||
msgstr ""
|
||||
"Debian 成员的软件包概览\n"
|
||||
"... 显示所有邮件地址"
|
||||
|
||||
#: debianmemberportfolio/views.py:46
|
||||
msgid "Bugs"
|
||||
msgstr "缺陷"
|
||||
|
||||
#: debianmemberportfolio/views.py:47
|
||||
msgid ""
|
||||
"bugs received\n"
|
||||
"(note: co-maintainers not listed, see <a href=\"https://bugs.debian.org"
|
||||
"/cgi-bin/bugreport.cgi?bug=430986\">#430986</a>)"
|
||||
msgstr ""
|
||||
"bugs 接收\n"
|
||||
"(注意: 合作维护者未列入, 详见 <a href=\"https://bugs.debian.org/cgi-"
|
||||
"bin/bugreport.cgi?bug=430986\">#430986</a>)"
|
||||
|
||||
#: debianmemberportfolio/views.py:51
|
||||
msgid "bugs reported"
|
||||
msgstr "bugs 报告"
|
||||
|
||||
#: debianmemberportfolio/views.py:52
|
||||
msgid "user tags"
|
||||
msgstr "用户标签"
|
||||
|
||||
#: debianmemberportfolio/views.py:53
|
||||
msgid "all messages (i.e., full text search for developer name on all bug logs)"
|
||||
msgstr "所有信息 (即,开发者名下所有缺陷日志的全文搜索)"
|
||||
|
||||
#: debianmemberportfolio/views.py:55
|
||||
msgid "<a href=\"https://wiki.debian.org/WNPP\">WNPP</a>"
|
||||
msgstr "<a href=\"https://wiki.debian.org/WNPP\">需要支持的和未来应有的包(WNPP)</a>"
|
||||
|
||||
#: debianmemberportfolio/views.py:56
|
||||
msgid "correspondent for bugs"
|
||||
msgstr "bug的通信者"
|
||||
|
||||
#: debianmemberportfolio/views.py:57
|
||||
msgid "one year open bug history graph"
|
||||
msgstr "一年处理Bug历史图表"
|
||||
|
||||
#: debianmemberportfolio/views.py:60
|
||||
msgid "Build"
|
||||
msgstr "构建"
|
||||
|
||||
#: debianmemberportfolio/views.py:61
|
||||
msgid "buildd.d.o"
|
||||
msgstr "buildd.d.o"
|
||||
|
||||
#: debianmemberportfolio/views.py:62
|
||||
msgid "igloo"
|
||||
msgstr "冰屋(igloo)"
|
||||
|
||||
#: debianmemberportfolio/views.py:65
|
||||
msgid "Quality Assurance"
|
||||
msgstr "质量保证"
|
||||
|
||||
#: debianmemberportfolio/views.py:66
|
||||
msgid "maintainer dashboard"
|
||||
msgstr "维护者面板"
|
||||
|
||||
#: debianmemberportfolio/views.py:67
|
||||
msgid "lintian reports"
|
||||
msgstr "Lintian报告"
|
||||
|
||||
#: debianmemberportfolio/views.py:68
|
||||
msgid "full lintian reports (i.e. including \"info\"-level messages)"
|
||||
msgstr "全部Lintian报告(即包括\"info\"级信息)"
|
||||
|
||||
#: debianmemberportfolio/views.py:70
|
||||
msgid "piuparts"
|
||||
msgstr "piuparts"
|
||||
|
||||
#: debianmemberportfolio/views.py:71
|
||||
msgid "Debian patch tracking system"
|
||||
msgstr "Debian补丁追踪系统(Debian patch tracking system)"
|
||||
|
||||
#: debianmemberportfolio/views.py:72
|
||||
msgid "Debian Url ChecKer"
|
||||
msgstr "Debian链接检查器(Debian Url Checker)"
|
||||
|
||||
#: debianmemberportfolio/views.py:75
|
||||
msgid "Mailing Lists"
|
||||
msgstr "邮件列表"
|
||||
|
||||
#: debianmemberportfolio/views.py:76
|
||||
msgid "lists.d.o"
|
||||
msgstr "lists.d.o"
|
||||
|
||||
#: debianmemberportfolio/views.py:77
|
||||
msgid "lists.a.d.o"
|
||||
msgstr "lists.a.d.o"
|
||||
|
||||
#: debianmemberportfolio/views.py:78
|
||||
msgid "gmane"
|
||||
msgstr "gmane"
|
||||
|
||||
#: debianmemberportfolio/views.py:81
|
||||
msgid "Files"
|
||||
msgstr "文件"
|
||||
|
||||
#: debianmemberportfolio/views.py:82
|
||||
msgid "people.d.o"
|
||||
msgstr "people.d.o"
|
||||
|
||||
#: debianmemberportfolio/views.py:83
|
||||
msgid "oldpeople"
|
||||
msgstr "老人"
|
||||
|
||||
#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:92
|
||||
msgid "Alioth"
|
||||
msgstr "北斗五(Alioth)"
|
||||
|
||||
#: debianmemberportfolio/views.py:87
|
||||
msgid "Membership"
|
||||
msgstr "成员关系"
|
||||
|
||||
#: debianmemberportfolio/views.py:88
|
||||
msgid "NM"
|
||||
msgstr "NM"
|
||||
|
||||
#: debianmemberportfolio/views.py:89
|
||||
msgid "DB information via finger"
|
||||
msgstr "DB信息,通过finger"
|
||||
|
||||
#: debianmemberportfolio/views.py:90
|
||||
msgid "DB information via HTTP"
|
||||
msgstr "DB信息,通过HTTP"
|
||||
|
||||
#: debianmemberportfolio/views.py:91
|
||||
msgid "FOAF profile"
|
||||
msgstr "FOAF档案"
|
||||
|
||||
#: debianmemberportfolio/views.py:93
|
||||
msgid "Wiki"
|
||||
msgstr "Wiki"
|
||||
|
||||
#: debianmemberportfolio/views.py:94
|
||||
msgid "Forum"
|
||||
msgstr "论坛"
|
||||
|
||||
#: debianmemberportfolio/views.py:97
|
||||
msgid "Miscellaneous"
|
||||
msgstr "杂项"
|
||||
|
||||
#: debianmemberportfolio/views.py:98
|
||||
msgid "debtags"
|
||||
msgstr "包标签"
|
||||
|
||||
#: debianmemberportfolio/views.py:99
|
||||
msgid "Planet Debian (name)"
|
||||
msgstr "Planet Debian (名字)"
|
||||
|
||||
#: debianmemberportfolio/views.py:100
|
||||
msgid "Planet Debian (username)"
|
||||
msgstr "Planet Debian (用户名)"
|
||||
|
||||
#: debianmemberportfolio/views.py:101
|
||||
msgid "links"
|
||||
msgstr "链接"
|
||||
|
||||
#: debianmemberportfolio/views.py:102
|
||||
msgid "Debian website"
|
||||
msgstr "Debian网站"
|
||||
|
||||
#: debianmemberportfolio/views.py:103
|
||||
msgid "Debian search"
|
||||
msgstr "Debian搜索"
|
||||
|
||||
#: debianmemberportfolio/views.py:104
|
||||
msgid "GPG public key via finger"
|
||||
msgstr "GPG公钥,通过finger"
|
||||
|
||||
#: debianmemberportfolio/views.py:105
|
||||
msgid "GPG public key via HTTP"
|
||||
msgstr "GPG公钥,通过HTTP"
|
||||
|
||||
#: debianmemberportfolio/views.py:106
|
||||
msgid "NM, AM participation"
|
||||
msgstr "NM, AM 参加"
|
||||
|
||||
#: debianmemberportfolio/views.py:107
|
||||
msgid "Contribution information"
|
||||
msgstr "贡献信息"
|
||||
|
||||
#: debianmemberportfolio/views.py:110
|
||||
msgid "Information reachable via ssh (for Debian Members)"
|
||||
msgstr "信息可获取,通过ssh(DM专用)"
|
||||
|
||||
#: debianmemberportfolio/views.py:111
|
||||
msgid "owned debian.net domains"
|
||||
msgstr "拥有 debian.net 领域"
|
||||
|
||||
#: debianmemberportfolio/views.py:112
|
||||
msgid ""
|
||||
"<a href=\"https://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> "
|
||||
"database information"
|
||||
msgstr "<a href=\"https://wiki.debian.org/qa.debian.org/MIATeam\">MIA</a> 数据库信息"
|
||||
|
||||
#: debianmemberportfolio/views.py:114
|
||||
msgid "Group membership information"
|
||||
msgstr "群组会员信息"
|
||||
|
||||
#: debianmemberportfolio/views.py:117
|
||||
msgid "Ubuntu"
|
||||
msgstr "Ubuntu"
|
||||
|
||||
#: debianmemberportfolio/views.py:118
|
||||
msgid "Available patches from Ubuntu"
|
||||
msgstr "来自Ubuntu的可用补丁"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:43
|
||||
msgid "Email address"
|
||||
msgstr "邮件地址"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:44
|
||||
msgid "Name"
|
||||
msgstr "姓名"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:45
|
||||
msgid "GPG fingerprint"
|
||||
msgstr "GPG指纹"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:46
|
||||
msgid "Debian user name"
|
||||
msgstr "Debian用户名"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:47
|
||||
msgid "Non Debian email address"
|
||||
msgstr "非Debian邮件地址"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:48
|
||||
msgid "Alioth user name"
|
||||
msgstr "Alioth用户名"
|
||||
|
||||
#: debianmemberportfolio/model/urlbuilder.py:109
|
||||
#: debianmemberportfolio/model/urlbuilder.py:113
|
||||
#, python-format
|
||||
msgid "Missing input: %s"
|
||||
msgstr "缺少输入: %s"
|
||||
|
||||
#: debianmemberportfolio/templates/base.html:24
|
||||
#: debianmemberportfolio/templates/base.html:31
|
||||
msgid "Debian Member Portfolio Service"
|
||||
msgstr "Debian Member Portfolio 服务"
|
||||
|
||||
#: debianmemberportfolio/templates/base.html:30
|
||||
msgid "Debian Logo"
|
||||
msgstr "Debian Logo"
|
||||
|
||||
#: debianmemberportfolio/templates/base.html:32
|
||||
msgid ""
|
||||
"This service has been inspired by Stefano Zacchiroli's <a "
|
||||
"href=\"https://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 ""
|
||||
"这个服务由 Stefano Zacchiroli的 <a "
|
||||
"href=\"https://wiki.debian.org/DDPortfolio\">DDPortfolio 的 Debian "
|
||||
"Wiki页面</a> 得到灵感. 你可以创建一个指向 Debian Member 的或包维护者的关于Debian的信息的定制链接集合."
|
||||
|
||||
#: debianmemberportfolio/templates/base.html:39
|
||||
msgid "AGPL - Free Software"
|
||||
msgstr "AGPL - 自由软件"
|
||||
|
||||
#: debianmemberportfolio/templates/base.html:40
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The service is available under the terms of the <a "
|
||||
"href=\"https://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=\"https://git-"
|
||||
"scm.com/\">git</a>. If you want to translate this service to your "
|
||||
"language you can contribute at <a href=\"%(weblateurl)s\" title=\"Debian "
|
||||
"Member Portfolio Service at Weblate\">Weblate</a>."
|
||||
msgstr ""
|
||||
"这个服务在由自由软件基金会(FSF)发布的 <a "
|
||||
"href=\"https://www.gnu.org/licenses/agpl.html\">GNU Affero General Public"
|
||||
" License</a> 第三版或(可选)更高版本协议下可用 你可以点击 <a href=\"%(browseurl)s\" "
|
||||
"title=\"Gitweb repository browser URL\">查看源代码</a> 或从 <a "
|
||||
"href=\"%(cloneurl)s\" title=\"git clone URL\">%(cloneurl)s</a> 使用 <a "
|
||||
"href=\"http://git-scm.com/\">git</a> clone . 如果你想翻译这个服务到你的语言 你可以在这里投稿 <a "
|
||||
"href=\"%(weblateurl)s\" title=\"Debian Member Portfolio Service at "
|
||||
"Weblate\">Weblate</a>."
|
||||
|
||||
#: debianmemberportfolio/templates/base.html:41
|
||||
msgid "Copyright © 2009-2017 Jan Dittberner"
|
||||
msgstr "Copyright © 2009-2017 Jan Dittberner"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:22
|
||||
msgid "Enter your personal information"
|
||||
msgstr "输入你的个人信息"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:29
|
||||
msgid "Debian Member Portfolio"
|
||||
msgstr "Debian Member Portfolio"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:31
|
||||
msgid "Email address:"
|
||||
msgstr "邮件地址:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:40
|
||||
msgid "Show all form fields"
|
||||
msgstr "显示所有字段"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:43
|
||||
msgid "Name:"
|
||||
msgstr "姓名:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:50
|
||||
msgid "GPG fingerprint:"
|
||||
msgstr "GPG指纹:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:57
|
||||
msgid "Debian user name:"
|
||||
msgstr "Debian用户名:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:64
|
||||
msgid "Non Debian email address:"
|
||||
msgstr "非Debian邮件地址:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:71
|
||||
msgid "Alioth user name:"
|
||||
msgstr "Alioth用户名:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:78
|
||||
msgid "Wiki user name:"
|
||||
msgstr "Wiki用户名:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:85
|
||||
msgid "Forum user id:"
|
||||
msgstr "论坛用户id:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:92
|
||||
msgid "Output format:"
|
||||
msgstr "输出格式:"
|
||||
|
||||
#: debianmemberportfolio/templates/showform.html:99
|
||||
msgid "Build Debian Member Portfolio URLs"
|
||||
msgstr "构建Debian Member Prortfolio链接"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:21
|
||||
msgid "Your personal links"
|
||||
msgstr "你的个人链接"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:25
|
||||
#, fuzzy
|
||||
msgid "Debian Member Porfolio"
|
||||
msgstr "Debian Member Porfolio"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:28
|
||||
msgid "Usage"
|
||||
msgstr "使用"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:28
|
||||
msgid "URL"
|
||||
msgstr "URL"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:38
|
||||
msgid "Error during URL creation:"
|
||||
msgstr "在 URL 创建过程中的错误:"
|
||||
|
||||
#: debianmemberportfolio/templates/showurls.html:59
|
||||
msgid "Restart"
|
||||
msgstr "重启"
|
||||
|
219
debianmemberportfolio/views.py
Normal file
219
debianmemberportfolio/views.py
Normal file
|
@ -0,0 +1,219 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service views
|
||||
#
|
||||
# Copyright © 2015 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 <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
import json
|
||||
import logging
|
||||
|
||||
from debianmemberportfolio import app, babel
|
||||
from flask import g, make_response, request, render_template, abort
|
||||
# noinspection PyPep8Naming
|
||||
from flask_babel import lazy_gettext as N_
|
||||
from config import LANGUAGES
|
||||
from .forms import DeveloperData, DeveloperDataRequest
|
||||
from .model import dddatabuilder
|
||||
from .model.urlbuilder import build_urls
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
#: This dictionary defines groups of labeled portfolio items.
|
||||
_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="https://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="https://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="https://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'),
|
||||
},
|
||||
}
|
||||
|
||||
#: list of field name tuples for Debian Maintainers
|
||||
DM_TUPLES = (('name', 'name'),
|
||||
('gpgfp', 'gpgfp'),
|
||||
('nonddemail', 'email'))
|
||||
|
||||
#: list of field name tuples for Debian Developers
|
||||
DD_TUPLES = (('username', 'username'),
|
||||
('aliothusername', 'username'))
|
||||
|
||||
|
||||
def _get_label(section, url=None):
|
||||
if section in _LABELS:
|
||||
if url:
|
||||
if url in _LABELS[section]:
|
||||
return _LABELS[section][url]
|
||||
elif 'label' in _LABELS[section]:
|
||||
return _LABELS[section]['label']
|
||||
if url:
|
||||
return "%s.%s" % (section, url)
|
||||
return section
|
||||
|
||||
|
||||
@babel.localeselector
|
||||
def get_locale():
|
||||
return request.accept_languages.best_match(LANGUAGES.keys())
|
||||
|
||||
|
||||
@app.before_request
|
||||
def before_request():
|
||||
g.locale = get_locale()
|
||||
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
form = DeveloperData()
|
||||
return render_template('showform.html', form=form)
|
||||
|
||||
|
||||
@app.route('/result')
|
||||
def urllist():
|
||||
form = DeveloperData(request.values)
|
||||
if form.validate():
|
||||
fields = dddatabuilder.build_data(form.data['email'])
|
||||
rp = request.values
|
||||
|
||||
if fields['type'] in (dddatabuilder.TYPE_DD, dddatabuilder.TYPE_DM):
|
||||
for dmtuple in DM_TUPLES:
|
||||
if not dmtuple[0] in rp or not rp[dmtuple[0]]:
|
||||
rp[dmtuple[0]] = fields[dmtuple[1]]
|
||||
if fields['type'] == dddatabuilder.TYPE_DD:
|
||||
for ddtuple in DD_TUPLES:
|
||||
if not ddtuple[0] in rp or not rp[ddtuple[0]]:
|
||||
rp[ddtuple[0]] = fields[ddtuple[1]]
|
||||
if form.data['wikihomepage'] is None:
|
||||
log.debug('generate wikihomepage from name')
|
||||
form.data['wikihomepage'] = "".join([
|
||||
part.capitalize() for part in form.data['name'].split()
|
||||
])
|
||||
|
||||
data = build_urls(form.data)
|
||||
|
||||
if form.data['mode'] == 'json':
|
||||
response = make_response(json.dumps(dict(
|
||||
[("{}.{}".format(entry[1], entry[2].name), entry[3])
|
||||
for entry in data if entry[0] == 'url'])))
|
||||
response.headers['Content-Type'] = 'application/json'
|
||||
return response
|
||||
|
||||
for entry in data:
|
||||
if entry[0] in ('url', 'error'):
|
||||
entry.append(_get_label(entry[1], entry[2].name))
|
||||
elif entry[0] == 'section':
|
||||
entry.append(_get_label(entry[1]))
|
||||
|
||||
return render_template('showurls.html', urldata=data)
|
||||
return render_template('showform.html', form=form)
|
||||
|
||||
|
||||
@app.route('/htmlformhelper.js')
|
||||
def formhelper_js():
|
||||
response = make_response(render_template('showformscript.js'))
|
||||
response.headers['Content-Type'] = 'text/javascript; charset=utf-8'
|
||||
return response
|
||||
|
||||
|
||||
@app.route('/showformscripts/fetchdddata/')
|
||||
def fetchdddata():
|
||||
form = DeveloperDataRequest(request.values)
|
||||
if form.validate():
|
||||
fields = dddatabuilder.build_data(form.data['email'])
|
||||
log.debug(fields)
|
||||
response = make_response(json.dumps(fields))
|
||||
response.headers['Content-Type'] = 'application/json'
|
||||
return response
|
||||
abort(
|
||||
400,
|
||||
"\n".join(["%s: %s" % (key, form.errors[key]) for key in form.errors])
|
||||
)
|
|
@ -1,46 +0,0 @@
|
|||
# -*- python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service websetup
|
||||
#
|
||||
# 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 <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""
|
||||
Setup the debianmemberportfolio application
|
||||
|
||||
"""
|
||||
|
||||
import logging
|
||||
|
||||
from paste.deploy import appconfig
|
||||
import pylons.test
|
||||
|
||||
from debianmemberportfolio.config.environment import load_environment
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def setup_config(command, filename, section, vars):
|
||||
"""
|
||||
Place any commands to setup debianmemberportfolio here
|
||||
|
||||
"""
|
||||
conf = appconfig('config:' + filename)
|
||||
|
||||
if not pylons.test.pylonsapp:
|
||||
load_environment(conf.global_conf, conf.local_conf)
|
|
@ -1,73 +0,0 @@
|
|||
#
|
||||
# Debian Member Portfolio Service - Pylons development environment
|
||||
# configuration
|
||||
#
|
||||
# The %(here)s variable will be replaced with the parent directory of this file
|
||||
#
|
||||
[DEFAULT]
|
||||
debug = true
|
||||
# Uncomment and replace with the address which should receive any error reports
|
||||
#email_to = you@yourdomain.com
|
||||
smtp_server = localhost
|
||||
error_email_from = paste@localhost
|
||||
|
||||
[server:main]
|
||||
use = egg:Paste#http
|
||||
host = 127.0.0.1
|
||||
port = 5000
|
||||
|
||||
[app:main]
|
||||
use = egg:debianmemberportfolio
|
||||
full_stack = true
|
||||
static_files = true
|
||||
|
||||
cache_dir = %(here)s/data
|
||||
beaker.session.key = debianmemberportfolio
|
||||
beaker.session.secret = somesecret
|
||||
|
||||
# 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, routes, debianmemberportfolio
|
||||
|
||||
[handlers]
|
||||
keys = console
|
||||
|
||||
[formatters]
|
||||
keys = generic
|
||||
|
||||
[logger_root]
|
||||
level = INFO
|
||||
handlers = console
|
||||
|
||||
[logger_routes]
|
||||
level = INFO
|
||||
handlers =
|
||||
qualname = routes.middleware
|
||||
# "level = DEBUG" logs the route matched and routing variables.
|
||||
|
||||
[logger_debianmemberportfolio]
|
||||
level = DEBUG
|
||||
handlers =
|
||||
qualname = debianmemberportfolio
|
||||
|
||||
[handler_console]
|
||||
class = StreamHandler
|
||||
args = (sys.stderr,)
|
||||
level = NOTSET
|
||||
formatter = generic
|
||||
|
||||
[formatter_generic]
|
||||
format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] [%(threadName)s] %(message)s
|
||||
datefmt = %H:%M:%S
|
|
@ -1,16 +1,15 @@
|
|||
Development of Debian Member Portfolio Service
|
||||
==============================================
|
||||
|
||||
The Debian Member Portfolio Service is implemented in `Python
|
||||
<https://www.python.org>`_ using the `Pylons
|
||||
<https://pylons.readthedocs.org/en/latest/>`_ web application
|
||||
framework.
|
||||
The Debian Member Portfolio Service is implemented in `Python 3
|
||||
<https://www.python.org>`_ using the `Flask <http://flask.pocoo.org/>`_ web
|
||||
application framework.
|
||||
|
||||
The following sections describe how to setup a local development environment
|
||||
for the Debian Member Portfolio Service.
|
||||
|
||||
All instructions assume that you work on a Debian system. You should use Python
|
||||
2.7 for development.
|
||||
3 for development.
|
||||
|
||||
Setup of a local development
|
||||
----------------------------
|
||||
|
@ -22,53 +21,48 @@ To start working on the source code you need to have `git`_ installed::
|
|||
.. _git: http://www.git-scm.com/
|
||||
|
||||
The canonical git repository for the Debian Member Portfolio Service is
|
||||
available at http://debianstuff.dittberner.info/git/debianmemberportfolio.git.
|
||||
available at https://debianstuff.dittberner.info/git/debianmemberportfolio.git.
|
||||
To get a clone of the source code you change to a directory of your choice and
|
||||
invoke git clone::
|
||||
|
||||
cd ~/src
|
||||
git clone http://debianstuff.dittberner.info/git/debianmemberportfolio.git
|
||||
git clone https://debianstuff.dittberner.info/git/debianmemberportfolio.git
|
||||
|
||||
You should use `virtualenv`_ to separate the development environment from your
|
||||
You should use `venv`_ to separate the development environment from your
|
||||
system wide Python installation. You can install virtualenv using::
|
||||
|
||||
sudo aptitude install python-virtualenv
|
||||
sudo aptitude install python3-venv
|
||||
|
||||
.. _virtualenv: https://pypi.python.org/pypi/virtualenv
|
||||
.. _venv: https://docs.python.org/3/library/venv.html
|
||||
|
||||
When you have :command:`virtualenv` installed you should create a virtual
|
||||
When you have :command:`pyvenv` installed you should create a virtual
|
||||
environment for Debian Member Portfolio Service development and install the
|
||||
requirements using `pip <https://pypi.python.org/pypi/pip>`_::
|
||||
|
||||
mkdir ~/.virtualenvs
|
||||
virtualenv --distribute ~/.virtualenvs/dmportfolio
|
||||
pyvenv ~/.virtualenvs/dmportfolio
|
||||
. ~/.virtualenvs/dmportfolio/bin/activate
|
||||
cd ~/src/debianmemberportfolio
|
||||
pip install -r jessiereq.pip
|
||||
pip install -r stretchreq.pip
|
||||
|
||||
.. note::
|
||||
|
||||
The Debian Member Portfolio Service instance at http://portfolio.debian.net/
|
||||
is running on a Debian Jessie server, therefore :file:`jessiereq.pip`
|
||||
is running on a Debian Stretch server, therefore :file:`stretchreq.pip`
|
||||
contains dependency versions matching that Debian release.
|
||||
|
||||
The dependency download and installation into the virtual environment takes
|
||||
some time.
|
||||
|
||||
After you have your virtual environment ready you need to setup the project for
|
||||
development::
|
||||
|
||||
python setup.py develop
|
||||
|
||||
Debian Member Portfolio Service needs the JQuery JavaScript library to function
|
||||
properly. The JQuery library is not included in the git clone and must be
|
||||
copied into the subdirectory
|
||||
:file:`debianmemberportfolio/public/javascript/jquery`. On Debian systems you
|
||||
:file:`debianmemberportfolio/static/javascript/jquery`. On Debian systems you
|
||||
can install the package libjs-jquery and place a symlink to the directory
|
||||
:file:`/usr/share/javascript` into :file:`debianmemberportfolio/public`: ::
|
||||
:file:`/usr/share/javascript` into :file:`debianmemberportfolio/static`: ::
|
||||
|
||||
sudo aptitude install libjs-jquery
|
||||
ln -s /usr/share/javascript debianmemberportfolio/public
|
||||
ln -s /usr/share/javascript debianmemberportfolio/static
|
||||
|
||||
Prepare for first startup
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
@ -93,21 +87,19 @@ When you have both installed you can run::
|
|||
The first synchronizes the keyrings in :file:`$HOME/debian/keyring.debian.org`
|
||||
with files on the `keyring.debian.org <http://keyring.debian.org>`_ host. And
|
||||
the second generates a key/value database in
|
||||
:file:`debianmemberportfolio/model/keyringcache` that is used by the code.
|
||||
:file:`debianmemberportfolio/model/keyringcache.db` that is used by the code.
|
||||
|
||||
Run a development server
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Pylons uses PasteScript to run a development server. You can run a development
|
||||
server using::
|
||||
You can run a development server using::
|
||||
|
||||
paster serve --reload development.ini
|
||||
python3 run.py
|
||||
|
||||
The output of this command should look like the following::
|
||||
|
||||
Starting subprocess with file monitor
|
||||
Starting server in PID 31377.
|
||||
serving on http://127.0.0.1:5000
|
||||
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
|
||||
* Restarting with stat
|
||||
|
||||
You can now access your development server at the URL that is printed by the command.
|
||||
|
||||
|
@ -122,21 +114,17 @@ Add new URL
|
|||
Debian Member Portfolio Service uses a ini style configuration file
|
||||
:file:`debianmemberportfolio/model/portfolio.ini` to configure the generated URL
|
||||
patterns. The actual URL generation is done in
|
||||
:py:class:`~debianmemberportfolio.controllers.portfolio.DdportfolioController`
|
||||
in the
|
||||
:py:meth:`~debianmemberportfolio.controllers.portfolio.DdportfolioController.urllist`
|
||||
method.
|
||||
:py:func:`~debianmemberportfolio.views.urllist`.
|
||||
|
||||
If you want to add a new URL type you have to add a line in
|
||||
:file:`portfolio.ini` and an entry in
|
||||
:py:class:`~debianmemberportfolio.controllers.portfolio.DdportfolioController`'s
|
||||
:py:attr:`~debianmemberportfolio.controllers.portfolio.DdportfolioController._LABELS`
|
||||
dictionary. The top level dictionary keys correspond to sections in the ini
|
||||
file. The dictionary values are dictionaries themselves that contain a special
|
||||
key ``label`` that defines the label of the section in the output and keys for
|
||||
each entry to be rendered in that section. The values in these sub-dictionaries
|
||||
are strings marked for translation using the :py:func:`~pylons.i18n._` function from
|
||||
:py:mod:`pylons.i18n`.
|
||||
:file:`portfolio.ini` and an entry in :py:mod:`~debianmemberportfolio.views`'s
|
||||
:py:attr:`~debianmemberportfolio.views._LABELS` dictionary. The top level
|
||||
dictionary keys correspond to sections in the ini file. The dictionary values
|
||||
are dictionaries themselves that contain a special key ``label`` that defines
|
||||
the label of the section in the output and keys for each entry to be rendered
|
||||
in that section. The values in these sub-dictionaries are strings marked for
|
||||
translation using the :py:func:`~flask_babel.lazy_gettext` function from
|
||||
:py:mod:`flask_babel`.
|
||||
|
||||
The patterns in :file:`portfolio.ini` can contain the following placeholders
|
||||
that are filled at runtime:
|
||||
|
@ -148,7 +136,7 @@ Placeholder Replacement
|
|||
%(email)s email address (URL encoded)
|
||||
%(emailnoq)s email address
|
||||
%(firstchar)s first character of the email address
|
||||
%(forumsid)d forum user id
|
||||
%(forumsid)s forum user id
|
||||
%(gpgfp)s GNUPG/PGP key fingerprint
|
||||
%(name)s full name (i.e. John Smith)
|
||||
%(username)s Debian user name
|
||||
|
@ -158,10 +146,9 @@ Placeholder Replacement
|
|||
.. _alioth.debian.org: https://alioth.debian.org/
|
||||
|
||||
The replacement of placeholders is performed in the
|
||||
:py:meth:`~debianmemberportfolio.controllers.portfolio.DdportfolioController.urllist`
|
||||
method. And uses data from the Debian keyring. Access to the pre-parsed keyring
|
||||
data is performed using the
|
||||
:py:func:`~debianmemberportfolio.model.dddatabuilder.build_data` function of
|
||||
the module :py:mod:`debianmemberportfolio.model.dddatabuilder`, which uses
|
||||
:py:func:`~debianmemberportfolio.views.urllist` function. And uses data from
|
||||
the Debian keyring. Access to the pre-parsed keyring data is performed using
|
||||
the :py:func:`~debianmemberportfolio.model.dddatabuilder.build_data` function
|
||||
of the module :py:mod:`debianmemberportfolio.model.dddatabuilder`, which uses
|
||||
several helper functions from :py:mod:`debianmemberportfolio.model.keyfinder`
|
||||
to access the key information.
|
||||
|
|
|
@ -4,58 +4,16 @@ Source documentation
|
|||
The sections below contain mostly autogenerated documentation of the source
|
||||
code of the Debian Member Portfolio Service.
|
||||
|
||||
Controllers
|
||||
-----------
|
||||
Forms
|
||||
-----
|
||||
|
||||
.. automodule:: debianmemberportfolio.controllers
|
||||
.. automodule:: debianmemberportfolio.forms
|
||||
:members:
|
||||
|
||||
portfolio controller
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
Views
|
||||
-----
|
||||
|
||||
.. automodule:: debianmemberportfolio.controllers.portfolio
|
||||
:members:
|
||||
|
||||
error controller
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
.. automodule:: debianmemberportfolio.controllers.error
|
||||
:members:
|
||||
|
||||
showformscripts controller
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. automodule:: debianmemberportfolio.controllers.showformscripts
|
||||
:members:
|
||||
|
||||
template controller
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. automodule:: debianmemberportfolio.controllers.template
|
||||
:members:
|
||||
|
||||
Library code
|
||||
------------
|
||||
|
||||
.. automodule:: debianmemberportfolio.lib
|
||||
:members:
|
||||
|
||||
app_globals
|
||||
~~~~~~~~~~~
|
||||
|
||||
.. automodule:: debianmemberportfolio.lib.app_globals
|
||||
:members:
|
||||
|
||||
base
|
||||
~~~~
|
||||
|
||||
.. automodule:: debianmemberportfolio.lib.base
|
||||
:members:
|
||||
|
||||
helpers
|
||||
~~~~~~~
|
||||
|
||||
.. automodule:: debianmemberportfolio.lib.helpers
|
||||
.. automodule:: debianmemberportfolio.views
|
||||
:members:
|
||||
|
||||
Model
|
||||
|
@ -70,12 +28,6 @@ dddatabuilder
|
|||
.. automodule:: debianmemberportfolio.model.dddatabuilder
|
||||
:members:
|
||||
|
||||
form
|
||||
~~~~
|
||||
|
||||
.. automodule:: debianmemberportfolio.model.form
|
||||
:members:
|
||||
|
||||
keyfinder
|
||||
~~~~~~~~~
|
||||
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
Babel==1.3
|
||||
Beaker==1.6.4
|
||||
FormEncode==1.2.6
|
||||
Mako==1.0.0
|
||||
MarkupSafe==0.23
|
||||
Paste==1.7.5.1
|
||||
PasteDeploy==1.5.2
|
||||
PasteScript==1.7.5
|
||||
Pygments==2.0.1
|
||||
Pylons==1.0.1
|
||||
Routes==2.0
|
||||
Tempita==0.5.2
|
||||
WebError==0.10.3
|
||||
WebHelpers==1.3
|
||||
WebOb==1.4
|
||||
WebTest==2.0.16
|
||||
nose==1.3.4
|
||||
simplejson==3.6.5
|
11
requirements.txt
Normal file
11
requirements.txt
Normal file
|
@ -0,0 +1,11 @@
|
|||
Flask==0.12.2
|
||||
Jinja2==2.9.6
|
||||
MarkupSafe==1.0
|
||||
Werkzeug==0.12.2
|
||||
itsdangerous==0.24
|
||||
Babel==2.5.0
|
||||
Flask-Babel==0.11.2
|
||||
pytz==2017.2
|
||||
speaklater==1.3
|
||||
Flask-WTF==0.14.2
|
||||
WTForms==2.1
|
12
debianmemberportfolio/config/__init__.py → run.py
Normal file → Executable file
12
debianmemberportfolio/config/__init__.py → run.py
Normal file → Executable file
|
@ -1,9 +1,10 @@
|
|||
# -*- python -*-
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
# -*- python -*-
|
||||
#
|
||||
# Debian Member Portfolio Service config package
|
||||
# Debian Member Portfolio Service Flask runner
|
||||
#
|
||||
# Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
|
||||
# Copyright © 2015 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# This file is part of the Debian Member Portfolio Service.
|
||||
#
|
||||
|
@ -20,3 +21,8 @@
|
|||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
from debianmemberportfolio import app
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.debug = True
|
||||
app.run()
|
19
setup.cfg
19
setup.cfg
|
@ -12,29 +12,28 @@ doc-dir=docs/html
|
|||
make-dirs=1
|
||||
|
||||
[nosetests]
|
||||
with-pylons = test.ini
|
||||
cover-package = debianmemberportfolio
|
||||
|
||||
# Babel configuration
|
||||
[compile_catalog]
|
||||
domain = debianmemberportfolio
|
||||
directory = debianmemberportfolio/i18n
|
||||
domain = messages
|
||||
directory = debianmemberportfolio/translations
|
||||
statistics = true
|
||||
|
||||
[extract_messages]
|
||||
charset = UTF-8
|
||||
add_comments = TRANSLATORS:
|
||||
output_file = debianmemberportfolio/i18n/debianmemberportfolio.pot
|
||||
output_file = messages.pot
|
||||
width = 80
|
||||
msgid_bugs_address = jan@dittberner.info
|
||||
|
||||
[init_catalog]
|
||||
domain = debianmemberportfolio
|
||||
input_file = debianmemberportfolio/i18n/debianmemberportfolio.pot
|
||||
output_dir = debianmemberportfolio/i18n
|
||||
domain = messages
|
||||
input_file = messages.pot
|
||||
output_dir = debianmemberportfolio/translations
|
||||
|
||||
[update_catalog]
|
||||
domain = debianmemberportfolio
|
||||
input_file = debianmemberportfolio/i18n/debianmemberportfolio.pot
|
||||
output_dir = debianmemberportfolio/i18n
|
||||
domain = messages
|
||||
input_file = messages.pot
|
||||
output_dir = debianmemberportfolio/translations
|
||||
previous = true
|
||||
|
|
21
setup.py
21
setup.py
|
@ -2,7 +2,7 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Debian Member Portfolio Service setup
|
||||
# Copyright © 2009-2015 Jan Dittberner <jan@dittberner.info>
|
||||
# Copyright © 2009-2017 Jan Dittberner <jan@dittberner.info>
|
||||
#
|
||||
# This file is part of the Debian Member Portfolio Service.
|
||||
#
|
||||
|
@ -22,13 +22,14 @@
|
|||
try:
|
||||
from setuptools import setup, find_packages
|
||||
except ImportError:
|
||||
# noinspection PyUnresolvedReferences
|
||||
from ez_setup import use_setuptools
|
||||
use_setuptools()
|
||||
from setuptools import setup, find_packages
|
||||
|
||||
setup(
|
||||
name='debianmemberportfolio',
|
||||
version='0.4.2',
|
||||
version='0.5.0',
|
||||
description='service to create Debian Member Portfolio URLs',
|
||||
long_description="""This is a service implementation that returns a set of
|
||||
personalized URLs as outlined in https://wiki.debian.org/DDPortfolio. It
|
||||
|
@ -46,22 +47,16 @@ setup(
|
|||
author_email='jan@dittberner.info',
|
||||
url='http://debian-stuff.dittberner.info/debianmemberportfolio',
|
||||
license='AGPL-3.0+',
|
||||
install_requires=["Pylons>=1.0", 'babel>=0.9.6'],
|
||||
install_requires=["Flask>=0.12.2", 'Babel>=2.5.0', 'Flask-Babel>=0.11.2', 'wtforms'],
|
||||
packages=find_packages(exclude=['ez_setup']),
|
||||
include_package_data=True,
|
||||
test_suite='nose.collector',
|
||||
package_data={'debianmemberportfolio':
|
||||
['*.ini', 'i18n/*/LC_MESSAGES/*.mo']},
|
||||
['*.ini', 'translations/*/LC_MESSAGES/*.mo']},
|
||||
message_extractors={'debianmemberportfolio': [
|
||||
('**.py', 'python', None),
|
||||
('templates/**.mako', 'mako', None),
|
||||
('public/**', 'ignore', None)]},
|
||||
('templates/**.html', 'jinja2', None),
|
||||
('templates/**.js', 'jinja2', None),
|
||||
('static/**', 'ignore', None)]},
|
||||
zip_safe=False,
|
||||
entry_points="""
|
||||
[paste.app_factory]
|
||||
main = debianmemberportfolio.config.middleware:make_app
|
||||
|
||||
[paste.app_install]
|
||||
main = pylons.util:PylonsInstaller
|
||||
""",
|
||||
)
|
||||
|
|
10
stretch.pip
Normal file
10
stretch.pip
Normal file
|
@ -0,0 +1,10 @@
|
|||
Flask==0.12
|
||||
Jinja2==2.8
|
||||
MarkupSafe==0.23
|
||||
Werkzeug==0.11.15
|
||||
itsdangerous==0.24
|
||||
Babel==2.3.4
|
||||
Flask-Babel==0.11.1
|
||||
pytz==2016.7
|
||||
Flask-WTF==0.12
|
||||
WTForms==2.1
|
21
test.ini
21
test.ini
|
@ -1,21 +0,0 @@
|
|||
#
|
||||
# Debian Member Portfolio Service - Pylons testing environment configuration
|
||||
#
|
||||
# The %(here)s variable will be replaced with the parent directory of this file
|
||||
#
|
||||
[DEFAULT]
|
||||
debug = true
|
||||
# Uncomment and replace with the address which should receive any error reports
|
||||
#email_to = you@yourdomain.com
|
||||
smtp_server = localhost
|
||||
error_email_from = paste@localhost
|
||||
|
||||
[server:main]
|
||||
use = egg:Paste#http
|
||||
host = 127.0.0.1
|
||||
port = 5000
|
||||
|
||||
[app:main]
|
||||
use = config:development.ini
|
||||
|
||||
# Add additional test specific configuration options as necessary.
|
|
@ -1,20 +0,0 @@
|
|||
Babel==0.9.6
|
||||
Beaker==1.6.3
|
||||
FormEncode==1.2.4
|
||||
Mako==0.7.0
|
||||
MarkupSafe==0.15
|
||||
Paste==1.7.5.1
|
||||
PasteDeploy==1.5.0
|
||||
PasteScript==1.7.5
|
||||
Pygments==1.5
|
||||
Pylons==1.0
|
||||
Routes==1.13
|
||||
Tempita==0.5.1
|
||||
WebError==0.10.3
|
||||
WebHelpers==1.3
|
||||
WebOb==1.1.1
|
||||
WebTest==1.3.4
|
||||
argparse==1.2.1
|
||||
nose==1.1.2
|
||||
simplejson==2.5.2
|
||||
wsgiref==0.1.2
|
Loading…
Reference in a new issue