Ticket #5393: issue_5393.patch

File issue_5393.patch, 61.7 KB (added by Ben Sturmfels, 8 years ago)
  • docs/source/api/authentication.rst

    From d75b6b18450c5b2627f7f1da1478b1c47639a1df Mon Sep 17 00:00:00 2001
    From: Ben Sturmfels <ben@sturm.com.au>
    Date: Sun, 18 Sep 2016 00:48:32 +1000
    Subject: [PATCH] Spell-check the entire documentation.
    
    ---
     docs/source/api/authentication.rst               |  4 +-
     docs/source/api/objects.rst                      | 14 ++---
     docs/source/devel/codebase.rst                   | 22 +++----
     docs/source/devel/migrations.rst                 |  4 +-
     docs/source/devel/originaldesigndecisions.rst    | 10 +--
     docs/source/devel/storage.rst                    | 24 +++----
     docs/source/index.rst                            |  2 +-
     docs/source/pluginwriter/api.rst                 |  8 +--
     docs/source/pluginwriter/authhooks.rst           |  4 +-
     docs/source/pluginwriter/database.rst            |  8 +--
     docs/source/pluginwriter/hooks.rst               |  2 +-
     docs/source/pluginwriter/tests.rst               |  8 +--
     docs/source/siteadmin/commandline-upload.rst     | 10 +--
     docs/source/siteadmin/configuration.rst          |  6 +-
     docs/source/siteadmin/deploying.rst              | 34 +++++-----
     docs/source/siteadmin/media-types.rst            | 40 ++++++------
     docs/source/siteadmin/plugins.rst                |  4 +-
     docs/source/siteadmin/production-deployments.rst | 14 ++---
     docs/source/siteadmin/relnotes.rst               | 80 ++++++++++++------------
     docs/source/siteadmin/theming.rst                | 16 ++---
     mediagoblin/plugins/basic_auth/README.rst        |  2 +-
     mediagoblin/plugins/flatpagesfile/README.rst     |  8 +--
     mediagoblin/plugins/ldap/README.rst              | 18 +++---
     mediagoblin/plugins/openid/README.rst            | 12 ++--
     mediagoblin/plugins/trim_whitespace/README.rst   |  2 +-
     25 files changed, 176 insertions(+), 180 deletions(-)
    
    diff --git a/docs/source/api/authentication.rst b/docs/source/api/authentication.rst
    index 1d52d30..2db4a7b 100644
    a b Only set client_id for update.  
    144144Only set client_secret for update.
    145145    This should only be given when you update.
    146146
    147 Logo URL <url> is not a valid URL
     147Logo URL <URL> is not a valid URL
    148148    This is when the URL specified did not meet the validation.
    149149
    150150contacts must be a string of space-separated email addresses.
    We are not using OAuth2 as we want to stay completely compatible with pump.io.  
    171171Endpoints
    172172---------
    173173
    174 These are the endpoints you need to use for the oauth requests:
     174These are the endpoints you need to use for the OAuth requests:
    175175
    176176`/oauth/request_token` is for getting the request token.
    177177
  • docs/source/api/objects.rst

    diff --git a/docs/source/api/objects.rst b/docs/source/api/objects.rst
    index 4c19961..854febe 100644
    a b Objects  
    1919
    2020Using any the APIs mentioned in this document you will required
    2121:doc:`authentication`. There are many ways to interact with objects, some of
    22 which aren't supported yet by mediagoblin such as liking or sharing objects
     22which aren't supported yet by MediaGoblin such as liking or sharing objects
    2323however you can interact with them by updating them, deleting them and
    2424commenting on them.
    2525
    timestamps or any other data the server creates. My activity comment is::  
    4949
    5050This should be posted to the users feed (outbox) which you can find out about
    5151:doc:`activities`. You will get back the full activity containing all of
    52 attributes including ID, urls, etc.
     52attributes including ID, URLs, etc.
    5353
    5454Posting Media
    5555~~~~~~~~~~~~~
    5656
    5757Posting media is a special case from posting all other objects. This is because
    5858you need to submit more than just the JSON image representation, you need to
    59 actually subject the image itself. There is also strange behavour around media
     59actually subject the image itself. There is also strange behavior around media
    6060postings where if you want to give the media you're posting a title or
    61 description you need to peform an update too. A full media posting in order of
     61description you need to perform an update too. A full media posting in order of
    6262steps to do is as follows:
    6363
    64641) Uploads the data to the server
    To upload media you should use the URL `/api/user/<username>/uploads`.  
    7474A POST request should be made to the media upload URL submitting at least two
    7575headers:
    7676
    77 * `Content-Type` - This being a valid mimetype for the media.
     77* `Content-Type` - This being a valid MIME type for the media.
    7878* `Content-Length` - size in bytes of the media.
    7979
    8080The media data should be submitted as POST data to the image upload URL.
    You should get the full delete activity in response.  
    196196
    197197.. warning::
    198198    While deletion works, currently because of the way deletion is implemented
    199     deletion either via the API or the webUI causes any activities to be broken
    200     and will be skipped and unaccessible. A migration to remove the broken
     199    deletion either via the API or the web UI causes any activities to be broken
     200    and will be skipped and inaccessible. A migration to remove the broken
    201201    activities will come in a future release when soft-deletion has been
    202202    implemented.
    203203
  • docs/source/devel/codebase.rst

    diff --git a/docs/source/devel/codebase.rst b/docs/source/devel/codebase.rst
    index 122a329..068c187 100644
    a b development.  
    4444What's where
    4545============
    4646
    47 After you've run checked out mediagoblin and followed the virtualenv
     47After you've run checked out MediaGoblin and followed the virtualenv
    4848instantiation instructions, you're faced with the following directory
    4949tree::
    5050
    As you can see, all the code for GNU MediaGoblin is in the  
    8686
    8787Here are some interesting files and what they do:
    8888
    89 :routing.py: maps url paths to views
    90 :views.py:   views handle http requests
     89:routing.py: maps URL paths to views
     90:views.py:   views handle HTTP requests
    9191:forms.py:   wtforms stuff for this submodule
    9292
    9393You'll notice that there are several sub-directories: tests,
    templates, auth, submit, ...  
    9797
    9898``templates`` holds all the templates for the output.
    9999
    100 ``auth`` and ``submit`` are modules that enacpsulate authentication
     100``auth`` and ``submit`` are modules that encapsulate authentication
    101101and media item submission.  If you look in these directories, you'll
    102102see they have their own ``routing.py``, ``view.py``, and forms.py in
    103103addition to some other code.
    Software Stack  
    123123    for unit tests
    124124
    125125  * `virtualenv <http://www.virtualenv.org/>`_: for setting up an
    126     isolated environment to keep mediagoblin and related packages
     126    isolated environment to keep MediaGoblin and related packages
    127127    (potentially not required if MediaGoblin is packaged for your
    128128    distro)
    129129
    130130* Data storage
    131131
    132132  * `SQLAlchemy <http://sqlalchemy.org/>`_: SQL ORM and database
    133     interaction library for Python. Currently we support sqlite and
    134     postgress as backends.
     133    interaction library for Python. Currently we support SQLite and
     134    PostgreSQL as backends.
    135135
    136136* Web application
    137137
    Software Stack  
    158158
    159159  * `Markdown (for python) <http://pypi.python.org/pypi/Markdown>`_:
    160160    implementation of `Markdown <http://daringfireball.net/projects/markdown/>`_
    161     text-to-html tool to make it easy for people to write richtext
     161    text-to-html tool to make it easy for people to write rich text
    162162    comments, descriptions, and etc.
    163163
    164   * `lxml <http://lxml.de/>`_: nice xml and html processing for
     164  * `lxml <http://lxml.de/>`_: nice XML and HTML processing for
    165165    python.
    166166
    167167* Media processing libraries
    Software Stack  
    174174    future, probably audio too.
    175175
    176176  * `chardet <http://pypi.python.org/pypi/chardet>`_: (Optional, for
    177     ascii art hosting sites only)  Used to make ascii art thumbnails.
     177    ASCII art hosting sites only)  Used to make ASCII art thumbnails.
    178178
    179179* Front end
    180180
    181   * `JQuery <http://jquery.com/>`_: for groovy JavaScript things
     181  * `jQuery <http://jquery.com/>`_: for groovy JavaScript things
    182182
    183183
  • docs/source/devel/migrations.rst

    diff --git a/docs/source/devel/migrations.rst b/docs/source/devel/migrations.rst
    index 5e0a6be..ec0f7d2 100644
    a b There's a few things you need to know:  
    3131- We use `Alembic <https://bitbucket.org/zzzeek/alembic>`_ to run
    3232  migrations.  We also make heavy use of the
    3333  `branching model <http://alembic.readthedocs.org/en/latest/branches.html>`_
    34   for our plugins.  Every plugin gets its own migration branc.
     34  for our plugins.  Every plugin gets its own migration branch.
    3535- We used to use `sqlalchemy-migrate
    3636  <http://code.google.com/p/sqlalchemy-migrate/>`_.
    3737  See `their docs <https://sqlalchemy-migrate.readthedocs.org/>`_.
    There's a few things you need to know:  
    4141- SQLAlchemy has two parts to it, the ORM and the "core" interface.
    4242  We DO NOT use the ORM when running migrations.  Think about it: the
    4343  ORM is set up with an expectation that the models already reflect a
    44   certain pattern.  But if a person is moving from their old patern
     44  certain pattern.  But if a person is moving from their old pattern
    4545  and are running tools to *get to* the current pattern, of course
    4646  their current database structure doesn't match the state of the ORM!
    4747  Anyway, Alembic has its own conventions for migrations; follow those.
  • docs/source/devel/originaldesigndecisions.rst

    diff --git a/docs/source/devel/originaldesigndecisions.rst b/docs/source/devel/originaldesigndecisions.rst
    index 2843870..b60db77 100644
    a b Chris and Will on "Why GNU MediaGoblin":  
    3838    .. figure:: ../_static/goblin.png
    3939       :alt: Cute goblin with a beret.
    4040
    41        *Figure 1: Cute goblin with a beret.  llustrated by Chris
     41       *Figure 1: Cute goblin with a beret.  Illustrated by Chris
    4242       Webber*
    4343
    4444    .. figure:: ../_static/snugglygoblin.png
    Chris and Will on "Why GNU MediaGoblin":  
    6161    1. "GNU MediaGoblin" is the name we're going to use in all official
    6262       capacities: web site, documentation, press releases, ...
    6363
    64     2. In casual conversation, it's ok to use more casual names.
     64    2. In casual conversation, it's OK to use more casual names.
    6565
    6666    3. If you're writing about the project, we ask that you call it GNU
    6767       MediaGoblin.
    Why WSGI Minimalism  
    113113Chris Webber on "Why WSGI Minimalism":
    114114
    115115    If you notice in the technology list I list a lot of components
    116     that are very "django-like", but not actually `Django`_
     116    that are very "Django-like", but not actually `Django`_
    117117    components.  What can I say, I really like a lot of the ideas in
    118118    Django!  Which leads to the question: why not just use Django?
    119119
    Chris Webber on "Why MongoDB":  
    176176    ideal universe where everyone ran servers out of their own
    177177    housing.  As a memory-mapped database, MongoDB is pretty hungry,
    178178    so actually I spent a lot of time debating whether the inability
    179     to scale down as nicely as something like SQL has with sqlite
     179    to scale down as nicely as something like SQL has with SQLite
    180180    meant that it was out.
    181181
    182182    But I decided in the end that I really want MongoDB, not for
    Chris Webber on "Why MongoDB":  
    199199
    200200
    201201    Being able to just dump media-specific information in a media_data
    202     hashtable is pretty great, and even better is having a plugin
     202    hash table is pretty great, and even better is having a plugin
    203203    system where you can just let plugins have their own entire
    204204    key-value space cleanly inside the document that doesn't interfere
    205205    with anyone else's stuff.  If we were to let plugins to deposit
  • docs/source/devel/storage.rst

    diff --git a/docs/source/devel/storage.rst b/docs/source/devel/storage.rst
    index 215f957..46e163d 100644
    a b are:  
    2121
    2222+ **public_store:** After your media goes through processing it gets
    2323  moved to the public store. This is also a StorageInterface
    24   implelementation, and is for stuff that's intended to be seen by
     24  implementation, and is for stuff that's intended to be seen by
    2525  site visitors.
    2626
    2727The workbench
    Static assets / staticdirect  
    4343~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    4444
    4545On top of all that, there is some static media that comes bundled with your
    46 application. This stuff is kept in:
     46application. This stuff is kept in ``mediagoblin/static/``.
    4747
    48    mediagoblin/static/
    49 
    50 These files are for mediagoblin base assets. Things like the CSS files,
     48These files are for MediaGoblin base assets. Things like the CSS files,
    5149logos, etc. You can mount these at whatever location is appropriate to you
    5250(see the direct_remote_path option in the config file) so if your users
    5351are keeping their static assets at http://static.mgoblin.example.org/ but
    their actual site is at http://mgoblin.example.org/, you need to be able  
    5553to get your static files in a where-it's-mounted agnostic way. There's a
    5654"staticdirector" attached to the request object. It's pretty easy to use;
    5755just look at this bit taken from the
    58 mediagoblin/templates/mediagoblin/base.html main template:
     56mediagoblin/templates/mediagoblin/base.html main template::
    5957
    6058    <link rel="stylesheet" type="text/css"
    6159        href="Template:Request.staticdirect('/css/extlib/text.css')"/>
    So, the StorageInterface!  
    7674So, the public and queue stores both use StorageInterface implementations
    7775... but what does that mean? It's not too hard.
    7876
    79 Open up:
    80 
    81     mediagoblin/storage.py
     77Open up ``mediagoblin/storage.py``.
    8278
    8379In here you'll see a couple of things. First of all, there's the
    8480StorageInterface class. What you'll see is that this is just a very simple
    also the default storage system used. As expected, this stores files  
    9591locally on your machine.
    9692
    9793There's also a CloudFileStorage system. This provides a mapping to
    98 [OpenStack's swift http://swift.openstack.org/] storage system (used by
     94[OpenStack's Swift http://swift.openstack.org/] storage system (used by
    9995RackSpace Cloud files and etc).
    10096
    10197Between these two examples you should be able to get a pretty good idea of
    10298how to write your own storage systems, for storing data across your
    103 beowulf cluster of radioactive monkey brains, whatever.
     99Beowulf cluster of radioactive monkey brains, whatever.
    104100
    105101Writing code to store stuff
    106102~~~~~~~~~~~~~~~~~~~~~~~~~~~
    https://docs.djangoproject.com/en/dev/ref/files/storage/]... with some  
    112108differences.
    113109
    114110Basically, you access files on "file paths", which aren't exactly like
    115 unix file paths, but are close. If you wanted to store a file on a path
    116 like dir1/dir2/filename.jpg you'd actually write that file path like:
     111Unix file paths, but are close. If you wanted to store a file on a path
     112like dir1/dir2/filename.jpg you'd actually write that file path like::
    117113
    118 ['dir1', 'dir2', 'filename.jpg']
     114    ['dir1', 'dir2', 'filename.jpg']
    119115
    120116This way we can be *sure* that each component is actually a component of
    121117the path that's expected... we do some filename cleaning on each component.
  • docs/source/index.rst

    diff --git a/docs/source/index.rst b/docs/source/index.rst
    index a4fd245..fbc5715 100644
    a b GNU MediaGoblin is a platform for sharing photos, video and other media  
    2020in an environment that respects our freedom and independence.
    2121
    2222This is a Free Software project. It is built by contributors for all
    23 to use and enjoy. If you're intrested in contributing, see `the wiki
     23to use and enjoy. If you're interested in contributing, see `the wiki
    2424<http://wiki.mediagoblin.org/>`_ which has pages that talk about the
    2525ways someone can contribute.
    2626
  • docs/source/pluginwriter/api.rst

    diff --git a/docs/source/pluginwriter/api.rst b/docs/source/pluginwriter/api.rst
    index a220eac..03761a3 100644
    a b can use a shortcut to get your plugin's config section::  
    8383  >>> floobie_dir = floobie_config['floobie_dir']
    8484 
    8585A tip: you have access to the `%(here)s` variable in your config,
    86 which is the directory that the user's mediagoblin config is running
     86which is the directory that the user's MediaGoblin config is running
    8787out of.  So for example, your plugin may need a "floobie" directory to
    8888store floobs in.  You could give them a reasonable default that makes
    8989use of the default `user_dev` location, but allow users to override
    it, like so::  
    9292  [plugin_spec]
    9393  floobie_dir = string(default="%(here)s/user_dev/floobs/")
    9494
    95 Note, this is relative to the user's mediagoblin config directory,
     95Note, this is relative to the user's MediaGoblin config directory,
    9696*not* your plugin directory!
    9797
    9898
    Adding static resources  
    178178-----------------------
    179179
    180180It's possible to add static resources for your plugin.  Say your
    181 plugin needs some special javascript and images... how to provide
     181plugin needs some special JavaScript and images... how to provide
    182182them?  Then how to access them?  MediaGoblin has a way!
    183183
    184184
    the MediaGoblin repository.  
    230230WTForms hooks
    231231+++++++++++++
    232232
    233 We haven't totally settled on a way to tranform wtforms form objects,
     233We haven't totally settled on a way to transform wtforms form objects,
    234234but here's one way.  In your view::
    235235
    236236  from mediagoblin.foo.forms import SomeForm
  • docs/source/pluginwriter/authhooks.rst

    diff --git a/docs/source/pluginwriter/authhooks.rst b/docs/source/pluginwriter/authhooks.rst
    index 9721d72..66d9b9d 100644
    a b This hook is called in ``mediagoblin.auth.views`` in both the ``login`` and  
    4444if :ref:`basic_auth-chapter` is not enabled, the user will be redirected to the
    4545correct login and registration views for your plugin.
    4646
    47 The code assumes that it can generate a valid url given
     47The code assumes that it can generate a valid URL given
    4848``mediagoblin.plugins.{{ your_plugin_here }}.login`` and
    4949``mediagoblin.plugins.{{ your_plugin_here }}.register``. This is only needed if
    5050you will not be using the ``login`` and ``register`` views in
    the ``stored_hash`` and return either ``True`` or ``False``.  
    8282
    8383This hook is called in ``mediagoblin.auth.tools.check_login_simple``. It is
    8484called if a user is not found and should do something that takes the same amount
    85 of time as your ``check_password`` function. This is to help prevent timining
     85of time as your ``check_password`` function. This is to help prevent timing
    8686attacks.
  • docs/source/pluginwriter/database.rst

    diff --git a/docs/source/pluginwriter/database.rst b/docs/source/pluginwriter/database.rst
    index c0698a2..90c2cee 100644
    a b Accessing Existing Data  
    2424=======================
    2525
    2626If your plugin wants to access existing data, this is quite
    27 straight forward. Just import the appropiate models and use
     27straight forward. Just import the appropriate models and use
    2828the full power of SQLAlchemy. Take a look at the (upcoming)
    2929database section in the Developer's Chapter.
    3030
    plugin's models.py and then run::  
    134134  ./bin/gmg alembic --with-plugins revision \
    135135       --head REVISION_HERE \
    136136       --autogenerate \
    137        -m "YOUR_PLUGIN_NAME: Change explaination here."
     137       -m "YOUR_PLUGIN_NAME: Change explanation here."
    138138
    139139Once again, this will dump the migration into the wrong place, so move
    140140to your plugin's migrations directory.  Open the file, adjust
    141141accordingly, and read carefully!  Now you should also test your
    142 migration with some real data.  Be sure to test it both on sqlite
    143 *AND* on postgresql!
     142migration with some real data.  Be sure to test it both on SQLite
     143*AND* on PostgreSQL!
    144144
    145145One last *very critical* note: you must never, never modify core
    146146tables with your plugin.  To do that is to put you and all your users
  • docs/source/pluginwriter/hooks.rst

    diff --git a/docs/source/pluginwriter/hooks.rst b/docs/source/pluginwriter/hooks.rst
    index 4aa062e..66fe3b4 100644
    a b What hooks are available?  
    2828This hook is used by ``add_media_to_collection``
    2929in ``mediagoblin.user_pages.lib``.
    3030It gets a ``CollectionItem`` as its argument.
    31 It's the newly created item just before getting commited.
     31It's the newly created item just before getting committed.
    3232So the item can be modified by the hook, if needed.
    3333Changing the session regarding this item is currently
    3434undefined behaviour, as the SQL Session might contain other
  • docs/source/pluginwriter/tests.rst

    diff --git a/docs/source/pluginwriter/tests.rst b/docs/source/pluginwriter/tests.rst
    index fe99688..560a889 100644
    a b Here's a brief guide to writing unit tests for plugins. However, it  
    1919isn't really ideal.  It also hasn't been well tested... yes, there's
    2020some irony there :)
    2121
    22 Some notes: we're using py.test and webtest for unit testing stuff.
     22Some notes: we're using py.test and WebTest for unit testing stuff.
    2323Keep that in mind.
    2424
    2525My suggestion is to mime the behavior of `mediagoblin/tests/` and put
    In any test module in your tests directory you can then do::  
    4444      # real code goes here
    4545      pass
    4646
    47 And you'll get a mediagoblin application wrapped in webtest passed in
     47And you'll get a MediaGoblin application wrapped in WebTest passed in
    4848to your environment.
    4949
    5050If your plugin needs to define multiple configuration setups, you can
    actually set up multiple fixtures very easily for this. You can just  
    5252set up multiple fixtures with different names that point to different
    5353configs and pass them in as that named argument.
    5454
    55 To run the tests, from mediagoblin's directory (make sure that your
    56 plugin has been added to your mediagoblin checkout's virtualenv!) do::
     55To run the tests, from MediaGoblin's directory (make sure that your
     56plugin has been added to your MediaGoblin checkout's virtualenv!) do::
    5757
    5858  ./runtests.sh /path/to/myplugin/tests/
    5959
  • docs/source/siteadmin/commandline-upload.rst

    diff --git a/docs/source/siteadmin/commandline-upload.rst b/docs/source/siteadmin/commandline-upload.rst
    index 6909831..659b58b 100644
    a b The above is an example of a very simple metadata.csv file. The batchaddmedia  
    6565script would read this and attempt to upload only two pieces of media, and would
    6666be able to automatically name them appropriately.
    6767
    68 The csv file
     68The CSV file
    6969============
    7070The location column
    7171-------------------
    7272The location column is the one column that is absolutely necessary for
    7373uploading your media. This gives a path to each piece of media you upload. This
    7474can either a path to a local file or a direct link to remote media (with the
    75 link in http format). As you can see in the example above the (fake) media was
     75link in HTTP format). As you can see in the example above the (fake) media was
    7676stored remotely on "www.example.net".
    7777
    7878Other internal nodes
    provide default information for your media entry, but as you'll see below, it's  
    8383just as easy to provide this information through the correct metadata columns.
    8484
    8585- **id** is used to identify the media entry to the user in case of an error in the batchaddmedia script.
    86 - **license** is used to set a license for your piece a media for mediagoblin's use. This must be a URI.
    87 - **title** will set the title displayed to mediagoblin users.
     86- **license** is used to set a license for your piece a media for MediaGoblin's use. This must be a URI.
     87- **title** will set the title displayed to MediaGoblin users.
    8888- **description** will set a description of your media.
    8989
    9090Metadata columns
    information of uploaded media entries.  
    106106- **dc:title** sets a title for your media entry.
    107107- **dc:description** sets a description of your media entry.
    108108
    109 If both a metadata column and an internal node for the title are provided, mediagoblin
     109If both a metadata column and an internal node for the title are provided, MediaGoblin
    110110will use the internal node as the media entry's display name. This makes it so
    111111that if you want to display a piece of media with a different title
    112112than the one provided in its metadata, you can just provide different data for
  • docs/source/siteadmin/configuration.rst

    diff --git a/docs/source/siteadmin/configuration.rst b/docs/source/siteadmin/configuration.rst
    index dd0d6cd..6b8cd22 100644
    a b paste.ini  
    3939  <http://pythonpaste.org/script/>`_).  It also sets up some
    4040  middleware that you can mostly ignore, except to configure
    4141  sessions... more on that later.  If you are adding a different
    42   Python server other than fastcgi / plain HTTP, you might configure
     42  Python server other than FastCGI / plain HTTP, you might configure
    4343  it here.  You probably won't need to change this file very much.
    4444
    4545
    4646There's one more file that you certainly won't change unless you're
    47 making coding contributions to mediagoblin, but which can be useful to
     47making coding contributions to MediaGoblin, but which can be useful to
    4848read and reference:
    4949
    5050mediagoblin/config_spec.ini
    If you use ``lazyserver.sh`` you need to change the ``paste.ini`` file::  
    128128    [app:mediagoblin]
    129129    /mgoblin_media = /var/mediagoblin/user_data
    130130
    131 If you use nginx you need to change the config::
     131If you use Nginx you need to change the config::
    132132
    133133     # Instance specific media:
    134134     location /mgoblin_media/ {
  • docs/source/siteadmin/deploying.rst

    diff --git a/docs/source/siteadmin/deploying.rst b/docs/source/siteadmin/deploying.rst
    index 47901da..80b6064 100644
    a b will take you step-by-step through setting up your own instance of MediaGoblin.  
    2525Of course, when it comes to setting up web applications like MediaGoblin,
    2626there's an almost infinite way to deploy things, so for now, we'll keep it
    2727simple with some assumptions. We recommend a setup that combines MediaGoblin +
    28 virtualenv + fastcgi + nginx on a .deb- or .rpm-based GNU/Linux distro.
     28virtualenv + FastCGI + Nginx on a .deb- or .rpm-based GNU/Linux distro.
    2929
    3030Other deployment options (e.g., deploying on FreeBSD, Arch Linux, using
    3131Apache, etc.) are possible, though! If you'd prefer a different deployment
    Configure PostgreSQL  
    9494
    9595   For medium to large deployments we recommend PostgreSQL.
    9696
    97    If you don't want/need postgres, skip this section.
     97   If you don't want/need PostgreSQL, skip this section.
    9898
    9999These are the packages needed for Debian Jessie (stable)::
    100100
    These are the packages needed for an RPM-based system::  
    105105    sudo yum install postgresql postgresql-server python-psycopg2
    106106
    107107An rpm-based system also requires that you initialize and start the
    108 PostgresSQL database with a few commands. The following commands are
     108PostgreSQL database with a few commands. The following commands are
    109109not needed on a Debian-based platform, however::
    110110
    111111    sudo /usr/bin/postgresql-setup initdb
    not needed on a Debian-based platform, however::  
    113113    sudo systemctl start postgresql
    114114
    115115The installation process will create a new *system* user named ``postgres``,
    116 which will have privilegies sufficient to manage the database. We will create a
    117 new database user with restricted privilegies and a new database owned by our
     116which will have privileges sufficient to manage the database. We will create a
     117new database user with restricted privileges and a new database owned by our
    118118restricted database user for our MediaGoblin instance.
    119119
    120120In this example, the database user will be ``mediagoblin`` and the database
    Create a MediaGoblin Directory  
    200200You should create a working directory for MediaGoblin. This document
    201201assumes your local git repository will be located at
    202202``/srv/mediagoblin.example.org/mediagoblin/``.
    203 Substitute your prefered local deployment path as needed.
     203Substitute your preferred local deployment path as needed.
    204204
    205205Setting up the working directory requires that we first create the directory
    206 with elevated priviledges, and then assign ownership of the directory
     206with elevated privileges, and then assign ownership of the directory
    207207to the unprivileged system account.
    208208
    209209To do this, enter the following command, changing the defaults to suit your
    Then edit mediagoblin_local.ini:  
    325325   the sender for system-generated emails
    326326 - Edit ``direct_remote_path``, ``base_dir``, and ``base_url`` if
    327327   your mediagoblin directory is not the root directory of your
    328    vhost.
     328   site.
    329329
    330330
    331331Configure MediaGoblin to use the PostgreSQL database
    332332~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    333333
    334 If you are using postgres, edit the ``[mediagoblin]`` section in your
     334If you are using PostgreSQL, edit the ``[mediagoblin]`` section in your
    335335``mediagoblin_local.ini`` and put in::
    336336
    337337    sql_engine = postgresql:///mediagoblin
    test the deployment with the following command::  
    361361You should be able to connect to the machine on port 6543 in your
    362362browser to confirm that the service is operable.
    363363
    364 The next series of commands will need to be run as a priviledged user. Type
     364The next series of commands will need to be run as a privileged user. Type
    365365exit to return to the root/sudo account.::
    366366
    367367    exit
    exit to return to the root/sudo account.::  
    372372FastCGI and nginx
    373373~~~~~~~~~~~~~~~~~
    374374
    375 This configuration example will use nginx, however, you may
     375This configuration example will use Nginx, however, you may
    376376use any webserver of your choice as long as it supports the FastCGI
    377 protocol. If you do not already have a web server, consider nginx, as
     377protocol. If you do not already have a web server, consider Nginx, as
    378378the configuration files may be more clear than the
    379379alternatives.
    380380
    following commands::  
    397397    sudo systemctl enable nginx
    398398
    399399You can modify these commands and locations depending on your preferences and
    400 the existing configuration of your nginx instance. The contents of
     400the existing configuration of your Nginx instance. The contents of
    401401this ``nginx.conf`` file should be modeled on the following::
    402402
    403403    server {
    this ``nginx.conf`` file should be modeled on the following::  
    457457        fastcgi_pass 127.0.0.1:26543;
    458458        include /etc/nginx/fastcgi_params;
    459459
    460         # our understanding vs nginx's handling of script_name vs
     460        # our understanding vs Nginx's handling of script_name vs
    461461        # path_info don't match :)
    462462        fastcgi_param PATH_INFO $fastcgi_script_name;
    463463        fastcgi_param SCRIPT_NAME "";
    test to ensure that this configuration works::  
    481481
    482482    nginx -t
    483483
    484 If you encounter any errors, review your nginx configuration files, and try to
    485 resolve them. If you do not encounter any errors, you can start your nginx
     484If you encounter any errors, review your Nginx configuration files, and try to
     485resolve them. If you do not encounter any errors, you can start your Nginx
    486486server with one of the following commands (depending on your environment)::
    487487
    488488    sudo /etc/init.d/nginx restart
    a) Disable registration on your instance and just make  
    529529     [mediagoblin]
    530530     allow_registration = false
    531531
    532 b) Enable a captcha plugin.  But unfortunately, though some captcha
     532b) Enable a CAPTCHA plugin.  But unfortunately, though some CAPTCHA
    533533   plugins exist, for various reasons we do not have any general
    534534   recommendations we can make at this point.
    535535
  • docs/source/siteadmin/media-types.rst

    diff --git a/docs/source/siteadmin/media-types.rst b/docs/source/siteadmin/media-types.rst
    index 3877063..146e1aa 100644
    a b Media Types  
    1919
    2020In the future, there will be all sorts of media types you can enable,
    2121but in the meanwhile there are six additional media types: video, audio,
    22 raw image, ascii art, STL/3d models, PDF and Document.
     22raw image, ASCII art, STL/3D models, PDF and Document.
    2323
    2424First, you should probably read ":doc:`configuration`" to make sure
    25 you know how to modify the mediagoblin config file.
     25you know how to modify the MediaGoblin config file.
    2626
    2727Enabling Media Types
    2828====================
    Enabling Media Types  
    3030.. note::
    3131    Media types are now plugins
    3232
    33 Media types are enabled in your mediagoblin configuration file, typically it is
     33Media types are enabled in your MediaGoblin configuration file, typically it is
    3434created by copying ``mediagoblin.ini`` to ``mediagoblin_local.ini`` and then
    3535applying your changes to ``mediagoblin_local.ini``. If you don't already have a
    3636``mediagoblin_local.ini``, create one in the way described.
    instance the ``video`` media type configuration can be found in  
    8181Video
    8282=====
    8383
    84 To enable video, first install gstreamer and the python-gstreamer
    85 bindings (as well as whatever gstremaer extensions you want,
     84To enable video, first install GStreamer and the python-gstreamer
     85bindings (as well as whatever GStreamer extensions you want,
    8686good/bad/ugly).  On Debianoid systems
    8787
    8888.. code-block:: bash
    Run  
    107107
    108108    ./bin/gmg dbupdate
    109109
    110 Now you should be able to submit videos, and mediagoblin should
     110Now you should be able to submit videos, and MediaGoblin should
    111111transcode them.
    112112
    113113.. note::
    transcode them.  
    121121Audio
    122122=====
    123123
    124 To enable audio, install the gstreamer and python-gstreamer bindings (as well
    125 as whatever gstreamer plugins you want, good/bad/ugly), scipy and numpy are
     124To enable audio, install the GStreamer and python-gstreamer bindings (as well
     125as whatever GStreamer plugins you want, good/bad/ugly), SciPy and NumPy are
    126126also needed for the audio spectrograms.
    127127To install these on Debianoid systems, run::
    128128
    Run  
    168168
    169169    ./bin/gmg dbupdate
    170170
    171 Now you should be able to submit raw images, and mediagoblin should
     171Now you should be able to submit raw images, and MediaGoblin should
    172172extract the JPEG preview from them.
    173173
    174174
    175 Ascii art
     175ASCII art
    176176=========
    177177
    178 To enable ascii art support, first install the
     178To enable ASCII art support, first install the
    179179`chardet <http://pypi.python.org/pypi/chardet>`_
    180 library, which is necessary for creating thumbnails of ascii art
     180library, which is necessary for creating thumbnails of ASCII art
    181181
    182182.. code-block:: bash
    183183
    Run  
    194194
    195195    ./bin/gmg dbupdate
    196196
    197 Now any .txt file you uploaded will be processed as ascii art!
     197Now any .txt file you uploaded will be processed as ASCII art!
    198198
    199199
    200 STL / 3d model support
     200STL / 3D model support
    201201======================
    202202
    203 To enable the "STL" 3d model support plugin, first make sure you have
    204 a recentish `Blender <http://blender.org>`_ installed and available on
     203To enable the "STL" 3D model support plugin, first make sure you have
     204a recent `Blender <http://blender.org>`_ installed and available on
    205205your execution path.  This feature has been tested with Blender 2.63.
    206206It may work on some earlier versions, but that is not guaranteed (and
    207207is surely not to work prior to Blender 2.5X).
    PDF and Document  
    223223
    224224To enable the "PDF and Document" support plugin, you need:
    225225
    226 1. pdftocairo and pdfinfo for pdf only support.
     2261. pdftocairo and pdfinfo for PDF only support.
    227227
    228 2. unoconv with headless support to support converting libreoffice supported
     2282. unoconv with headless support to support converting LibreOffice supported
    229229   documents as well, such as doc/ppt/xls/odf/odg/odp and more.
    230230   For the full list see mediagoblin/media_types/pdf/processing.py,
    231231   unoconv_supported.
    To install this on Fedora:  
    238238
    239239    sudo yum install -y poppler-utils unoconv libreoffice-headless
    240240
    241 Note: You can leave out unoconv and libreoffice-headless if you want only pdf
     241Note: You can leave out unoconv and libreoffice-headless if you want only PDF
    242242support. This will result in a much smaller list of dependencies.
    243243
    244244pdf.js relies on git submodules, so be sure you have fetched them:
    Blog (HIGHLY EXPERIMENTAL)  
    271271MediaGoblin has a blog media type, which you might notice by looking
    272272through the docs!  However, it is *highly experimental*.  We have not
    273273security reviewed this, and it acts in a way that is not like normal
    274 blogs (the blogposts are themselves media types!).
     274blogs (the blog posts are themselves media types!).
    275275
    276276So you can play with this, but it is not necessarily recommended yet
    277277for production use! :)
  • docs/source/siteadmin/plugins.rst

    diff --git a/docs/source/siteadmin/plugins.rst b/docs/source/siteadmin/plugins.rst
    index 67c8bad..8682b0c 100644
    a b Check the plugin's documentation for what configuration options are  
    111111available.
    112112
    113113Once you've set up your plugin, you should be sure to update the
    114 database to accomodate the new plugins::
     114database to accommodate the new plugins::
    115115
    116116  ./bin/gmg dbupdate
    117117
    Deactivating plugins  
    121121
    122122You should be aware that once you enable a plugin, deactivating it
    123123might be a bit tricky, for migrations reasons.  In the future we may
    124 produce better tooling to accomodate this.  In short, you will need to
     124produce better tooling to accommodate this.  In short, you will need to
    125125do a bit of database surgery by:
    126126
    127127- Removing all tables and indexes installed by the plugin
  • docs/source/siteadmin/production-deployments.rst

    diff --git a/docs/source/siteadmin/production-deployments.rst b/docs/source/siteadmin/production-deployments.rst
    index b741721..ee91557 100644
    a b Deploy with paste  
    2424
    2525The MediaGoblin WSGI application instance you get with ``./lazyserver.sh`` is
    2626not ideal for a production MediaGoblin deployment. Ideally, you should be able
    27 to use a systemd service file or an init script to launch and restart the
     27to use a Systemd service file or an init script to launch and restart the
    2828MediaGoblin process.
    2929
    30 We will explore setting up MediaGoblin systemd service files and init scripts,
     30We will explore setting up MediaGoblin Systemd service files and init scripts,
    3131but first we need to create the directory that will store the MediaGoblin logs.
    3232
    3333
    proper permissions::  
    4545
    4646.. _systemd-service-files:
    4747
    48 Use systemd service files
     48Use Systemd service files
    4949-------------------------
    5050
    51 If your operating system uses systemd, you can use systemd ``service files``
     51If your operating system uses Systemd, you can use Systemd ``service files``
    5252to manage both the Celery and Paste processes. Place the following service
    5353files in the ``/etc/systemd/system/`` directory.
    5454
    modify it to suit your environment's setup:  
    6262    # If using Fedora/CentOS/Red Hat, mkdir and chown are located in /usr/bin/mkdir and /usr/bin/chown, respectively.
    6363
    6464    [Unit]
    65     Description=Mediagoblin Celeryd
     65    Description=MediaGoblin Celeryd
    6666
    6767    [Service]
    6868    User=mediagoblin
    processes again.  
    156156Use an init script
    157157------------------
    158158
    159 If your system does not use systemd, you can use the following command as the
     159If your system does not use Systemd, you can use the following command as the
    160160basis for an init script:
    161161
    162162.. code-block:: bash
    To launch Celery separately from the MediaGoblin WSGI application:  
    244244
    245245        CELERY_CONFIG_MODULE=mediagoblin.init.celery.from_celery ./bin/celeryd
    246246
    247 If you use our example systemd ``service files``, Celery will be set to the
     247If you use our example Systemd ``service files``, Celery will be set to the
    248248"CELERY_ALWAYS_EAGER=false" value by default. This will provide your users
    249249with the best user experience, as all media processing will be done in the
    250250background.
  • docs/source/siteadmin/relnotes.rst

    diff --git a/docs/source/siteadmin/relnotes.rst b/docs/source/siteadmin/relnotes.rst
    index 584fd8c..f32ca79 100644
    a b carefully, or at least skim over it.  
    2727   running migrations!  That way if something goes wrong, we can fix
    2828   things!
    2929
    30    And be sure to shut down your current mediagoblin/celery processes
     30   And be sure to shut down your current MediaGoblin/Celery processes
    3131   before upgrading!
    3232
    3333.. note::
    prior upgrade guides!  
    162162Additionally:
    163163
    164164- Are you using audio or video media types?  In that case, you'll need
    165   to update your Gstreamer instance to 1.0.
     165  to update your GStreamer instance to 1.0.
    166166- The Pump API needs some data passed through to the WSGI application,
    167   so if you are using apache with mod_wsgi you should be sure to make
     167  so if you are using Apache with mod_wsgi you should be sure to make
    168168  sure to add "WSGIPassAuthorization On" to your config.  (Using the
    169   default MediaGoblin documnetation and config, things should work
     169  default MediaGoblin documentation and config, things should work
    170170  as-is.)
    171171
    172172
    Additionally:  
    181181- Clearer documentation on permissions and installation
    182182- Switched from Transifex, which had become proprietary, to an
    183183  instance of Pootle hosted for GNU
    184 - Moved to Gstreamer 1.0!  This also adds a new thumbnailer which
     184- Moved to GStreamer 1.0!  This also adds a new thumbnailer which
    185185  gives much better results in
    186 - Removed terrible check-javascript-dependencies-into-your-application
     186- Removed terrible check-JavaScript-dependencies-into-your-application
    187187  setup, now using Bower for dependency tracking
    188188- Put some scaffolding in place for Alembic, which will be used for
    189   future mitration work
     189  future migration work
    190190- Automatically create a fresh mediagoblin.ini from
    191191  mediagoblin.ini.example
    192192- no more need for mediagoblin_local.ini (though it's still supported)
    Additionally:  
    199199This is a purely bugfix release.  Important changes happened since
    2002000.7.0; if running MediaGoblin 0.7.0, an upgrade is highly recommended;
    201201see below.  This release is especially useful if you have been running
    202 postgres and have been receiving seemingly random database transaction
     202PostgreSQL and have been receiving seemingly random database transaction
    203203errors.
    204204
    205205**Do this to upgrade**
    That's it, probably! If you run into problems, don't hesitate to  
    220220  database transaction issues.  (These should be back by 0.8.0.)
    221221
    222222  + Disabled the "checking if the database is up to date at
    223     mediagoblin startup" feature
     223    MediaGoblin startup" feature
    224224  + Disabled the garbage collection stuff by default for now
    225     (You can set garbage_collection under the config mediagoblin
     225    (You can set garbage_collection under the config MediaGoblin
    226226    header to something other than 0 to turn it back on for now, but
    227227    it's potentially risky for the moment.)
    228228
    That's it, probably! If you run into problems, don't hesitate to  
    231231- Added support for cr2 files in raw_image media type
    232232- Added a description to setup.py
    233233- Collection and CollectionItem objects now have nicer in-python representations
    234 - Fixed unicode error with raw image mediatype logging
     234- Fixed Unicode error with raw image mediatype logging
    235235- Fixed #945 "Host metadata does not confirm to spec (/.well-known/meta-data)"
    236236
    237237  + Add XRD+XML formatting for /.well-known/host-meta
    That's it, probably! If you run into problems, don't hesitate to  
    268268  (which will be the foundation for MediaGoblin's federation)
    269269- New theme: Sandy 70s Speedboat!
    270270
    271 - Metadata features!  We also now have a json-ld context.
     271- Metadata features!  We also now have a JSON-LD context.
    272272
    273273- Many improvements for archival institutions, including metadata
    274274  support and featuring items on the homepage.  With the (new!)
    That's it, probably! If you run into problems, don't hesitate to  
    283283  uploading many files at once.  This is aimed to be useful for
    284284  archival institutions and groups where there is an already existing
    285285  and large set of available media that needs to be included.
    286 - Speaking of, the call to postgres in the makefile is fixed.
     286- Speaking of, the call to PostgreSQL in the makefile is fixed.
    287287- We have a new, generic media-page context hook that allows for
    288288  adding context depending on the type of media.
    289289- Tired of video thumbnails breaking during processing all the time?
    That's it, probably! If you run into problems, don't hesitate to  
    310310  data.  It's basically the same thing as before, but packaged
    311311  separately from MediaGoblin.
    312312- Many improvements to internationalization.  Also (still rudimentary,
    313   but existant!) RTL language support!
     313  but existent!) RTL language support!
    314314
    315315**Known issues:**
    316  - The host-meta is now json by default; in the spec it should be xml by
     316 - The host-meta is now JSON by default; in the spec it should be XML by
    317317   default.  We have done this because of compatibility with the pump
    318318   API.  We are checking with upstream to see if there is a way to
    319319   resolve this discrepancy.
    nickname "Lore of the Admin"!  
    360360- New tools to control how much users can upload, both as a general
    361361  user limit, or per file.
    362362
    363   You can set this with the following options in your mediagoblin
     363  You can set this with the following options in your MediaGoblin
    364364  config file: `upload_limit` and `max_file_size`.  Both are integers
    365365  in megabytes.
    366366
    nickname "Lore of the Admin"!  
    368368  upload too, though an interface for this is not yet exposed.  See
    369369  the "uploaded" field on the core__users table.
    370370
    371 - MediaGoblin now contains an authentication plugin for ldap!  You
     371- MediaGoblin now contains an authentication plugin for LDAP!  You
    372372  can turn on the mediagoblin.plugins.ldap plugin to make use of
    373373  this.  See the documentation: :ref:`ldap-plugin`
    374374
    v0.5.1 is a bugfix release... the steps are the same as for 0.5.1.  
    423423=====
    424424
    425425**NOTE:** If using the API is important to you, we're in a state of
    426 ransition towards a new API via the Pump API.  As such, though the old
    427 API still probably works, some changes have happened to the way oauth
     426transition towards a new API via the Pump API.  As such, though the old
     427API still probably works, some changes have happened to the way OAuth
    428428works to make it more Pump-compatible.  If you're heavily using
    429429clients using the old API, you may wish to hold off on upgrading for
    430430now.  Otherwise, jump in and have fun! :)
    If you run into problems, don't hesitate to  
    469469* Comment preview!
    470470* Users now have the ability to change their email associated with their
    471471  account.
    472 * New oauth code as we move closer to federation support.
    473 * Experimental pyconfigure support for GNU-style configue and makefile
     472* New OAuth code as we move closer to federation support.
     473* Experimental pyconfigure support for GNU-style configure and makefile
    474474  deployment.
    475475* Database foundations! You can now pre-populate the database models.
    476476* Way faster unit test run-time via in-memory database.
    477477* All mongokit stuff has been cleaned up.
    478 * Fixes for non-ascii filenames.
     478* Fixes for non-ASCII filenames.
    479479* The option to stay logged in.
    480 * Mediagoblin has been upgraded to use the latest `celery <http://celeryproject.org/>`_
     480* MediaGoblin has been upgraded to use the latest `Celery <http://celeryproject.org/>`_
    481481  version.
    482482* You can now add jinja2 extensions to your config file to use in custom
    483483  templates.
    484484* Fixed video permission issues.
    485 * Mediagoblin docs are now hosted with multiple versions.
    486 * We removed redundent tooltips from the STL media display.
     485* MediaGoblin docs are now hosted with multiple versions.
     486* We removed redundant tooltips from the STL media display.
    487487* We are now using itsdangerous for verification tokens.
    488488
    489489
    fix in the newly released document support which prevented the  
    495495"conversion via libreoffice" feature.
    496496
    497497If you were running 0.4.0 you can upgrade to v0.4.1 via a simple
    498 switch and restarting mediagoblin/celery with no other actions.
     498switch and restarting MediaGoblin/Celery with no other actions.
    499499
    500500Otherwise, follow 0.4.0 instructions.
    501501
    Otherwise, follow 0.4.0 instructions.  
    514514   Keep on reading to hear more about new plugin features.
    5155154. If you want to take advantage of new plugins that have statically
    516516   served assets, you are going to need to add the new "plugin_static"
    517    section to your nginx config.  Basically the following for nginx::
     517   section to your Nginx config.  Basically the following for Nginx::
    518518
    519519     # Plugin static files (usually symlinked in)
    520520     location /plugin_static/ {
    please note the following:  
    557557  date of an image when available (available as the
    558558  "original_date_visible" variable)
    559559* Moved unit testing system from nosetests to py.test so we can better
    560   handle issues with sqlalchemy exploding with different database
     560  handle issues with SQLAlchemy exploding with different database
    561561  configurations.  Long story :)
    562562* You can now disable the ability to post comments.
    563563* Tags now can be up to length 255 characters by default.
    you run into problems, don't hesitate to  
    587587
    588588* New dropdown menu for accessing various features.
    589589
    590 * Significantly improved URL generation.  Now mediagoblin won't give
     590* Significantly improved URL generation.  Now MediaGoblin won't give
    591591  up on making a slug if it looks like there will be a duplicate;
    592592  it'll try extra hard to generate a meaningful one instead.
    593593
    you run into problems, don't hesitate to  
    595595  linking to a slug; /u/username/m/id:35/ is the kind of reference we
    596596  now use to linking to entries with ids.  However, old links with
    597597  entries that linked to ids should work just fine with our migration.
    598   The only urls that might break in this release are ones using colons
     598  The only URLs that might break in this release are ones using colons
    599599  or equal signs.
    600600
    601601* New template hooks for plugin authoring.
    602602
    603603* As a demonstration of new template hooks for plugin authoring,
    604   openstreetmap support now moved to a plugin!
     604  OpenStreetMap support now moved to a plugin!
    605605
    606606* Method to add media to collections switched from icon of paperclip
    607607  to button with "add to collection" text.
    you run into problems, don't hesitate to  
    612612  waste gobs of memory.
    613613
    614614* Video transcoding now optional for videos that meet certain
    615   criteria.  By default, MediaGoblin will not transcode webm videos
     615  criteria.  By default, MediaGoblin will not transcode WebM videos
    616616  that are smaller in resolution than the MediaGoblin defaults, and
    617   MediaGoblin can also be configured to allow theora files to not be
     617  MediaGoblin can also be configured to allow Theora files to not be
    618618  transcoded as well.
    619619
    620620* Per-user license preference option; always want your uploads to be
    MongoDB-based MediaGoblin instance to the newer SQL-based system.  
    644644
    645645**Do this to upgrade**
    646646
    647     # directory of your mediagoblin install
     647    # directory of your MediaGoblin install
    648648    cd /srv/mediagoblin.example.org
    649649
    650650    # copy source for this release
    MongoDB-based MediaGoblin instance to the newer SQL-based system.  
    664664* **3d model support!**
    665665
    666666  You can now upload STL and OBJ files and display them in
    667   MediaGoblin.  Requires a recent-ish Blender; for details see:
     667  MediaGoblin.  Requires a recent Blender; for details see:
    668668  :ref:`deploying-chapter`
    669669
    670670* **trim_whitespace**
    671671
    672672  We bundle the optional plugin trim_whitespace which reduces the size
    673   of the delivered html output by reducing redundant whitespace.
     673  of the delivered HTML output by reducing redundant whitespace.
    674674
    675675  See :ref:`core-plugin-section` for plugin documentation
    676676
    MongoDB-based MediaGoblin instance to the newer SQL-based system.  
    684684  and `OMGMG <https://github.com/jwandborg/omgmg>`_, an example of
    685685  a web application hooking up to the API.
    686686
    687   This is a plugin, so you have to enable it in your mediagoblin
     687  This is a plugin, so you have to enable it in your MediaGoblin
    688688  config file by adding a section under [plugins] like::
    689689
    690690    [plugins]
    MongoDB-based MediaGoblin instance to the newer SQL-based system.  
    697697
    698698  For applications that use OAuth to connect to the API.
    699699
    700   This is a plugin, so you have to enable it in your mediagoblin
     700  This is a plugin, so you have to enable it in your MediaGoblin
    701701  config file by adding a section under [plugins] like::
    702702
    703703    [plugins]
    MongoDB-based MediaGoblin instance to the newer SQL-based system.  
    717717
    718718  Geolocation is also now on by default.
    719719
    720 * **Miscelaneous visual improvements**
     720* **Miscellaneous visual improvements**
    721721
    722722  We've made a number of small visual improvements including newer and
    723723  nicer looking thumbnails and improved checkbox placement.
    MongoDB-based MediaGoblin instance to the newer SQL-based system.  
    7327321. Make sure to run ``bin/gmg dbuptdate`` after upgrading.
    733733
    7347342. If you set up your server config with an older version of
    735    mediagoblin and the mediagoblin docs, it's possible you don't
     735   MediaGoblin and the MediaGoblin docs, it's possible you don't
    736736   have the "theme static files" alias, so double check to make
    737737   sure that section is there if you are having problems.
    738738
  • docs/source/siteadmin/theming.rst

    diff --git a/docs/source/siteadmin/theming.rst b/docs/source/siteadmin/theming.rst
    index 11ae387..9c01a5b 100644
    a b want to install this theme! Don't worry, it's fairly painless.  
    7373Set up your webserver to serve theme assets
    7474-------------------------------------------
    7575
    76 If you followed the nginx setup example in :ref:`webserver-config` you
     76If you followed the Nginx setup example in :ref:`webserver-config` you
    7777should already have theme asset setup.  However, if you set up your
    78 server config with an older version of mediagoblin and the mediagoblin
     78server config with an older version of MediaGoblin and the MediaGoblin
    7979docs, it's possible you don't have the "theme static files" alias, so
    8080double check to make sure that section is there if you are having
    8181problems.
    Other variables you may consider setting:  
    103103
    104104`theme_web_path`
    105105    When theme-specific assets are specified, this is where MediaGoblin
    106     will set the urls.  By default this is ``"/theme_static/"`` so in
     106    will set the URLs.  By default this is ``"/theme_static/"`` so in
    107107    the case that your theme was trying to access its file
    108108    ``"images/shiny_button.png"`` MediaGoblin would link
    109109    to ``/theme_static/images/shiny_button.png``.
    if necessary)::  
    136136    |  |  |- im_a_hedgehog.png  # hedgehog-containing image used by theme
    137137    |  |  '- custom_logo.png    # your theme's custom logo
    138138    |  '- css/
    139     |     '- hedgehog.css       # your site's hedgehog-specific css
     139    |     '- hedgehog.css       # your site's hedgehog-specific CSS
    140140    |- README.txt               # Optionally, a readme file (not required)
    141141    |- AGPLv3.txt               # AGPL license file for your theme. (good practice)
    142142    '- CC0_1.0.txt              # CC0 1.0 legalcode for the assets [if appropriate!]
    Only a few things need to go in here::  
    164164    [theme]
    165165    name = Hedgehog-ification
    166166    description = For hedgehog lovers ONLY
    167     licensing = AGPLv3 or later templates; assets (images/css) waived under CC0 1.0
     167    licensing = AGPLv3 or later templates; assets (images/CSS) waived under CC0 1.0
    168168
    169169The name and description fields here are to give users an idea of what
    170170your theme is about.  For the moment, we don't have any listing
    You should include AGPLv3.txt with your theme as this is required for  
    232232the assets.  You can copy this from ``mediagoblin/licenses/``.
    233233
    234234In the above example, we also use CC0 to waive our copyrights to
    235 images and css, so we also included CC0_1.0.txt
     235images and CSS, so we also included CC0_1.0.txt
    236236
    237237
    238238A README.txt file
    Simple theming by adding CSS  
    247247----------------------------
    248248
    249249Many themes won't require anything other than the ability to override
    250 some of MediaGoblin's core css.  Thankfully, doing so is easy if you
     250some of MediaGoblin's core CSS.  Thankfully, doing so is easy if you
    251251combine the above steps!
    252252
    253253In your theme, do the following (make sure you make the necessary
    Great, now open that file and add something like this at the end::  
    260260    <link rel="stylesheet" type="text/css"
    261261          href="{{ request.staticdirect('/css/theme.css', 'theme') }}"/>
    262262
    263 You can name the css file whatever you like.  Now make the directory
     263You can name the CSS file whatever you like.  Now make the directory
    264264for ``assets/css/`` and add the file ``assets/css/theme.css``.
    265265
    266266You can now put custom CSS files in here and any CSS you add will
  • mediagoblin/plugins/basic_auth/README.rst

    diff --git a/mediagoblin/plugins/basic_auth/README.rst b/mediagoblin/plugins/basic_auth/README.rst
    index 82f247e..87a7b16 100644
    a b  
    55===================
    66
    77The basic_auth plugin is enabled by default in mediagoblin.ini. This plugin
    8 provides basic username and password authentication for GNU Mediagoblin.
     8provides basic username and password authentication for GNU MediaGoblin.
    99
    1010This plugin can be enabled alongside :ref:`openid-chapter` and
    1111:ref:`persona-chapter`.
  • mediagoblin/plugins/flatpagesfile/README.rst

    diff --git a/mediagoblin/plugins/flatpagesfile/README.rst b/mediagoblin/plugins/flatpagesfile/README.rst
    index 59cd621..0354a46 100644
    a b Examples: ``flatpages-about``, ``about-view``, ``contact-view``, ...  
    5757
    5858The value has two parts separated by commas:
    5959
    60 1. **route path**: This is the url that this route matches.
     601. **route path**: This is the URL that this route matches.
    6161
    6262   Examples: ``/about``, ``/contact``, ``/pages/about``, ...
    6363
    The value has two parts separated by commas:  
    7474
    7575      For example: ``'/siteadmin/{adminname:\w+}'``
    7676
    77 2. **template**: The template to use for this url. The template is in
     772. **template**: The template to use for this URL. The template is in
    7878   the flatpagesfile template directory, so you just need to specify
    7979   the file name.
    8080
    template::  
    139139Recipes
    140140=======
    141141
    142 Url variables
     142URL variables
    143143-------------
    144144
    145 You can handle urls like ``/about/{name}`` and access the name that's
     145You can handle URLs like ``/about/{name}`` and access the name that's
    146146passed in in the template.
    147147
    148148Sample route::
  • mediagoblin/plugins/ldap/README.rst

    diff --git a/mediagoblin/plugins/ldap/README.rst b/mediagoblin/plugins/ldap/README.rst
    index ea9a34b..049b5c4 100644
    a b  
    1414.. _ldap-plugin:
    1515
    1616=============
    17  ldap plugin
     17 LDAP plugin
    1818=============
    1919
    2020.. Warning::
    2121   This plugin is not compatible with the other authentication plugins.
    2222
    23 This plugin allow your GNU Mediagoblin instance to authenticate against an
     23This plugin allow your GNU MediaGoblin instance to authenticate against an
    2424LDAP server.
    2525
    26 Set up the ldap plugin
     26Set up the LDAP plugin
    2727======================
    2828
    29291. Install the ``python-ldap`` package.
    Set up the ldap plugin  
    3232
    3333    [[mediagoblin.plugins.ldap]]
    3434
    35 Configuring the ldap plugin
     35Configuring the LDAP plugin
    3636===========================
    3737
    38 This plugin allows you to use multiple ldap servers for authentication.
     38This plugin allows you to use multiple LDAP servers for authentication.
    3939
    4040In order to configure a server, add the following to you MediaGoblin .ini file
    41 under the ldap plugin::
     41under the LDAP plugin::
    4242
    4343    [[mediagoblin.plugins.ldap]]
    4444    [[[server1]]]
    under the ldap plugin::  
    5050Make any necessary changes to the above to work with your sever. Make sure
    5151``{username}`` is where the username should be in LDAP_USER_DN_TEMPLATE.
    5252   
    53 If you would like to fetch the users email from the ldap server upon account
     53If you would like to fetch the users email from the LDAP server upon account
    5454registration, add ``LDAP_SEARCH_BASE = 'ou=users,dc=testathon,dc=net'`` and
    5555``EMAIL_SEARCH_FIELD = 'mail'`` under you server configuration in your
    5656MediaGoblin .ini file.
    5757
    5858.. Warning::
    5959   By default, this plugin provides no encryption when communicating with the
    60    ldap servers. If you would like to use an SSL connection, change
    61    LDAP_SERVER_URI to use ``ldaps://`` and whichever port you use. Default ldap
     60   LDAP servers. If you would like to use an SSL connection, change
     61   LDAP_SERVER_URI to use ``ldaps://`` and whichever port you use. Default LDAP
    6262   port for SSL connections is 636. If you would like to use a TLS connection,
    6363   add ``LDAP_START_TLS = 'true'`` under your server configuration in your
    6464   MediaGoblin .ini file.
  • mediagoblin/plugins/openid/README.rst

    diff --git a/mediagoblin/plugins/openid/README.rst b/mediagoblin/plugins/openid/README.rst
    index 870a2b5..1a77733 100644
    a b  
    11.. _openid-chapter:
    22
    33===================
    4  openid plugin
     4 OpenID plugin
    55===================
    66
    7 The openid plugin allows user to login to your GNU Mediagoblin instance using
    8 their openid url.
     7The OpenID plugin allows user to login to your GNU MediaGoblin instance using
     8their OpenID URL.
    99
    1010This plugin can be enabled alongside :ref:`basic_auth-chapter` and
    1111:ref:`persona-chapter`.
    1212
    1313.. note::
    14     When :ref:`basic_auth-chapter` is enabled alongside this openid plugin, and
    15     a user creates an account using their openid. If they would like to add a
     14    When :ref:`basic_auth-chapter` is enabled alongside this OpenID plugin, and
     15    a user creates an account using their OpenID. If they would like to add a
    1616    password to their account, they can use the forgot password feature to do
    1717    so.
    1818
    1919
    20 Set up the openid plugin
     20Set up the OpenID plugin
    2121============================
    2222
    23231. Install the ``python-openid`` package.
  • mediagoblin/plugins/trim_whitespace/README.rst

    diff --git a/mediagoblin/plugins/trim_whitespace/README.rst b/mediagoblin/plugins/trim_whitespace/README.rst
    index db9a0c5..d83af06 100644
    a b  
    22 Trim whitespace plugin
    33=======================
    44
    5 Mediagoblin templates are written with 80 char limit for better
     5MediaGoblin templates are written with 80 char limit for better
    66readability. However that means that the HTML output is very verbose
    77containing *lots* of whitespace. This plugin inserts a middleware that
    88filters out whitespace from the returned HTML in the ``Response()``