summaryrefslogtreecommitdiffstats
path: root/sca-cpp/trunk/modules/wsgi/scdl.py
diff options
context:
space:
mode:
authorjsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68>2010-07-01 06:04:47 +0000
committerjsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68>2010-07-01 06:04:47 +0000
commit69c5921fb2472f5cafa050dae088120ad17ed23a (patch)
treedb2bbd8dc4439139b6278408c82cec495b06d0d9 /sca-cpp/trunk/modules/wsgi/scdl.py
parent8e35575af73a89217bc5f9dc14dd59428f5ee39a (diff)
Support user and email properties in WSGI integration.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@959523 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-cpp/trunk/modules/wsgi/scdl.py')
-rw-r--r--sca-cpp/trunk/modules/wsgi/scdl.py21
1 files changed, 15 insertions, 6 deletions
diff --git a/sca-cpp/trunk/modules/wsgi/scdl.py b/sca-cpp/trunk/modules/wsgi/scdl.py
index 2a4a667173..a50bba3b7a 100644
--- a/sca-cpp/trunk/modules/wsgi/scdl.py
+++ b/sca-cpp/trunk/modules/wsgi/scdl.py
@@ -96,7 +96,7 @@ def properties(e):
return ()
if match(car(e), "start", "property") == False:
return properties(cdr(e))
- return cons(text(car(e)), properties(cdr(e)))
+ return cons((att(car(e))["name"], text(car(e))), properties(cdr(e)))
# Return the list of services under a SCDL component element
def services(e):
@@ -189,17 +189,26 @@ def evalReference(r, comps):
# value. The user and email properties are configured with the values
# from the HTTP request, if any
def evalProperty(p):
- if (isTaggedList(p, "user")):
+ if car(p) == "user":
return lambda: userProperty(cadr(p))
- if (isTaggedList(p, "email")):
+ if car(p) == "email":
return lambda: emailProperty(cadr(p))
- return lambda: p
+ return lambda: cadr(p)
+
+def currentUser():
+ try:
+ from google.appengine.api import users
+ return users.get_current_user()
+ except:
+ return None
def userProperty(v):
- return "nobody"
+ user = currentUser()
+ return user.user_id() if user else v
def emailProperty(v):
- return "nobody@nowhere.com"
+ user = currentUser()
+ return user.email() if user else v
# Evaluate a component, resolve its implementation, references and
# properties