From: Karl P. <ka...@pu...> - 2002-10-02 04:41:05
|
Doh... This one works. _transaction() should have been transaction() in the first patch. --Karl On Tue, 2002-10-01 at 22:18, Karl Putland wrote: > This patch provides unification of "old style" and normal actions. > For those that would need to keep the "old style" actions as they were > a configuration variable could be set in the Application.config > > OldStyleActions = [1|0] > > This defaults to false if not provided. > > I have some pages that rely on this unification. It does provide for > backward compatibility if the user so desires. > > I'd like to see this in before the next fabled release of Webware for > Python. > > Also as a side note, our Webware powered site is up and running. The > bulk of the application is not visible to the world, but the > www.shipeze.com is just another context. :) > -- > Karl Putland > Director of Technical Operations > ShipEze Inc > ---- > > Index: Page.py > =================================================================== > RCS file: /cvsroot/webware/Webware/WebKit/Page.py,v > retrieving revision 1.25 > diff -c -r1.25 Page.py > *** Page.py 27 Sep 2002 01:57:51 -0000 1.25 > --- Page.py 2 Oct 2002 04:14:53 -0000 > *************** > *** 47,69 **** > req = transaction.request() > > # Check for actions > for action in self.actions(): > ! if req.hasField('_action_%s' % action) or (req.hasField('_action_%s.x' % action) and req.hasField('_action_%s.y' % action)): > if self._actionSet().has_key(action): > self.handleAction(action) > return > > - # Support old style actions from 0.5.x and below. > - if req.hasField('_action_'): > - action = self.methodNameForAction(req.field('_action_')) > - actions = self._actionSet() > - if actions.has_key(action): > - self.preAction(action) > - apply(getattr(self, action), (transaction,)) > - self.postAction(action) > - return > - else: > - raise PageError, "Action '%s' is not in the public list of actions, %s, for %s." % (action, actions.keys(), self) > > self.writeHTML() > > --- 47,77 ---- > req = transaction.request() > > # Check for actions > + # Support old style actions from 0.5.x and below. > + # > + # Don't know as I like probing the applications configutatin > + # as it increases coupling, but seems like the best place to put it. > + if self._transaction().application().setting('OldStyleActions',0): > + if req.hasField('_action_'): > + action = self.methodNameForAction(req.field('_action_')) > + actions = self._actionSet() > + if actions.has_key(action): > + self.preAction(action) > + apply(getattr(self, action), (transaction,)) > + self.postAction(action) > + return > + else: > + raise PageError, "Action '%s' is not in the public list of actions, %s, for %s." % (action, actions.keys(), self) > + > for action in self.actions(): > ! if (req.hasField('_action_%s' % action) or > ! (req.hasField('_action_%s.x' % action) and req.hasField('_action_%s.y' % action) or > ! (req.hasField('_action_') and req.value('_action_') == action )) > ! ): > if self._actionSet().has_key(action): > self.handleAction(action) > return > > > self.writeHTML() > -- Karl Putland Director of Technical Operations ShipEze Inc |