Unifying Django Pluggable Apps?

cms django django-ostinato

So I have been thinking about this for a while now. I love Django and one of the features I enjoy most is the ability to easily plug in any third party app. But there has always been one issue that I'm sure many of us have thought about.

1. Different App, Different Author, Different Approach

The biggest issue I have with re-usable apps, is that every author uses a different naming scheme, and not only that, they may also use a completely different widget for a field.

Lets take for example the ability to allow a model to be visible to the public or not. Now in the majority of cases, people use is_public = models.BooleanField() or is_visible = models.BooleanField(). My first issue here is that we already have two different naming schemas. I've frustrated myself many times by trying to use one, only to discover it's the other.

Another issue with this approach, is that some people require a bit more control over the publication of their model, and may want to use a multiple choice field to set the status between, 'draft', 'public', 'review' and 'retracted' etc.

2. One Website One Common Theme

The second issue lies mostly with the content you want available for your front-end users. You may have a standard looking interface that allows for a Title, Description and Author. You may want this information to be available across all your content types, but some of them may not have allowance for a “author” or “description” field. Of course you may say: “Why it's simple, modify the app!”, but this is an approach that I try avoid, since it makes upgrading the app a bit more tedious etc.

A Possible Solution?

So what I really wanted was an application that could unify the different pluggable apps for me, providing common features found in most cms'. Another feature that is requested all the time, is the ability to easilly add nav elements, complete with parents etc. and to generate navbars, navtrees, breadcrumbs etc. from this.

I have been toying with this and it led me to create django-ostinato. A re-usable app that is supposed to “unify” re-usable django apps. Now I'm first to admit that my approach may not be the correct solution, but it's one that I've been playing with, and it seems to work for me. I've tested it using django's standard flatpages, as well as my django-video app, and it seems that this approach has potential. I'm not using this app in production (yet), but depending on how much time I have available to expand on it, I might be using it sooner than later.

If anyone wants to try the app please feel free to do so. Code is up on git-hub:

http://github.com/andrewebdev/django-ostinato

You can also follow the wave on my blog:

http://andre.engelbrechtonline.net/django-ostinato/

So what are your opinions? Should there be some kind of app to “unify” others? Maybe there is already one that I don't know about? Or do you feel that we do not need an app like this at all? Comments are welcome.



There are currently no comments on this entry. Be the first!


You can use Markdown to format your comment.