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
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:36:13 -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()