This is relevant for fcgi:
Some servers (cherokee for example) put "HTTP":"off" in the
environ. And the following code in urlgen breaks on this:
if environ.get('HTTPS') or environ.get('wsgi.url_scheme') == 'https' \
or environ.get('HTTP_X_FORWARDED_PROTO') == 'https':
hostinfo['protocol'] = 'https'
workaround is to remove HTTPS:off from the environ.
When running mediagoblin in a sub path on a web server,
most things inside mediagoblin need the "inside path", but
when generating URLs for the webbrowser, full paths are
needed.
urlgen and routes already do that.
Some (mostly pagination and login) need the URL of the
current page. They used request.path_info. But this is the
"inside" path, not the full.
So now there is request.full_path and its used in various
places.
* Removed trailing whitespace
* Line length < 80 where possible
* Honor conventions on number of blank lines
* Honor conventions about spaces around :, =
Factoring out this one should be the last one needed to
rewrite the celery setup. The idea is to not setup the
whole app, but just call a bunch of individual setup_*
functions and be done.
Setting up the database now involves checking the
migrations status and setting up the globals.
Moved all of that into init/__init__.py:setup_database().
This is a huge change! This means several things.
- From the python point of view, launching the application is a heck
of a lot cleaner. You just need to pass in the config file path to
MediaGoblinApp's __init__() and whether or not this funtion should
setup celery and you're good.
- There are now two separate config files, separating the server
setup from the application setup.
- server.ini: the paste deploy config file, which configures the
applications and server setup but *NOT* the mediagoblin application
itself.
- mediagoblin.ini: where you configure mediagoblin (and possibly celery)
- Launching the application is now different. Instead of:
./bin/paster serve mediagoblin.ini --reload
We launch like:
./bin/paster serve server.ini --reload
I needed to split the db connection/opening into open.py,
due to an import loop:
- util.py needs db/util.py:ObjectId
- db/util.py would need db/models.py
- db/models.py needs util.py:slugify
The database is a central point of interest/discussion.
Represent that by its own directory.
This will surely become more interesting when we have
migrations for example.