It is pushing up the daisies. Also relnote the change.
--- /dev/null
+Metadata-Version: 1.1
+Name: mediagoblin-licenses
+Version: 0.1.2
+Summary: Customize the licenses for your mediagoblin installation
+Home-page: https://gitorious.org/mediagoblin-licenses/mediagoblin-licenses
+Author: Sebastian Spaeth
+Author-email: Sebastian@SSpaeth.de
+License: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
+Download-URL: https://gitorious.org/mediagoblin-licenses/mediagoblin-licenses/archive-tarball/mediagoblin-licenses-v0.1.2
+Description: UNKNOWN
+Platform: UNKNOWN
--- /dev/null
+================
+ Custom Licenses
+================
+
+Enable by configuring all custom licenses in the form of:
+license_x=Abbreviation, Full Name, URL to license
+
+Make sure to only insert one line per license without line breaks.
+
+E.g. do this into mediagoblin_local.ini:
+[[mediagoblin_licenses]]
+license_1=Chicken Dance, Chicken Dance License v1.0, https://raw.github.com/supertunaman/cdl/f0ae734f4abce311070ac0c401dbc0230cbc4344/COPYING
+license_2=WTFPL, Do What the Fuck Public License v2.0, http://sam.zoy.org/wtfpl/
+
+This plugin is licensed under the GNU APGL v3+.
\ No newline at end of file
--- /dev/null
+================
+ Custom Licenses
+================
+
+Enable by configuring all custom licenses in the form of:
+license_x=Abbreviation, Full Name, URL to license
+
+Make sure to only insert one line per license without line breaks.
+
+E.g. do this into mediagoblin_local.ini:
+[[mediagoblin_licenses]]
+license_1=Chicken Dance, Chicken Dance License v1.0, https://raw.github.com/supertunaman/cdl/f0ae734f4abce311070ac0c401dbc0230cbc4344/COPYING
+license_2=WTFPL, Do What the Fuck Public License v2.0, http://sam.zoy.org/wtfpl/
+
+This plugin is licensed under the GNU APGL v3+.
\ No newline at end of file
--- /dev/null
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+#
+# This program 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.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+from __future__ import unicode_literals
+
+import logging
+from mediagoblin.tools.pluginapi import get_config
+from mediagoblin.tools import licenses
+
+__VERSION__ = '0.1.2' # releases get numbers, post release a "+" appended
+_log = logging.getLogger(__name__)
+
+SORTED_PLUGIN_LICENSES = []
+"""This is the equivalent of MG.tools.licenses.SORTED_LICENSES
+that we want to replace"""
+
+
+class CustomLicenses(object):
+ _setup_plugin_called = 0
+
+ @classmethod
+ def setup_plugin(cls):
+ if cls._setup_plugin_called:
+ return # Only set up once
+ cls._setup_plugin_called += 1
+ _log.info('Configurable license plugin setting up!')
+ # Get configured licenses
+ config = get_config(cls.__module__)
+ if not config:
+ _log.warn('There are no licenses configured at all.')
+ return # Nothing configured, nothing to do...
+
+ for k,v in config.iteritems():
+ if not k.lower().startswith('license_'):
+ continue
+ (abbrev, name, url) = config.as_list(k)
+ _log.info("Adding license: {0}".format(abbrev))
+ SORTED_PLUGIN_LICENSES.append(licenses.License(abbrev, name, url))
+
+ # Set the regular license list to our custom ones:
+ licenses.SORTED_LICENSES = SORTED_PLUGIN_LICENSES
+ # create dict {url: License,...} to enable fast license lookup by url.
+
+ # The data structure in
+ # mediagoblin.tools.licenses.SUPPORTED_LICENSES and SORTED_LICENSES
+ # is really not optimal. What we want there is a "OrderedDict" that
+ # can give us order AND quick lookup by key at the same time. But as
+ # that is python >=2.7 and we have to deal with python 2.6, we'll
+ # live with the data duplication in 2 structures for now. It's not
+ # like we are going to have hundreds of licenses, fortunately.
+ licenses.SUPPORTED_LICENSES = dict(((l.uri, l) for l in \
+ SORTED_PLUGIN_LICENSES))
+
+
+hooks = {
+ 'setup': CustomLicenses.setup_plugin
+ }
--- /dev/null
+================
+ Custom Licenses
+================
+
+Enable by configuring all custom licenses in the form of:
+license_x=Abbreviation, Full Name, URL to license
+
+Make sure to only insert one line per license without line breaks.
+
+E.g. do this into mediagoblin_local.ini:
+[[mediagoblin_licenses]]
+license_1=Chicken Dance, Chicken Dance License v1.0, https://raw.github.com/supertunaman/cdl/f0ae734f4abce311070ac0c401dbc0230cbc4344/COPYING
+license_2=WTFPL, Do What the Fuck Public License v2.0, http://sam.zoy.org/wtfpl/
+
+This plugin is licensed under the GNU APGL v3+.
\ No newline at end of file
--- /dev/null
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+#
+# This program 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.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+from __future__ import unicode_literals
+
+import logging
+from mediagoblin.tools.pluginapi import get_config
+from mediagoblin.tools import licenses
+
+__VERSION__ = '0.1.2' # releases get numbers, post release a "+" appended
+_log = logging.getLogger(__name__)
+
+SORTED_PLUGIN_LICENSES = []
+"""This is the equivalent of MG.tools.licenses.SORTED_LICENSES
+that we want to replace"""
+
+
+class CustomLicenses(object):
+ _setup_plugin_called = 0
+
+ @classmethod
+ def setup_plugin(cls):
+ if cls._setup_plugin_called:
+ return # Only set up once
+ cls._setup_plugin_called += 1
+ _log.info('Configurable license plugin setting up!')
+ # Get configured licenses
+ config = get_config(cls.__module__)
+ if not config:
+ _log.warn('There are no licenses configured at all.')
+ return # Nothing configured, nothing to do...
+
+ for k,v in config.iteritems():
+ if not k.lower().startswith('license_'):
+ continue
+ (abbrev, name, url) = config.as_list(k)
+ _log.info("Adding license: {0}".format(abbrev))
+ SORTED_PLUGIN_LICENSES.append(licenses.License(abbrev, name, url))
+
+ # Set the regular license list to our custom ones:
+ licenses.SORTED_LICENSES = SORTED_PLUGIN_LICENSES
+ # create dict {url: License,...} to enable fast license lookup by url.
+
+ # The data structure in
+ # mediagoblin.tools.licenses.SUPPORTED_LICENSES and SORTED_LICENSES
+ # is really not optimal. What we want there is a "OrderedDict" that
+ # can give us order AND quick lookup by key at the same time. But as
+ # that is python >=2.7 and we have to deal with python 2.6, we'll
+ # live with the data duplication in 2 structures for now. It's not
+ # like we are going to have hundreds of licenses, fortunately.
+ licenses.SUPPORTED_LICENSES = dict(((l.uri, l) for l in \
+ SORTED_PLUGIN_LICENSES))
+
+
+hooks = {
+ 'setup': CustomLicenses.setup_plugin
+ }
--- /dev/null
+Metadata-Version: 1.1
+Name: mediagoblin-licenses
+Version: 0.1.2
+Summary: Customize the licenses for your mediagoblin installation
+Home-page: https://gitorious.org/mediagoblin-licenses/mediagoblin-licenses
+Author: Sebastian Spaeth
+Author-email: Sebastian@SSpaeth.de
+License: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
+Download-URL: https://gitorious.org/mediagoblin-licenses/mediagoblin-licenses/archive-tarball/mediagoblin-licenses-v0.1.2
+Description: UNKNOWN
+Platform: UNKNOWN
--- /dev/null
+README
+mediagoblin_licenses/__init__.py
+pip-egg-info/mediagoblin_licenses.egg-info/PKG-INFO
+pip-egg-info/mediagoblin_licenses.egg-info/SOURCES.txt
+pip-egg-info/mediagoblin_licenses.egg-info/dependency_links.txt
+pip-egg-info/mediagoblin_licenses.egg-info/top_level.txt
\ No newline at end of file
--- /dev/null
+mediagoblin_licenses
--- /dev/null
+#!/usr/bin/env python
+from distutils.core import setup
+import re
+
+from sys import version
+assert version >= '2.6', 'This package requires python 2.6 at least. Sorry.'
+
+def get_version():
+ """Parse __init__.py for version info, we cannot import it"""
+ version_re = re.compile(r'\s*__VERSION__\s*=\s*("|\')([\w\.\+]+)(\1)')
+ with open('mediagoblin_licenses/__init__.py', 'rt') as file:
+ for line in file:
+ if version_re.match(line):
+ return version_re.match(line).group(2)
+__VERSION__ = get_version()
+
+
+setup(name='mediagoblin-licenses',
+ version=__VERSION__,
+ description='Customize the licenses for your mediagoblin installation',
+ author='Sebastian Spaeth',
+ author_email='Sebastian@SSpaeth.de',
+ url='https://gitorious.org/mediagoblin-licenses/mediagoblin-licenses',
+ download_url='https://gitorious.org/mediagoblin-licenses/mediagoblin-licenses/archive-tarball/mediagoblin-licenses-v' + __VERSION__,
+ # http://bugs.python.org/issue13943. Must not be unicode...
+ packages=['mediagoblin_licenses'],
+ package_data = {'mediagoblin_licenses': ['README.rst', 'COPYING']},
+ license=(b'License :: OSI Approved :: GNU Affero General Public License '
+ b'v3 or later (AGPLv3+)')
+ )
--- /dev/null
+This file is placed here by pip to indicate the source was put
+here by pip.
+
+Once this package is successfully installed this source code will be
+deleted (unless you remove this file).
--- /dev/null
+.. include:: ../../../mediagoblin/plugins/trim_whitespace/README.rst
If you're upgrading from a previous release, please read it
carefully, or at least skim over it.
+WIP
+=====
+
+**New features**
+
+**Other changed**
+
+* Dependency list has been reduced not requireing the "webob" package anymore.
+
0.3.2
=====
'setuptools',
'PasteScript',
'beaker',
- 'webob<=1.2a2,>=1.1',
'wtforms',
'py-bcrypt',
'nose',