source: main/waeup.sirp/trunk/src/waeup/sirp/widgets/objectwidget.py @ 11012

Last change on this file since 11012 was 7795, checked in by uli, 13 years ago

Merge changes from ulif-schoolgrades back into trunk.

  • Property svn:keywords set to Id
File size: 2.6 KB
RevLine 
[7196]1## $Id: objectwidget.py 7795 2012-03-08 03:30:30Z uli $
[5275]2##
[7196]3## Copyright (C) 2011 Uli Fouquet & Henrik Bettermann
[5275]4## This program is free software; you can redistribute it and/or modify
5## it under the terms of the GNU General Public License as published by
6## the Free Software Foundation; either version 2 of the License, or
7## (at your option) any later version.
[7196]8##
[5275]9## This program is distributed in the hope that it will be useful,
10## but WITHOUT ANY WARRANTY; without even the implied warranty of
11## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12## GNU General Public License for more details.
[7196]13##
[5275]14## You should have received a copy of the GNU General Public License
15## along with this program; if not, write to the Free Software
16## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17##
[5299]18"""A widget to display IObject instances in forms.
[5275]19"""
20from zope.browserpage import ViewPageTemplateFile
21from zope.formlib.interfaces import IDisplayWidget
22from zope.formlib.objectwidget import ObjectWidget, ObjectWidgetView
23from zope.formlib.utility import setUpWidgets
[5310]24from zope.interface import implements, implementsOnly
[5275]25from zope.schema import getFieldNamesInOrder
26
[7321]27class SIRPObjectWidgetView(ObjectWidgetView):
[5299]28    template = ViewPageTemplateFile('objectwidget.pt')
[5275]29
[7321]30class SIRPObjectWidget(ObjectWidget):
[5275]31
32    def __init__(self, context, request, factory, **kw):
33        #super(ResultsEntryWidget, self).__init__(context, request)
34        super(ObjectWidget, self).__init__(context, request)
35
36        # define view that renders the widget
37        self.view = self._getView(request)
38
39        # factory used to create content that this widget (field)
40        # represents
41        self.factory = factory
42
43        # handle foo_widget specs being passed in
44        self.names = getFieldNamesInOrder(self.context.schema)
45        for k, v in kw.items():
46            if k.endswith('_widget'):
47                setattr(self, k, v)
48
49        # set up my subwidgets
50        self._setUpWidgets()
51
52    def subwidgets(self):
53        result = [self.getSubWidget(name) for name in self.names]
54        return result
55
56    def _setUpWidgets(self):
57        return self._setUpEditWidgets()
58
59    def _getView(self, request):
[7321]60        return SIRPObjectWidgetView(self, request)
[5275]61
[7795]62
[7321]63class SIRPObjectDisplayWidget(SIRPObjectWidget):
[5275]64
[5310]65    implementsOnly(IDisplayWidget)
66
[5275]67    def _setUpDisplayWidgets(self):
68        # subwidgets need a new name
69        setUpWidgets(self, self.context.schema, IDisplayWidget,
70                         prefix=self.name, names=self.names,
71                         context=self.context)
72
73    def _setUpWidgets(self):
74        return self._setUpDisplayWidgets()
Note: See TracBrowser for help on using the repository browser.