[Zope] Idea for a new "basic" class
Max Møller Rasmussen
maxm@normik.dk
Tue, 10 Jul 2001 17:01:26 +0200
During my process of discovering Zope, I have made quite a few products. I
have allways found that there is a lot of repeated functionality and code
just to get them up and running.
I have an idea for a "basic" class to be added to the Zope framework that
sets up the most comonly used mixin classes, and sets up sensible default
values for them.
So to make a very simple Zope product you just need to write::
from basic import basic
class minimal(basic):
meta_type = 'minimal'
And it would set up a fully functional product with id, and title as default
vales. manageAdd, manageAction, manage_editForm, manage_editAction, and
index_html would also be included by default.
If you want to add more properties you would just overwrite "_properties"
from basic import basic
class minimal(basic):
meta_type = 'minimal'
_properties=(
{'id':'title', 'type':'string', 'mode':'w'},
{'id':'summary', 'type':'text', 'mode':'w'},
{'id':'content', 'type':'text', 'mode':'w'},
{'id':'author', 'type':'string', 'mode':'w'},
{'id':'url', 'type':'string', 'mode':'w'},
{'id':'email', 'type':'string', 'mode':'w'},
)
And the manageAdd, manageAction, manage_editForm, manage_editAction, and
index_html would change dynamically to fit the new properties.
You could also add new methods, or overwrite the default ones like::
from basic import basic
from global import DTMLFile
class minimal(basic):
meta_type = 'minimal'
_properties=(
{'id':'title', 'type':'string', 'mode':'w'},
{'id':'summary', 'type':'text', 'mode':'w'},
{'id':'content', 'type':'text', 'mode':'w'},
{'id':'author', 'type':'string', 'mode':'w'},
{'id':'url', 'type':'string', 'mode':'w'},
{'id':'email', 'type':'string', 'mode':'w'},
)
index_html = DTMLFile('www/index_html', globals())
view = DTMLFile('www/view', globals())
edit = DTMLFile('www/edit', globals())
I believe that it would _greatly_ simplify the process of writing Python
products. Taking the minimal needed code to get started from something like
40 lines to 3.
Does it sound like a waste of time to write this class?? I think it would be
fairly easy, but would anybody use it? And is it possible to get something
like this into the core? If so I am willing to write it.
regards Max M