Pyjamas and Juno
I am currently in dire need of creating a nice admin page for a LDAP addressbook, which should do some slightly unusual things with the data (like manipulating Postfix's virtual table).
So, what the heck, let's also learn something new while I'm at it. The victims: Pyjamas and Juno.
Pyjamas is sort of a Python version of GWT and is bliss. Finally I can code HTML and JS in python ;-)
And Juno is refreshingly simple. Since the whole frontend is done by Pyjamas, all I needed is a way to route JSONRPC calls to python code and operate in the backend.
So, here are two useful snippets:
# This decorator decodes JSONRPC arguments as sent by Pyjamas to # Juno, and calls the target function with the decoded version. def JSONRemote(target): def wrapper(web,*args,**kwargs): postdata=web.input().keys()[0] data = json.loads(postdata) id, method, params = data["id"],data["method"],[web,]+data["params"][1] kwargs['method']=method return target(*params,**kwargs) return wrapper
Using this, any plain juno method works as a JSONRPC method!
For example:
@route('/user') @JSONRemote def list(web,startwith='*',method=None): try: result=search(filter='(&(uid=*@bigclient.ar)(sn=%s*))'%startwith) resp=JSONResponse(result) except ldap.LDAPError, e: resp=JSONResponse(None,e.desc) return resp
See? No JSON decoding. And no encoding either, because I am creating the response using this:
# This class creates a correct JSON response from Juno as required by Pyjamas class JSONResponse(JunoResponse): def __init__(self,result=None,error=None,id=None,code=200): JunoResponse.__init__(self) self.headers['Content-Type']='text/javascript' self.append(json.dumps({'result':result,'error':error,'id':id,'code':code}))
This is probably not a great implementation but it's good enough for me right now.
Hello
Just wanted to highlight the meaning of Pyjama
=========================
Pajamas, also spelled pyjamas can refer to several related types of clothing. The original paijama are loose, lightweight trousers fitted with drawstring waistbands and worn in South and West Asia by both sexes.[1] In many English-speaking nations, pajamas are loose-fitting, two-piece garments derived from the original garment and worn chiefly for sleeping,[2] but sometimes also for lounging,[3] also by both sexes.[4] More generally, pajamas may refer to several garments, for both daywear and nightwear, derived from traditional pyjamas and involving variations of style and material.
========================
http://en.wikipedia.org/wik...