diff --git a/gen/ogone.py b/gen/ogone.py
index cb6c3b0..9bdf7ac 100644
--- a/gen/ogone.py
+++ b/gen/ogone.py
@@ -2,6 +2,17 @@
import sha
from appy import Object
from appy.gen import Type
+from appy.px import Px
+
+view = Px('''
+
Hello PX world.
+
+
+ :x : :value[x]
+
+ :x
+
+''')
# ------------------------------------------------------------------------------
class OgoneConfig:
@@ -146,4 +157,6 @@ class Ogone(Type):
# some URL, use it. Else, use the view page of p_obj.
if not url: url = obj.absolute_url()
obj.goto(url)
+
+ def getPx(self, context): return view(context).encode('utf-8')
# ------------------------------------------------------------------------------
diff --git a/gen/ui/widgets/ogone.pt b/gen/ui/widgets/ogone.pt
index 739c32c..cb4f745 100644
--- a/gen/ui/widgets/ogone.pt
+++ b/gen/ui/widgets/ogone.pt
@@ -2,6 +2,7 @@
var "value" is misused and contains the contact params for Ogone.
The form for sending the payment request to Ogone.
+
+ Ogone PX test
+ PX
+
Edit macro (none)
diff --git a/pod/buffers.py b/pod/buffers.py
index 7ebf3d1..0c7df0a 100644
--- a/pod/buffers.py
+++ b/pod/buffers.py
@@ -150,7 +150,14 @@ class Buffer:
self.write('<%s' % elem)
for name, value in attrs.items():
if ignoreAttrs and (name in ignoreAttrs): continue
- self.write(' %s=%s' % (name, quoteattr(value)))
+ # If the value begins with ':', it is a Python expression. Else,
+ # it is a static value.
+ if not value.startswith(':'):
+ self.write(' %s=%s' % (name, quoteattr(value)))
+ else:
+ self.write(' %s="' % name)
+ self.addExpression(value[1:])
+ self.write('"')
if insertAttributesHook:
res = self.addAttributes()
else:
@@ -605,8 +612,11 @@ class MemoryBuffer(Buffer):
try:
result.dumpContent(evalEntry.evaluate(self.env.context))
except Exception, e:
- PodError.dump(result, EVAL_EXPR_ERROR % (
- evalEntry.expr, e), dumpTb=False)
+ if self.caller() == 'pod':
+ PodError.dump(result, EVAL_EXPR_ERROR % (
+ evalEntry.expr, e), dumpTb=False)
+ else: # px
+ raise Exception(EVAL_EXPR_ERROR %(evalEntry.expr,e))
elif isinstance(evalEntry, Attributes):
result.write(evalEntry.evaluate(self.env.context))
else: # It is a subBuffer
@@ -621,4 +631,9 @@ class MemoryBuffer(Buffer):
def clean(self):
'''Cleans the buffer content.'''
self.content = u''
+
+ def caller(self):
+ '''Returns "pod" if the caller is appy.pod, "px" if it is appy.px.'''
+ if self.env.__class__.__name__ == 'PxEnvironment': return 'px'
+ return 'pod'
# ------------------------------------------------------------------------------