Remove Pylons remains

This commit is contained in:
Jan Dittberner 2015-11-12 22:18:23 +01:00
parent b7fe1328bb
commit c9ae85c2c1
26 changed files with 0 additions and 1504 deletions

View file

@ -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/>.
#

View file

@ -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'))

View file

@ -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')

View file

@ -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)

View file

@ -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)

View file

@ -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/>.
#

View file

@ -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))

View file

@ -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']

View file

@ -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

View file

@ -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)

View file

@ -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&amp;button=compact" type="text/javascript"></script>
</body>
</html>
<%def name="extrahead()"></%def>

View file

@ -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();
});

View file

@ -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>

View file

@ -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)

View file

@ -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/>.
#

View file

@ -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

View file

@ -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

View file

@ -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/>.
#