forked from jan/debianmemberportfolio
Remove Pylons remains
This commit is contained in:
parent
b7fe1328bb
commit
c9ae85c2c1
26 changed files with 0 additions and 1504 deletions
|
@ -1,22 +0,0 @@
|
||||||
# -*- python -*-
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
#
|
|
||||||
# Debian Member Portfolio Service config 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,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)
|
|
|
@ -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
|
|
|
@ -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)
|
|
|
@ -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>
|
|
|
@ -1,122 +0,0 @@
|
||||||
## -*- coding: utf-8 -*- \
|
|
||||||
<%doc>
|
|
||||||
Helper JavaScript for the data input form.
|
|
||||||
Copyright © 2009, 2010, 2015 Jan Dittberner <jan@dittberner.info>
|
|
||||||
|
|
||||||
This file is part of DDPortfolio service.
|
|
||||||
|
|
||||||
DDPortfolio service is free software: you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU Affero General Public License as
|
|
||||||
published by the Free Software Foundation, either version 3 of the
|
|
||||||
License, or (at your option) any later version.
|
|
||||||
|
|
||||||
DDPortfolio service is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
Affero General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Affero General Public
|
|
||||||
License along with this program. If not, see
|
|
||||||
<https://www.gnu.org/licenses/>.
|
|
||||||
</%doc>\
|
|
||||||
|
|
||||||
var defaulthiddendivs = new Array(
|
|
||||||
'#namefield', '#gpgfpfield', '#usernamefield', '#nonddemailfield',
|
|
||||||
'#aliothusernamefield', '#wikihomepagefield', '#forumsidfield');
|
|
||||||
var maskedfielddivs = new Array(
|
|
||||||
'#namefield', '#gpgfpfield', '#usernamefield', '#nonddemailfield',
|
|
||||||
'#aliothusernamefield', '#wikihomepagefield', '#forumsidfield');
|
|
||||||
var allfielddivs = new Array(
|
|
||||||
'#namefield', '#gpgfpfield', '#usernamefield', '#nonddemailfield',
|
|
||||||
'#aliothusernamefield', '#wikihomepagefield', '#forumsidfield');
|
|
||||||
|
|
||||||
function updateFields(data, textStatus) {
|
|
||||||
if (data.type == 2) { // DD
|
|
||||||
$('#name').attr('value', data.name).attr('readonly', 'readonly');
|
|
||||||
$('#gpgfp').attr('value', data.gpgfp);
|
|
||||||
$('#username').attr('value', data.username).attr(
|
|
||||||
'readonly', 'readonly');
|
|
||||||
$('#nonddemail').attr('value', data.email).focus();
|
|
||||||
$('#aliothusername').attr('value', data.username);
|
|
||||||
$('#wikihomepage').attr('value', data.wikihomepage);
|
|
||||||
|
|
||||||
$('#namefield').show();
|
|
||||||
$('#gpgfpfield').show();
|
|
||||||
$('#usernamefield').show();
|
|
||||||
$('#nonddemailfield').show();
|
|
||||||
$('#aliothusernamefield').show();
|
|
||||||
$('#wikihomepagefield').show();
|
|
||||||
$('#forumsidfield').show();
|
|
||||||
|
|
||||||
$('#nonddemail').focus().select();
|
|
||||||
} else if (data.type == 1) { // DM
|
|
||||||
$('#name').attr('value', data.name).attr('readonly', 'readonly');
|
|
||||||
$('#gpgfp').attr('value', data.gpgfp);
|
|
||||||
$('#username').attr('value', '');
|
|
||||||
$('#nonddemail').attr('value', data.email).focus();
|
|
||||||
$('#wikihomepage').attr('value', data.wikihomepage);
|
|
||||||
|
|
||||||
$('#namefield').show();
|
|
||||||
$('#gpgfpfield').show();
|
|
||||||
$('#usernamefield').hide();
|
|
||||||
$('#nonddemailfield').hide();
|
|
||||||
$('#aliothusernamefield').show();
|
|
||||||
$('#wikihomepagefield').show();
|
|
||||||
$('#forumsidfield').show();
|
|
||||||
|
|
||||||
$('#aliothusername').focus().select();
|
|
||||||
} else {
|
|
||||||
$('#nonddemail').attr('value', data.email);
|
|
||||||
$('#name').removeAttr('readonly');
|
|
||||||
$('#username').removeAttr('readonly').attr('value', '');
|
|
||||||
$('#gpgfp').attr('value', '');
|
|
||||||
|
|
||||||
$('#usernamefield').hide();
|
|
||||||
$('#gpgfpfield').hide();
|
|
||||||
$('#nonddemailfield').hide();
|
|
||||||
$('#namefield').show();
|
|
||||||
$('#aliothusernamefield').show();
|
|
||||||
$('#wikihomepagefield').show();
|
|
||||||
$('#forumsidfield').show();
|
|
||||||
|
|
||||||
$('#name').focus().select();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function onChangeShowAll(event) {
|
|
||||||
if ($('#showall').prop('checked')) {
|
|
||||||
for (var fielddiv in allfielddivs) {
|
|
||||||
$(allfielddivs[fielddiv]).show();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (var fielddiv in maskedfielddivs) {
|
|
||||||
$(maskedfielddivs[fielddiv]).hide();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function onBlurEmail() {
|
|
||||||
if ($.trim($('#email').prop('value')).length > 0) {
|
|
||||||
$.ajax({
|
|
||||||
'url' : '${h.url(controller="showformscripts", action="fetchdddata")}',
|
|
||||||
'data' : {'email' : $('#email').prop('value')},
|
|
||||||
'dataType' : 'json',
|
|
||||||
'success' : updateFields,
|
|
||||||
'error' : function(request, textStatus, errorThrown) {
|
|
||||||
$('#email').focus();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$(document).ready(function() {
|
|
||||||
for (var index in defaulthiddendivs) {
|
|
||||||
if (!$(defaulthiddendivs[index]).hasClass('witherrors')) {
|
|
||||||
$(defaulthiddendivs[index]).hide();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$('#showall').attr('checked', false).change(onChangeShowAll);
|
|
||||||
$('#showallfield').show();
|
|
||||||
$('#email').blur(onBlurEmail).focus();
|
|
||||||
});
|
|
|
@ -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,22 +0,0 @@
|
||||||
# -*- python -*-
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
#
|
|
||||||
# Debian Member Portfolio Service functional 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/>.
|
|
||||||
#
|
|
|
@ -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/>.
|
|
||||||
#
|
|
|
@ -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,29 +0,0 @@
|
||||||
Flask==0.10.1
|
|
||||||
Jinja2==2.7.3
|
|
||||||
MarkupSafe==0.23
|
|
||||||
Werkzeug==0.9.6
|
|
||||||
itsdangerous==0.24
|
|
||||||
Babel==1.3
|
|
||||||
Flask-Babel==0.9
|
|
||||||
pytz==2012c
|
|
||||||
speaklater==1.3
|
|
||||||
Flask-WTF==0.10.2
|
|
||||||
WTForms==2.0.1
|
|
||||||
#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
|
|
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.
|
|
Loading…
Reference in a new issue