On 8/31/10 2:24 AM, Kees Hink wrote:
> A question for collective.megaphone developers:
>
> A client of ours wants to store collective.megaphone data in a MySQL database.
> One could do this by following the steps at
> http://plone.org/products/ploneformgen/documentation/tutorial/sql-crud/tutorial-all-pages.
> That's a lot of manual work, and it requires some ZMI/MySQL knowledge [1]. It
> would be nice to enable editors to create an Action Letter with a MySQL
> extension using the wizard.
>
> I'd like to create either some kind of extension to collective.megaphone 
> itself
> or a separate add-on product, which will do the following:
> * on installation/activation, a create "Z MySQl database connection" is 
> created
>   - host, username, database are supplied by admin user at this moment
> * When an Action Letter is created, the user can checks the box that says 
> "Save
> also to MySQL database". If checked, this happens:
>   - a table is created (name derived from the Action Letter's id)
>     + add columns for all form fields are added
>     + maybe later allow users to select which fields are added
>     + maybe later allow updates when fields have changed
>   - a "Z MySQL Method" for storing is added
>     + maybe later add other "Z MySQL Methods"
>   - this method will be called after saving the form
>     + for example, an after-validation script calling this method
> * each time an Action letter is deleted, its table is deleted
>
> What i'd like to know:
> * Are there currently solutions available that i may have missed?
Not that I'm aware of (but I haven't looked).  Massimo Azzolini from Red
Turtle also recently expressed interest in something like this.
> * Is it feasible to do this in collective.megaphone? If I created a branch,
> would someone be willing to merge it if the quality is good?
> * Or is this out of scope, and/or are there reasons why a separate package is
> better suited for this than collective.megaphone?
I would rather see this as a separate package which provides an
additional wizard step for Megaphone.  In Megaphone >= 2.0b1 (e.g.
current trunk), the MegaphoneActionWizard class has a dynamic 'steps'
property which returns the list of steps to be included in the wizard. 
We should modify this to do an adapter lookup to a new
IMegaphoneWizardStep interface we define, so that a separate package can
supply an additional step.  I would be happy to merge a branch
implementing that adapter lookup in order to make it possible to create
the MySQL integration as a separate add-on.
> [1] Also, I'm currently pondering about a way to use _two_ after-validation
> scripts: collective.megaphone has one already filled in
> (here/@@recipient_multiplexer), which i currently replace with my Z MySQL 
> Method.
You should probably instead create a PloneFormGen "action adapter", and
call your Z MySQL method from its onSuccess method.  If you do this, the
recipient multiplexer will ensure that it is called once for each
selected recipient (with different values in the request form each time):
- mark the action adapter with
collective.megaphone.recipient_multiplexer.IMultiplexedActionAdapter
- *don't* enable the action adapter as one normally does in PloneFormGen
(then it will get run directly by PFG instead of via the recipient
multiplexer)
- set the execCondition of the adapter to "python:True" (this is how the
multiplexer tells whether it is enabled or not)

David
----------              
David Glick
 Web Developer
 [email protected]
 206.286.1235x32

Groundwire: You Are Connected           
 http://groundwire.org          
_______________________________________________
Product-Developers mailing list
[email protected]
http://lists.plone.org/mailman/listinfo/product-developers

Reply via email to