Hi all,
Just quick heads-up about what I'm spending my idle time doing at EuroPython
2010. I've begun work on the blueprint
https://blueprints.launchpad.net/nav/+spec/unified-source-tree , which was
proposed by Kristian about a year ago.
The blueprint is spot-on: As we've managed to reduce the number of programming
languages involved in NAV, and as we are introducing more testing, having the
subsystem structure in the the source code tree sucks. Basically, all the code
that's left in the subsystem directory is Python code, and most of it is
installed into the same package hierarchy. This means it makes no sense to
split the source up into multiple "sub-project" directories.
So here's what I've done so far:
I've taken everything out of the subsystem directory and dispersed it into a
new layout (as described by the full specification at
http://metanav.uninett.no/devel:blueprints:unified_source ).
Also, we've been porting more and more of the web-based subsystems to Django.
mod_python is officially dead, so we should really get up to speed on moving
the legacy apps away from the native mod_python interface. A first baby step
towards cleaning up some things here has been done on my branch:
Only static media files are installed in the Apache DocumentRoot (@webroot@)
now. All python code goes in the library.
All the .htaccess files have been deleted. A top-level etc/apache/apache.conf
contains the default vhost config for NAV, which defaults to a Django handler
(and using our existing mod_python headerparserhandler). Any exceptions to
this rule can be configured by dropping a file in etc/apache/subsystems which
uses <Location> to configure the exception.
Exceptions from the default have been added for all native
mod_python-interfacing apps and for static media.
Now, a few words of warning:
- This has not been tested yet. It's just a bunch of rampant changes to the
directory structure, with some added config changes.
- I found a several pieces of old documentation that was patently wrong or
otherwise outdated. Rather than attempt at updating it, I deleted it.
- We're still stabilizing 3.6, some of which involves adding new files.
Merging series/3.6.x on to this branch when new files have appeared will
require manual intervention in the merge working copy before committing.
Files will not be magically added to the correct subdirectories on merge,
since mercurial doesn't version directories, only files.
- If you're working on a feature branch, please clone it and do a test-merge of
my branch to see how it affects your changes. Until I'm satisfied that my
changes work, changes should only be merged onto my branch, not the other way
around.
- Not sure I'll have time to test the changes properly before I get back from
EuroPython and finish my three weeks of vacation.
So, finally: The branch is located here:
http://metanav.uninett.no/hg/features/unified-source-tree/
So much for being "quick" ...
Cheers from Birmingham!
--
mvh
Morten Brekkevold
UNINETT
I just got an e-mail from someone trying to install NAV with Django 1.2. He
was unable to log in to NAV, as the login page would produce a
non-descriptive error about a CSRF token not being present.
The user solved his Django 1.2 problem by following the steps in this blog
post:
http://josh.gourneau.com/blog/2010/02/17/django-12-csrf-verification-failed/
The Django documentation for Cross Site Request Forgery protection is here:
http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#how-to-use-it
I'm not quite sure why this affects NAV; I'm not aware that we have employed
any of this before, and we don't use the Django admin interface. Any
suggestions to how we could solve this to work for Django versions 1.0
through 1.2?
--
Morten Brekkevold
UNINETT