Re: looking at AT schema: (was) zope 3 schema's and the rest of us
Roché Compaan <roche-kb4xc5yObU3kQYj/0HfcvhBnub05S5/[email protected]> Fri, 14 Jul 2006 08:56:23 +0200
| Newsgroups | gmane.comp.web.zope.plone.archetypes.devel |
|---|---|
| Organization | Upfront Systems |
| Message-ID | <[email protected]> |
On Fri, 2006-07-14 at 02:05 -0400, whit wrote:
> Roché Compaan wrote:
> > On Thu, 2006-07-13 at 14:30 -0400, whit wrote:
> >>> In essence what I am saying is, rather than trying to "adapt" AT to z3 I
> >>> would rather port what works well in AT to z3 and then drop AT. I would,
> >>> very simply:
> >>>
> >>> 1. Port missing fields
> >>> 2. Port missing widgets
> >>> 3. Rewrite content types
> >>>
> >>> It's only 3 steps, it should work ;-)
> >>>
> >> add a fourth, and you don't even have to rewrite old AT code. not to
> >> beat this drum again, but there is *no* reason that current Field and
> >> Widget class constructor couldn't be simply mapped to registration
> >> statements, and registerType couldn't just act a consumer of
> >> registration info, much like browser views.
> >
> > Rampa papam pam. Well if that's possible then I'll gladly shut up
> > now :-)
> >
>
> well, it is AT...so it probably won't be as easy as it could be, but
> this may be one approach to piecemeal decomposition of the problem.
>
> #class WikiField(ObjectField):
> # """ my old field """
>
> def WikiField(name, **kw):
> """ my new field factory/registration function """
>
>
> consider what would be required to achieve parity in zcml (first, some at):
>
> WikiField('text',
> required=True,
> searchable=True,
> primary=True,
> filters=('Wicked Filter',),
> validators = ('isTidyHtmlWithCleanup',),
> default_content_type = ATDOCUMENT_CONTENT_TYPE,
> default_output_type = 'text/html',
> allowable_content_types = ('text/structured',
> 'text/x-rst',
> 'text/html',
> 'text/plain',
> 'text/plain-pre',
> 'text/python-source',),
> widget = atapi.RichWidget(
> description = "The body text of the document.",
> description_msgid = "help_body_text",
> label = "Body text",
> label_msgid = "label_body_text",
> rows = 25,
> i18n_domain = "plone"))
>
> which does the same as:
>
> <at:field
> name='text'
> provides='archetypes.field.IWickedfield'
> required=True
> searchable=True
> primary=True
> filters='archetypes.txtfilter.IWickedFilter'
> validators ='archetypes.validators.IisTidyHtmlWithCleanup'
> default_content_type = 'archetypes.content.interfaces.IDocument'
> default_output_type = 'text/html'
> allowable_content_types = 'text/structured,
> text/x-rst,
> text/html,
> text/plain,
> text/plain-pre,
> text/python-source'>
> <at:widget
> name='default'
> provides='archetypes.widget.IRichWidget'
> description = "The body text of the document.",
> description_msgid = "help_body_text",
> label = "Body text",
> label_msgid = "label_body_text",
> rows = 25,
> i18n_domain = "plone" />
>
> </at:field>
>
> I'm modeling field as an extension of the adapter registration
> directive(with the casual assumption we would register defaults for
> interfaces). just the same, we could use the factory only syntax, but
> obviously framework consumers shouldn't have to write an adapter every
> time they want a field.
>
> Then again, this is something a python function does better than zcml ;)
>
> notice I've tried to logical map interfaces in places it made sense, and
> that the widget is named.
>
> Rather than have to rewrite wholesale every widget, simply cleaning up
> the frontend mess so it could handle slightly different widget
> implementations intelligently might allow us to evolve without much pain.
>
> from Products.Archetypes.public import *
> from archetypes.fields.factories import StringField, TextField
> from archetypes.widgets.factories import RichWidget, StringWidget
>
> obviously, there is a vector to avoid snafus.
Thanks for the above, it is very understandable (and clever) and does
make a lot of sense.
--
Roché Compaan
Upfront Systems http://www.upfrontsystems.co.za
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642