diff options
author | jsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68> | 2010-07-01 06:04:47 +0000 |
---|---|---|
committer | jsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68> | 2010-07-01 06:04:47 +0000 |
commit | 69c5921fb2472f5cafa050dae088120ad17ed23a (patch) | |
tree | db2bbd8dc4439139b6278408c82cec495b06d0d9 /sca-cpp/trunk/modules/wsgi/scdl.py | |
parent | 8e35575af73a89217bc5f9dc14dd59428f5ee39a (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.py | 21 |
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 |