Size: 5188
Comment: Migrated to Confluence 4.0
|
Size: 1343
Comment: archiving old info, updating beta status
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
#pragma page-filename DEV/versions/15171625 | #pragma page-filename DEV/versions/10354696 |
Line 4: | Line 4: |
This page should serve as a place to update everyone on the current state of development, but also to discuss the progress and/or decisions being made while developing. Suggestions about the UI can be made on [[../Suggestions for new Mailman 3.0 UI|this page]]. | == Postorius == |
Line 6: | Line 6: |
== Components == | Postorius is the main component of the administrative interface of Mailman 3. It is an application based on the Django framework and is currently [[https://launchpad.net/postorius/trunk/1.0.0b1|in beta]]. The project is hosted on Launchpad: |
Line 8: | Line 8: |
The Mailman Web UI consists of three components: | [[https://launchpad.net/postorius|https://launchpad.net/postorius]] |
Line 10: | Line 10: |
1. a '''REST client module''' that handles all communication with Mailman 1. "'''mailman-django'''": a reusable Django app that makes use of the client module and delivers the web front-end 1. a '''django project/site''' that includes mailman-django |
Postorius depends on mailman.client, the Python bindings to Mailman's REST interface: |
Line 14: | Line 12: |
Why not just ship one thing? Because this way we cover a number of different scenarios, i.e.: | [[https://launchpad.net/mailman.client|https://launchpad.net/mailman.client]] |
Line 16: | Line 14: |
* Use 1., 2. & 3. if you have Mailman installed but are not running an existing Django site. * Use 1. & 2. if you already have an existing Django web site and would like to extend it with a Mailman interface. * Use 1. if you are developing a completely different Python application that needs to communicate with Mailman. |
For more on the design rationale behind Postorius, please see [[DEV/Web Interface]]. |
Line 20: | Line 16: |
=== The REST client module === | === Development === |
Line 22: | Line 18: |
A current draft contains two classes: | A quick 5 minute guide (if you're lucky) to get Postorius installed for development can be found here: |
Line 24: | Line 20: |
'''MailmanRESTClient:''' Methods names CRUD-like: create_list(), read_list(), update_list(), delete_list(), get_lists(), subscribe_list(), leave_list() etc. | [[../A 5 minute guide to get the Mailman web UI running|A 5 minute guide to get the Mailman web UI running]] |
Line 26: | Line 22: |
'''MailmanRESTClientError:''' Exception Class | A guide to run Postorius using Apache is part of the Postorius documentation: |
Line 28: | Line 24: |
It currently uses urllib and urllib2 to talk to Mailman but this has to be changed to use httlib to make use of the DELETE and PUT request methods (since Mailman's REST server now uses Restish). | [[http://packages.python.org/postorius/setup.html|http://packages.python.org/postorius/setup.html]] |
Line 30: | Line 26: |
Note: The client module should be part of the Mailman core source to integrate it into Mailman's testing routine. But it should also be distributed as a stand-alone Python module. | Some preliminary notes on testing new code in Postorius (this is still a draft...): |
Line 32: | Line 28: |
=== mailman-django === | [[http://packages.python.org/postorius/development.html|http://packages.python.org/postorius/development.html]] |
Line 34: | Line 30: |
A reusable Django app. Lives outside the Django project folder, somewhere on the Python path. Directory structure so far: {{{ mailman-django/ media/ mailman-django/ css/ img/ js/ templates/ mailman-django/ lists/ members/ }}} The "mailman-django" folders inside "media" and "templates" may seem redundant but help maintain clarity and prevent conflicts when integrating the app into an existing environment. === Systers === Alongside the general web ui an extra django app for the Systers mailing list is being developed as part of Anna Granudd's GSOC project: The plan is that there will be the "normal"/standard UI/app which only uses the core DB and accesses this via the rest client. However, with the help of Django one can add databases which can be used for alternative UI's, such as the one from Systers. The extra DB could, for instance, include the following tables and content (although with this content the user table is probably redundant and can be removed): '''Table "user"''' * id integer not null (to connect to core db), PK * URL text (specific "link_id" for each user) * required_id integer (connects to the "required" table) * web_url text (if someone, for instance, wish to add a link to a blog or similar) '''Table mailing list''' * id integer not null (to connect to core db), PK * URL text (specific "link_id") * picture base64-encoded (if, for instance, the organization using the mailing list wants to add a logo) * dlist_enabled boolean (Systers specific) * questions_essay text (Systers specific) * required_id integer (connects to the "required" table) '''Table required''' * id integer not null, PK * fullname_req boolean (Systers specific, possibly for core as well) * essay_req boolean (Systers specific) * picture_req boolean (although we'll probably want to make this optionally) Of these, the mailing list and the user tables are already present in core and would be extended with this information. === The Django website/project === Contains the standard set of files when doing: {{{ django-admin.py startproject mailmanweb }}} Could further be reduced to keep only settings.py and urls.py. mailman-django is included by adding it to INSTALLED_APPS in the project's settings.py: {{{ INSTALLED_APPS = ( 'mailman-django' ) }}} .... and by adding it to urls.py: {{{ urlpatterns = patterns('', (r'^mailman/', include('mailman-django.urls')) ) }}} === Applications in Django === The current plan is to have one standard django apps for the UI but discussions have been made to make it two: one for the admin site and one for the user sites. This will make the project more lucid. It is also possible to add more apps for organizations that wish to customize their views or add additional fields. == Test Server == A test server with a basic setup of the web UI is currently being set up. == Features to be implemented first == 1. Ability for users to subscribe, manage subscriptions, unsubscribe, change emails 1. Admin ability to create/delete lists via pre-defined styles 1. Users ability to customize their subscirptions 1. Moderation 1. Site admin ability to create domains, add and modify styles 1. List admin ability to customize lists |
=== Old updates === [[DEV/Web Interface Status/2012]] |
Web UI - Status
Postorius
Postorius is the main component of the administrative interface of Mailman 3. It is an application based on the Django framework and is currently in beta. The project is hosted on Launchpad:
https://launchpad.net/postorius
Postorius depends on mailman.client, the Python bindings to Mailman's REST interface:
https://launchpad.net/mailman.client
For more on the design rationale behind Postorius, please see DEV/Web Interface.
Development
A quick 5 minute guide (if you're lucky) to get Postorius installed for development can be found here:
A 5 minute guide to get the Mailman web UI running
A guide to run Postorius using Apache is part of the Postorius documentation:
http://packages.python.org/postorius/setup.html
Some preliminary notes on testing new code in Postorius (this is still a draft...):
http://packages.python.org/postorius/development.html