diff options
Diffstat (limited to 'docs/source')
16 files changed, 355 insertions, 4 deletions
diff --git a/docs/source/build/mediagoblin-licenses/PKG-INFO b/docs/source/build/mediagoblin-licenses/PKG-INFO new file mode 100644 index 00000000..047efe83 --- /dev/null +++ b/docs/source/build/mediagoblin-licenses/PKG-INFO @@ -0,0 +1,11 @@ +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 diff --git a/docs/source/build/mediagoblin-licenses/README b/docs/source/build/mediagoblin-licenses/README new file mode 100644 index 00000000..ce52a8c0 --- /dev/null +++ b/docs/source/build/mediagoblin-licenses/README @@ -0,0 +1,15 @@ +================ + 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 diff --git a/docs/source/build/mediagoblin-licenses/build/lib.linux-x86_64-2.7/mediagoblin_licenses/README.rst b/docs/source/build/mediagoblin-licenses/build/lib.linux-x86_64-2.7/mediagoblin_licenses/README.rst new file mode 100644 index 00000000..ce52a8c0 --- /dev/null +++ b/docs/source/build/mediagoblin-licenses/build/lib.linux-x86_64-2.7/mediagoblin_licenses/README.rst @@ -0,0 +1,15 @@ +================ + 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 diff --git a/docs/source/build/mediagoblin-licenses/build/lib.linux-x86_64-2.7/mediagoblin_licenses/__init__.py b/docs/source/build/mediagoblin-licenses/build/lib.linux-x86_64-2.7/mediagoblin_licenses/__init__.py new file mode 100644 index 00000000..37f5a390 --- /dev/null +++ b/docs/source/build/mediagoblin-licenses/build/lib.linux-x86_64-2.7/mediagoblin_licenses/__init__.py @@ -0,0 +1,69 @@ +# 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 + } diff --git a/docs/source/build/mediagoblin-licenses/mediagoblin_licenses/README.rst b/docs/source/build/mediagoblin-licenses/mediagoblin_licenses/README.rst new file mode 100644 index 00000000..ce52a8c0 --- /dev/null +++ b/docs/source/build/mediagoblin-licenses/mediagoblin_licenses/README.rst @@ -0,0 +1,15 @@ +================ + 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 diff --git a/docs/source/build/mediagoblin-licenses/mediagoblin_licenses/__init__.py b/docs/source/build/mediagoblin-licenses/mediagoblin_licenses/__init__.py new file mode 100644 index 00000000..37f5a390 --- /dev/null +++ b/docs/source/build/mediagoblin-licenses/mediagoblin_licenses/__init__.py @@ -0,0 +1,69 @@ +# 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 + } diff --git a/docs/source/build/mediagoblin-licenses/pip-egg-info/mediagoblin_licenses.egg-info/PKG-INFO b/docs/source/build/mediagoblin-licenses/pip-egg-info/mediagoblin_licenses.egg-info/PKG-INFO new file mode 100644 index 00000000..047efe83 --- /dev/null +++ b/docs/source/build/mediagoblin-licenses/pip-egg-info/mediagoblin_licenses.egg-info/PKG-INFO @@ -0,0 +1,11 @@ +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 diff --git a/docs/source/build/mediagoblin-licenses/pip-egg-info/mediagoblin_licenses.egg-info/SOURCES.txt b/docs/source/build/mediagoblin-licenses/pip-egg-info/mediagoblin_licenses.egg-info/SOURCES.txt new file mode 100644 index 00000000..0e504e97 --- /dev/null +++ b/docs/source/build/mediagoblin-licenses/pip-egg-info/mediagoblin_licenses.egg-info/SOURCES.txt @@ -0,0 +1,6 @@ +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 diff --git a/docs/source/build/mediagoblin-licenses/pip-egg-info/mediagoblin_licenses.egg-info/dependency_links.txt b/docs/source/build/mediagoblin-licenses/pip-egg-info/mediagoblin_licenses.egg-info/dependency_links.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/docs/source/build/mediagoblin-licenses/pip-egg-info/mediagoblin_licenses.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/docs/source/build/mediagoblin-licenses/pip-egg-info/mediagoblin_licenses.egg-info/top_level.txt b/docs/source/build/mediagoblin-licenses/pip-egg-info/mediagoblin_licenses.egg-info/top_level.txt new file mode 100644 index 00000000..142877ed --- /dev/null +++ b/docs/source/build/mediagoblin-licenses/pip-egg-info/mediagoblin_licenses.egg-info/top_level.txt @@ -0,0 +1 @@ +mediagoblin_licenses diff --git a/docs/source/build/mediagoblin-licenses/setup.py b/docs/source/build/mediagoblin-licenses/setup.py new file mode 100644 index 00000000..952ba3ce --- /dev/null +++ b/docs/source/build/mediagoblin-licenses/setup.py @@ -0,0 +1,30 @@ +#!/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+)') + ) diff --git a/docs/source/build/pip-delete-this-directory.txt b/docs/source/build/pip-delete-this-directory.txt new file mode 100644 index 00000000..c8883ea9 --- /dev/null +++ b/docs/source/build/pip-delete-this-directory.txt @@ -0,0 +1,5 @@ +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). diff --git a/docs/source/plugindocs/trim_whitespace.rst b/docs/source/plugindocs/trim_whitespace.rst new file mode 100644 index 00000000..eb38e0e5 --- /dev/null +++ b/docs/source/plugindocs/trim_whitespace.rst @@ -0,0 +1 @@ +.. include:: ../../../mediagoblin/plugins/trim_whitespace/README.rst diff --git a/docs/source/siteadmin/codebase.rst b/docs/source/siteadmin/codebase.rst index 22f4e18b..73e938e7 100644 --- a/docs/source/siteadmin/codebase.rst +++ b/docs/source/siteadmin/codebase.rst @@ -65,7 +65,7 @@ Software Stack `Paste Script <http://pythonpaste.org/script/>`_: we'll use this for configuring and launching the application - * `WebOb <http://pythonpaste.org/webob/>`_: nice abstraction layer + * `werkzeug <http://werkzeug.pocoo.org/>`_: nice abstraction layer from HTTP requests, responses and WSGI bits * `Beaker <http://beaker.groovie.org/>`_: for handling sessions and diff --git a/docs/source/siteadmin/media-types.rst b/docs/source/siteadmin/media-types.rst index 3b46c1b6..8fbce5e4 100644 --- a/docs/source/siteadmin/media-types.rst +++ b/docs/source/siteadmin/media-types.rst @@ -77,6 +77,13 @@ good/bad/ugly). On Debianoid systems:: gstreamer0.10-ffmpeg +Add ``mediagoblin.media_types.video`` to the ``media_types`` list in your +``mediagoblin_local.ini`` and restart MediaGoblin. + +Run:: + + ./bin/gmg dbupdate + Now you should be able to submit videos, and mediagoblin should transcode them. @@ -117,8 +124,13 @@ Then install ``scikits.audiolab`` for the spectrograms:: ./bin/pip install scikits.audiolab Add ``mediagoblin.media_types.audio`` to the ``media_types`` list in your -``mediagoblin_local.ini`` and restart MediaGoblin. You should now be able to -upload and listen to audio files! +``mediagoblin_local.ini`` and restart MediaGoblin. + +Run:: + + ./bin/gmg dbupdate + +You should now be able to upload and listen to audio files! Ascii art @@ -140,4 +152,28 @@ the list would look like this:: media_types = mediagoblin.media_types.image, mediagoblin.media_types.ascii +Run:: + + ./bin/gmg dbupdate + Now any .txt file you uploaded will be processed as ascii art! + + +STL / 3d model support +====================== + +To enable the "STL" 3d model support plugin, first make sure you have +a recentish `Blender <http://blender.org>`_ installed and available on +your execution path. This feature has been tested with Blender 2.63. +It may work on some earlier versions, but that is not guaranteed (and +is surely not to work prior to Blender 2.5X). + +Add ``mediagoblin.media_types.stl`` to the ``media_types`` list in your +``mediagoblin_local.ini`` and restart MediaGoblin. + +Run:: + + ./bin/gmg dbupdate + +You should now be able to upload .obj and .stl files and MediaGoblin +will be able to present them to your wide audience of admirers! diff --git a/docs/source/siteadmin/relnotes.rst b/docs/source/siteadmin/relnotes.rst index 3e09078e..9b45f642 100644 --- a/docs/source/siteadmin/relnotes.rst +++ b/docs/source/siteadmin/relnotes.rst @@ -19,16 +19,33 @@ This chapter has important information for releases in it. 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 ===== This will be the last release that is capable of converting from an earlier MongoDB-based MediaGoblin instance to the newer SQL-based system. +**Do this to upgrade** + +1. Make sure to run ``bin/gmg dbupdate`` after upgrading. + **New features** -* TO BE FILLED IN BEFORE RELEASE :-) +* **3d model support!** + + You can now upload STL and OBJ files and display them in + MediaGoblin. Requires a recent-ish Blender; for details see: + :ref:`deploying-chapter` * **trim_whitespace** @@ -37,6 +54,55 @@ MongoDB-based MediaGoblin instance to the newer SQL-based system. See :ref:`core-plugin-section` for plugin documentation +* **A new API!** + + It isn't well documented yet but we do have an API. There is an + `android application in progress <https://gitorious.org/mediagoblin/mediagoblin-android>`_ + which makes use of it, and there are some demo applications between + `automgtic <https://github.com/jwandborg/automgtic>`_, an + automatic media uploader for your desktop + and `OMGMG <https://github.com/jwandborg/omgmg>`_, an example of + a web application hooking up to the API. + + This is a plugin, so you have to enable it in your mediagoblin + config file by adding a section under [plugins] like:: + + [plugins] + [[mediagoblin.plugins.api]] + + Note that the API works but is not nailed down... the way it is + called may change in future releases. + +* **OAuth login support** + + For applications that use OAuth to connect to the API. + + This is a plugin, so you have to enable it in your mediagoblin + config file by adding a section under [plugins] like:: + + [plugins] + [[mediagoblin.plugins.oauth]] + +* **Collections** + + We now have user-curated collections support. These are arbitrary + galleries that are customizable by users. You can add media to + these by clicking on the paperclip icon when logged in and looking + at a media entry. + +* **OpenStreetMap licensing display improvements** + + More accurate display of OSM licensing, and less disruptive: you + click to "expand" the display of said licensing. + + Geolocation is also now on by default. + +* **Miscelaneous visual improvements** + + We've made a number of small visual improvements including newer and + nicer looking thumbnails and improved checkbox placement. + + 0.3.1 ===== |