One of the most distinguishing and outstanding features provided by **Django**
surely concerns the **django admin** application.
The django admin app (`django.contrib.admin`) provides a built-in mechanism to
automate the generation of a back-end management web site in a very customary
and flexible fashion.
The resulting web site can be easily extended with additional views,
`admin actions`, `ajax hooks`, new `templates` and `forms`
(`django.contrib.forms.ModelForms`), as well organized into multiple
`AdminSites` with custom permissions.
To this end, this application has been sometimes referred as the *killer*
application of Django, thanks to this unique set of features provided by the
framework out-of-the-box.
However, even if the original intent of the django admin app was to provide
support to some of the most common data management (a.k.a. `CRUD`) operations,
its highly dynamic and extensible nature allows developers to use it as the
basis to build new web applications.
This talk follows exactly in this direction, aimed at presenting a new
Django Admin-based application I recently implemented as part of my job as a
researcher.
This application has been originally designed to provide a
distributed and remotely accessible tool for (source code) data evaluation
in a **pooling** evaluation process [[Manning, 2009]][0].
In particular, the application leverages on the integration of the
`django.contrib.admin` app with **celery** (`djcelery`), mainly necessary to
automate the execution of asynchronous tasks to fetch the data to analyze and
to store them into the database.
Afterwards, the application has been further extended by additional
functionalities, aimed at plotting charts and statistics on evaluated
data (such as the *agreement rate* among judges).
All these features have been integrated into additional admin `views`,
exploiting in the back-end
[`pandas`](http://pandas.pydata.org) (for the analysis part) in
combination with [`matplotlib`](http://matplotlib.org) and
[`d3js`](http://d3js.org) (for graphs and charts plotting).
In this talk, I would like to share my experience in integrating and
combining all these different Python packages and technologies under the
big shell of the Django Admin app.
To this end, I'm going to present some of the main design choices I made, along
with some technical hints and (methodological) conclusions I derived in
implementing this kind of applications.
Very basic knowledge of Django and Django admin are required for this talk.
[0]: http://nlp.stanford.edu/IR-book/pdf/08eval.pdf "Introduction to Information Retrieval, Chap. 8 Evaluation in Information Retrieval"