[Zope3-dev] Django, Catwalk, nice admins (was re: Visionaire! (All your problems, solved))

Jeff Shell eucci.group at gmail.com
Thu Mar 2 02:01:40 EST 2006


On 3/1/06, Gary Poster <gary at zope.com> wrote:
>
> On Mar 1, 2006, at 11:02 PM, Jeff Shell wrote:
> [...]
> > Django is killing us on automatic data (not system) administration
> > pages.
> [...]
>
> I didn't follow this, probably because I don't know Django.  Do you
> mean they excel in automatic data entry forms, a la Zope 3 edit forms/
> formlib?  As in Ruby-on-Rails slick SQL-driven AJAX forms?  Or...?

It's not just formlib, but it's on the contents screen. This effbot
post summarizes it pretty well:

http://online.effbot.org/2006_02_01_archive.htm#20060215

It includes example code and a screen shot. In a very few lines of
pure Python, he has an edit screen for announcements. There's a search
field, the columns are sortable, etc. There's also a 'date hierarchy'
which gives clickable years across the top of the listing to filter.

Django comes out of newspaper focused content management, and has a
polished CMS style UI (based on the screen shots I've seen, I've never
actually used it) and ways of rapidly putting it together. I'm not
fond of the way they put it together in the code, but the results are
impressive.

A low priority project I have is to make a new base 'admin' skin and
collection of components/tools for us at Bottlerocket. One of the
things I really want to do is create a formlib inspired contents
view(let). The contents view we have in our current CMS is based
(stylistically if not subclassed) on the one in
zope.app.container.browser.contents. It has ajax elements (inline
renaming and title editing), and no copy and paste. But it does have
delete. Delete (and the other things) are methods of the contents
view, and a lot of the display is bound up in the template. When my
co-worker wanted to adapt it for more specialized content listings,
where he wanted grouping and no renaming, it was quite a bit of work.

It's late, and I've been watching nothing but South Park and Monty
Python's Personal Best series (an hour of Terry Gilliam animations -
dada enlivened!), but I envision something like:

class AnnouncementContents(ContentsView):

    contents = JSSortableContentsTable(
        listOnly=IArticle,
        columns=ColumnFields(IZopeDublinCore.modified,IZopeDublinCore.title),
        actions=ItemActions(
            ViewAction(icon=Resource('rsrc/delete.gif'), viewname='delete',
                       title='Delete', post=True)
            )
        )
    contents.order(table.columns['modified'], reverse=True)
    contents.columns['title'].widget = InPlaceEditor

*shrug*. That's a bit messy. But it's also only fantasy right now. :)

Anyways, Django has a very nicely polished 'admin' interface. Which,
as I mentioned earlier, is something that is very attractive for
certain application types. It allows the focus to be on the
application's real skin, and offers an easy almost-no-brain data entry
skin to be made that's also quite usable.

Something like this would be a great option, emphasis on option. It's
not usable for every situation. At Bottlerocket, we want to brand and
customize and this has often been one of the reasons we've made our
own apps instead of using something like Plone. "Hmm. Looks like
Plone. We don't want something that looks like Plone..." (This was
only really bad when it came to trying to figure out how to publish a
site that didn't look like plone to end users, but did for data
entry). This is one of those issues that spirals out of control, and
easy usability - "wrap this interface around all your models in one
line of code!" - and customizability start to clash. But having it as
an option to startup could be priceless.

An even more interesting application is CatWalk, which is now part of
the TurboGears 0.9 toolbox. One metric I saw was that it's 1200 lines
of Javascript, 900 lines of Python. It does a LOT via Ajax/JSON. And
it's _extremely_ impressive, especially when it can actually be
wrapped around your model objects in a single line of code (or just as
a launch option!).

http://checkandshare.com/catwalk/
(he also has a model designer running -
http://www.checkandshare.com/modelDesigner/ )

The nice thing with TurboGears and these tools is that they feel like
*additional options*. At least, that's the feel I get just from some
semi-casual observations on my part. They don't feel like the default
UI that you don't know if you have to support or not.

Anyways, the other communities have things like this going on and
we're still debating over release / roadmap / naming strategies?

--
Jeff Shell


More information about the Zope3-dev mailing list