The following document is the lowest level of my design concept. You may also read it in my blog 1. Of course, comments are very welcome.
In order to store statistical data, the app will use some Django models:
This model represents an author of the mailing list. It mostly keeps track of the number of postings and number of threads started. It has the following fields:
This model counts the total number of postings and threads started.
This model associates the author and the mailing list with each month.
This model is similar to month. It has a year field instead of a month field.
To display the metrics the Django template system will be used. To output the charts i will create some custom tags. The three following views will be used:
authors, total mails and total threads and below three charts (AJAX based) that represent number of posts per author, number of threads per author and mailing list’s yearly usage. Even below there will be a number of charts (equal to the number of years of list’s existence) that output monthly usage. At the end, there will be tabular data representing the authors of the mailing list along with their number of posts, number of threads started and the date of their last post. The user will be able to order the tabular data (alphabetically, ascending/descending on number of posts, number of threads, date of last message) by clicking on the table’s headings (Mail, Mails Sent, Threads Started, Last Message).
On top, there will be the email of the author, number of posts, number of threads started and the dates of first and last message. Below there will be monthly usage charts for each year the user is subscribed to the mailing list. Django Admin page – A ‘Generate’ button will be added to the Django admin page. Settings
The Django app should handle the following configuration parameters:
masking email addresses at the results (we don’t want the emails to be spammed)
Interface to the Mailman core
receive it through the IArchiver interface. The Posts field of the Mailing List model (as well as the the related rows on the Month and Year models) will increase by one. If the author’s email is not in the database, it will query the mailman core database with the email, grab the author’s id and a new Author row will be created. Otherwise if the author is already in the database, the Posts field and the two foreign fields (Month and Year) will increase by one
zero). A progress bar will inform the administrator that the operation is being processed.
direct Python call to the IArchiver. Another instance to the IArchiver will grab any mails sent while the parsing is going on.
process is over.