Merge tag '0.3' into develop

release 0.3
This commit is contained in:
Jan Dittberner 2014-02-08 13:15:06 +01:00
commit 944506519f
9 changed files with 129 additions and 125 deletions

View file

@ -1,6 +1,14 @@
2014-02-08 Jan Dittberner <jan@dittberner.info>
* moved to new server
* ported to Wheezy versions of the dependencies
* applied patches by Paul Wise and Olivier Berger
* update Sphinx documentation
* check responses in controller unit tests
* update copyright years of files
2013-02-24 Jan Dittberner <jan@dittberner.info> 2013-02-24 Jan Dittberner <jan@dittberner.info>
* add sphinx documentation * add sphinx documentation
* applied multiple patches by Paul Wise * applied multiple patches by Paul Wise
2012-12-08 Jan Dittberner <jan@dittberner.info> 2012-12-08 Jan Dittberner <jan@dittberner.info>

View file

@ -1,24 +1,23 @@
# -*- python -*- # -*- python -*-
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# DDPortfolio service DdportfolioController # Debian Member Portfolio Service DdportfolioController
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info> # Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
# #
# This file is part of DDPortfolio service. # This file is part of Debian Member Portfolio Service.
# #
# DDPortfolio service is free software: you can redistribute it and/or # Debian Member Portfolio Service is free software: you can redistribute it
# modify it under the terms of the GNU Affero General Public License # and/or modify it under the terms of the GNU Affero General Public License as
# as published by the Free Software Foundation, either version 3 of # published by the Free Software Foundation, either version 3 of the License,
# the License, or (at your option) any later version. # or (at your option) any later version.
# #
# DDPortfolio service is distributed in the hope that it will be # Debian Member Portfolio Service is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty # useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
# Affero General Public License for more details. # General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public # You should have received a copy of the GNU Affero General Public License
# License along with this program. If not, see # along with this program. If not, see <http://www.gnu.org/licenses/>.
# <http://www.gnu.org/licenses/>.
# #
import logging import logging
import simplejson import simplejson
@ -46,7 +45,7 @@ class DdportfolioController(BaseController):
'ddpo': N_("Debian Member's Package Overview"), 'ddpo': N_("Debian Member's Package Overview"),
'alladdresses': N_("""Debian Member's Package Overview 'alladdresses': N_("""Debian Member's Package Overview
... showing all email addresses"""), ... showing all email addresses"""),
}, },
'bugs': { 'bugs': {
'label': N_('Bugs'), 'label': N_('Bugs'),
'received': N_('''bugs received 'received': N_('''bugs received
@ -60,12 +59,12 @@ developer name on all bug logs)'),
'wnpp': N_('<a href="http://wiki.debian.org/WNPP">WNPP</a>'), 'wnpp': N_('<a href="http://wiki.debian.org/WNPP">WNPP</a>'),
'correspondent': N_('correspondent for bugs'), 'correspondent': N_('correspondent for bugs'),
'graph': N_('one year open bug history graph'), 'graph': N_('one year open bug history graph'),
}, },
'build': { 'build': {
'label': N_('Build'), 'label': N_('Build'),
'buildd': N_('buildd.d.o'), 'buildd': N_('buildd.d.o'),
'igloo': N_('igloo'), 'igloo': N_('igloo'),
}, },
'qa': { 'qa': {
'label': N_('Quality Assurance'), 'label': N_('Quality Assurance'),
'dmd': N_('maintainer dashboard'), 'dmd': N_('maintainer dashboard'),
@ -75,19 +74,19 @@ developer name on all bug logs)'),
'piuparts': N_('piuparts'), 'piuparts': N_('piuparts'),
'patchtracker': N_('Debian patch tracking system'), 'patchtracker': N_('Debian patch tracking system'),
'duck': N_('Debian Url ChecKer'), 'duck': N_('Debian Url ChecKer'),
}, },
'lists': { 'lists': {
'label': N_('Mailing Lists'), 'label': N_('Mailing Lists'),
'dolists': N_('lists.d.o'), 'dolists': N_('lists.d.o'),
'adolists': N_('lists.a.d.o'), 'adolists': N_('lists.a.d.o'),
'gmane': N_('gmane'), 'gmane': N_('gmane'),
}, },
'files': { 'files': {
'label': N_('Files'), 'label': N_('Files'),
'people': N_('people.d.o'), 'people': N_('people.d.o'),
'oldpeople': N_('oldpeople'), 'oldpeople': N_('oldpeople'),
'alioth': N_('Alioth'), 'alioth': N_('Alioth'),
}, },
'membership': { 'membership': {
'label': N_('Membership'), 'label': N_('Membership'),
'nm': N_('NM'), 'nm': N_('NM'),
@ -97,7 +96,7 @@ developer name on all bug logs)'),
'alioth': N_('Alioth'), 'alioth': N_('Alioth'),
'wiki': N_('Wiki'), 'wiki': N_('Wiki'),
'forum': N_('Forum'), 'forum': N_('Forum'),
}, },
'miscellaneous': { 'miscellaneous': {
'label': N_('Miscellaneous'), 'label': N_('Miscellaneous'),
'debtags': N_('debtags'), 'debtags': N_('debtags'),
@ -110,19 +109,19 @@ developer name on all bug logs)'),
'gpgweb': N_('GPG public key via HTTP'), 'gpgweb': N_('GPG public key via HTTP'),
'nm': N_('NM, AM participation'), 'nm': N_('NM, AM participation'),
'contrib': N_('Contribution information'), 'contrib': N_('Contribution information'),
}, },
'ssh': { 'ssh': {
'label': N_('Information reachable via ssh (for Debian Members)'), 'label': N_('Information reachable via ssh (for Debian Members)'),
'owndndoms': N_('owned debian.net domains'), 'owndndoms': N_('owned debian.net domains'),
'miainfo': N_('<a href="http://wiki.debian.org/qa.debian.org/' 'miainfo': N_('<a href="http://wiki.debian.org/qa.debian.org/'
'MIATeam">MIA</a> database information'), 'MIATeam">MIA</a> database information'),
'groupinfo': N_('Group membership information'), 'groupinfo': N_('Group membership information'),
}, },
'ubuntu': { 'ubuntu': {
'label': N_('Ubuntu'), 'label': N_('Ubuntu'),
'ubuntudiff': N_('Available patches from Ubuntu'), 'ubuntudiff': N_('Available patches from Ubuntu'),
}, },
} }
def _get_label(self, section, url=None): def _get_label(self, section, url=None):
if section in self._LABELS: if section in self._LABELS:
@ -187,9 +186,8 @@ developer name on all bug logs)'),
if form_result['mode'] == 'json': if form_result['mode'] == 'json':
response.headers['Content-Type'] = 'text/javascript' response.headers['Content-Type'] = 'text/javascript'
return simplejson.dumps( return simplejson.dumps(
dict([("%s.%s" % \ dict([("%s.%s" % (entry[1], entry[2].name), entry[3])
(entry[1], entry[2].name), entry[3]) \ for entry in data if entry[0] == 'url']))
for entry in data if entry[0] == 'url']))
for entry in data: for entry in data:
if entry[0] in ('url', 'error'): if entry[0] in ('url', 'error'):
entry.append(_(self._get_label(entry[1], entry[2].name))) entry.append(_(self._get_label(entry[1], entry[2].name)))

View file

@ -1,22 +1,22 @@
# #
# Configuration for Debian Member Portfolio service # Configuration for Debian Member Portfolio Service
# #
# Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info> # Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
# #
# This file is part of the Debian Member Portfolio service. # This file is part of the Debian Member Portfolio Service.
# #
# Debian Member Portfolio service is free software: you can redistribute it # 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 # 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, # published by the Free Software Foundation, either version 3 of the License,
# or (at your option) any later version. # 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 # 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 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
# General Public License for more details. # General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public # You should have received a copy of the GNU Affero General Public License
# License along with this program. If not, see # along with this program. If not, see <http://www.gnu.org/licenses/>.
# <http://www.gnu.org/licenses/>.
# #
[DEFAULT] [DEFAULT]
gnupghome=~/debian/gnupghome gnupghome=~/debian/gnupghome

View file

@ -1,24 +1,23 @@
# -*- python -*- # -*- python -*-
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# DDPortfolio service form handling model # Debian Member Portfolio Service form handling model
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info> # Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
# #
# This file is part of DDPortfolio service. # This file is part of Debian Member Portfolio Service.
# #
# DDPortfolio service is free software: you can redistribute it and/or # Debian Member Portfolio Service is free software: you can redistribute it
# modify it under the terms of the GNU Affero General Public License # and/or modify it under the terms of the GNU Affero General Public License as
# as published by the Free Software Foundation, either version 3 of # published by the Free Software Foundation, either version 3 of the License,
# the License, or (at your option) any later version. # or (at your option) any later version.
# #
# DDPortfolio service is distributed in the hope that it will be # Debian Member Portfolio Service is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty # useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
# Affero General Public License for more details. # General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public # You should have received a copy of the GNU Affero General Public License
# License along with this program. If not, see # along with this program. If not, see <http://www.gnu.org/licenses/>.
# <http://www.gnu.org/licenses/>.
# #
import formencode import formencode

View file

@ -1,24 +1,23 @@
# -*- python -*- # -*- python -*-
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# DDPortfolio service key finder module # Debian Member Portfolio Service key finder module
# Copyright (c) 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info> # Copyright (c) 2009-2014 Jan Dittberner <jan@dittberner.info>
# #
# This file is part of DDPortfolio service. # This file is part of Debian Member Portfolio Service.
# #
# DDPortfolio service is free software: you can redistribute it and/or # Debian Member Portfolio Service is free software: you can redistribute it
# modify it under the terms of the GNU Affero General Public License # and/or modify it under the terms of the GNU Affero General Public License as
# as published by the Free Software Foundation, either version 3 of # published by the Free Software Foundation, either version 3 of the License,
# the License, or (at your option) any later version. # or (at your option) any later version.
# #
# DDPortfolio service is distributed in the hope that it will be # Debian Member Portfolio Service is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty # useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
# Affero General Public License for more details. # General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public # You should have received a copy of the GNU Affero General Public
# License along with this program. If not, see # License along with this program. If not, see <http://www.gnu.org/licenses/>.
# <http://www.gnu.org/licenses/>.
# #
""" """
This module provides tools for finding PGP key information from a This module provides tools for finding PGP key information from a
@ -86,6 +85,7 @@ def getLoginByFingerprint(fpr):
""" """
return _get_cached('login:fpr:%s' % fpr) return _get_cached('login:fpr:%s' % fpr)
def _dump_cache(): def _dump_cache():
cache = _get_keyring_cache() cache = _get_keyring_cache()
fprs = [] fprs = []
@ -94,16 +94,16 @@ def _dump_cache():
fpr = key.replace('email:fpr:', '') fpr = key.replace('email:fpr:', '')
if not fpr in fprs: if not fpr in fprs:
fprs.append(fpr) fprs.append(fpr)
for fpr in fprs: for fpr in fprs:
login = getLoginByFingerprint(fpr) login = getLoginByFingerprint(fpr)
email = _get_cached('email:fpr:%s' % fpr) email = _get_cached('email:fpr:%s' % fpr)
name = _get_cached('name:fpr:%s' % fpr) name = _get_cached('name:fpr:%s' % fpr)
print fpr, login, ':' print fpr, login, ':'
print ' ', name, email print ' ', name, email
if __name__ == '__main__': if __name__ == '__main__':
logging.basicConfig(stream=sys.stderr, level=logging.WARNING) logging.basicConfig(stream=sys.stderr, level=logging.WARNING)
_dump_cache() _dump_cache()

View file

@ -2,23 +2,22 @@
<%inherit file="base.mako" />\ <%inherit file="base.mako" />\
<%doc> <%doc>
Template for the url output page. Template for the url output page.
Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info> Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
This file is part of DDPortfolio service. This file is part of Debian Member Portfolio Service.
DDPortfolio service is free software: you can redistribute it and/or Debian Member Portfolio Service is free software: you can redistribute it
modify it under the terms of the GNU Affero General Public License as 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 published by the Free Software Foundation, either version 3 of the License, or
License, or (at your option) any later version. (at your option) any later version.
DDPortfolio service is distributed in the hope that it will be useful, Debian Member Portfolio Service is distributed in the hope that it will be
but WITHOUT ANY WARRANTY; without even the implied warranty of useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
Affero General Public License for more details. General Public License for more details.
You should have received a copy of the GNU Affero General Public You should have received a copy of the GNU Affero General Public License along
License along with this program. If not, see with this program. If not, see <http://www.gnu.org/licenses/>.
<http://www.gnu.org/licenses/>.
</%doc>\ </%doc>\
<%def name="titleaddon()"> <%def name="titleaddon()">
- ${_('Your personal links')} - ${_('Your personal links')}

View file

@ -1,24 +1,23 @@
# -*- python -*- # -*- python -*-
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# DDPortfolio service tests package # Debian Member Portfolio Service tests package
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info> # Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
# #
# This file is part of DDPortfolio service. # This file is part of Debian Member Portfolio Service.
# #
# DDPortfolio service is free software: you can redistribute it and/or # Debian Member Portfolio Service is free software: you can redistribute it
# modify it under the terms of the GNU Affero General Public License # and/or modify it under the terms of the GNU Affero General Public License as
# as published by the Free Software Foundation, either version 3 of # published by the Free Software Foundation, either version 3 of the License,
# the License, or (at your option) any later version. # or (at your option) any later version.
# #
# DDPortfolio service is distributed in the hope that it will be # Debian Member Portfolio Service is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty # useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
# Affero General Public License for more details. # General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public # You should have received a copy of the GNU Affero General Public License
# License along with this program. If not, see # along with this program. If not, see <http://www.gnu.org/licenses/>.
# <http://www.gnu.org/licenses/>.
# #
"""Pylons application test package """Pylons application test package
@ -30,11 +29,8 @@ pkg_resources, in case the project hasn't been installed with
setuptools. It also initializes the application via websetup (paster setuptools. It also initializes the application via websetup (paster
setup-app) with the project's test.ini configuration file. setup-app) with the project's test.ini configuration file.
""" """
import os
import sys
from unittest import TestCase from unittest import TestCase
from paste.deploy import loadapp
from paste.script.appinstall import SetupCommand from paste.script.appinstall import SetupCommand
from pylons import url from pylons import url
from routes.util import URLGenerator from routes.util import URLGenerator

View file

@ -1,24 +1,23 @@
# -*- python -*- # -*- python -*-
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# DDPortfolio service DdportfolioController test # Debian Member Portfolio Service DdportfolioController test
# Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info> # Copyright © 2009, 2010 Jan Dittberner <jan@dittberner.info>
# #
# This file is part of DDPortfolio service. # This file is part of Debian Member Portfolio Service.
# #
# DDPortfolio service is free software: you can redistribute it and/or # Debian Member Portfolio Service is free software: you can redistribute it
# modify it under the terms of the GNU Affero General Public License # and/or modify it under the terms of the GNU Affero General Public License as
# as published by the Free Software Foundation, either version 3 of # published by the Free Software Foundation, either version 3 of the License,
# the License, or (at your option) any later version. # or (at your option) any later version.
# #
# DDPortfolio service is distributed in the hope that it will be # Debian Member Portfolio Service is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty # useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
# Affero General Public License for more details. # General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public # You should have received a copy of the GNU Affero General Public License
# License along with this program. If not, see # along with this program. If not, see <http://www.gnu.org/licenses/>.
# <http://www.gnu.org/licenses/>.
# #
from ddportfolioservice.tests import TestController, url from ddportfolioservice.tests import TestController, url
@ -28,3 +27,6 @@ class TestDdportfolioController(TestController):
def test_index(self): def test_index(self):
response = self.app.get(url(controller='ddportfolio', action='index')) response = self.app.get(url(controller='ddportfolio', action='index'))
# Test response... # Test response...
assert response.status_int == 200
assert response.content_type == "text/html"
assert "Debian Member Portfolio Service" in response

View file

@ -1,24 +1,23 @@
# -*- python -*- # -*- python -*-
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# DDPortfolio service DdportfolioController test # Debian Member Portfolio Service DdportfolioController test
# Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info> # Copyright © 2009-2014 Jan Dittberner <jan@dittberner.info>
# #
# This file is part of DDPortfolio service. # This file is part of Debian Member Portfolio Service.
# #
# DDPortfolio service is free software: you can redistribute it and/or # Debian Member Portfolio Service is free software: you can redistribute it
# modify it under the terms of the GNU Affero General Public License # and/or modify it under the terms of the GNU Affero General Public License as
# as published by the Free Software Foundation, either version 3 of # published by the Free Software Foundation, either version 3 of the License,
# the License, or (at your option) any later version. # or (at your option) any later version.
# #
# DDPortfolio service is distributed in the hope that it will be # Debian Member Portfolio Service is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty # useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
# Affero General Public License for more details. # General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public # You should have received a copy of the GNU Affero General Public License
# License along with this program. If not, see # along with this program. If not, see <http://www.gnu.org/licenses/>.
# <http://www.gnu.org/licenses/>.
# #
from ddportfolioservice.tests import TestController, url from ddportfolioservice.tests import TestController, url
@ -29,3 +28,6 @@ class TestShowformscriptsController(TestController):
response = self.app.get( response = self.app.get(
url(controller='showformscripts', action='index')) url(controller='showformscripts', action='index'))
# Test response... # Test response...
assert response.status_int == 200
assert response.content_type == "text/javascript"
assert "function updateField" in response