Lizard sprint week
Tags: django, lizard, nelenschuurmans
Last week we had an internal sprint week at Nelen & Schuurmans to do lots of work on Lizard
(http://lizard.org).
A django-technical characteristic of lizard is that it is layered:
- Lizard-ui is the base UI
layer. It sets up the page layout and it provides the css and javascript.
- Lizard-map places a map
inside lizard-ui’s UI and manages the map layers.
- All other lizard-* apps are plugins for the lizard-ui + lizard-map
combination.
The big change this sprint was in lizard-ui:
- We switched from blueprint-css to the twitter-bootstrap css framework and updated the user interface to
make it more ipad-friendly. I’ll write a separate blog entry about that
layout.
- We added a base class based view (CBV) to lizard-ui. Till now, every app
used a base template and had to know which blocks it had to fill and
which variables to pass in the context dictionary. Now with the base CBV in
place, a lot less has to happen. The class based view knows how to handle
most tasks like breadcrumbs and tabs etcetera. So if you subclass the CBV,
you get a lot handled for free and you can concentrate on your data. This is
where class based views really shine!
These two changes also meant we had to update many apps to actually use the
class based view and to simplify their templates.
Examples of other changes we made this week:
- We now always include celery for out-of-process tasks. And a custom
lizard-task to manage those
tasks from the admin. Several apps that used to have cronjobs now use
lizard-task and celery for that.
- Using latest openlayers version. We experimented with leaflet, but
apparently there was some problem with the Dutch ‘RD’ projection so that
didn’t work out. I’d love another go at this as leaflet strikes me as quite
good.
- Updated from django 1.3 to 1.4. Completely painless and basically
unnoticed. Great!
We also experimented with javascript graphs instead of our regular matplotlib
ones, but that wasn’t finished yet.
Not everything’s right yet. Some functionality is broken and needs
fixing. Here’s part of our TODO list:
- Make the setup easier by having a base set of settings in our base lizard-ui
app that we can import from. I really liked the way sentry sets itself up when you install it. It
gives you an almost-bare settings.py that does a from sentry.conf.server
import * and only makes you set some absolutely necessary settings like
DATABASES.
- Fix the lizard-ui documentation. Most of the initial work was done on an
experimental branch until we knew it would work out. And during
experimenting we didn’t update the documentation. Now what we’ve merged the
experimental branch...
- Lots of small javascript parts of lizard-map are broken in the new
layout. It shouldn’t take too much time to fix them, but the number of
small things that don’t work right now makes the update look a bit bad. Time
to fix it!
- There are several small UI issues. Sidebar items that suddenly lack styling
because they have the wrong css class, things like that.
So... onwards to fix the issues and we ought to have a great new layout to
preview on next month’s Dutch lizard day.
