Demonstration

Google App Engine Handler class


The following code is an example of how you may setup an AJAX handler class that validade changed cell content. It returns an JSON data structure that will be asyncrhonous handled and once validate the cell content will be accepted.

class ContactsDemo(webapp.RequestHandler):
def get(self):
cols = []
cols.append( {'id':'rowid','label':'ContactKey','editable':False,'type': '','width':'10px'})
cols.append( {'id': 'name', 'label': 'Name','editable': True, 'type': '', 'width': '200px'})
cols.append( {'id': 'age', 'label': 'Age','editable': True, 'type': '', 'width': '10px'})
cols.append( {'id': 'phone', 'label': 'Phone','editable': True, 'type': '', 'width': '100px'})
rows = []
rows.append({'rowid': '1', 'name': 'Machado de assis', 'age' : '54', 'phone' : 'not applicable'})
rows.append({'rowid': '2', 'name': 'Sylvia Plath', 'age' : '33', 'phone' : '71 9451-7845'})
rows.append({'rowid': '3', 'name': 'Carl Sagan', 'age': '65', 'phone' : '81 8794-7845'})
rows.append({'rowid': '4', 'name': 'Machado de assis', 'age' : '54', 'phone' : 'not applicable'})
rows.append({'rowid': '5', 'name': 'Plath Assis', 'age' : '37', 'phone' : '71 9451-7845'})
rows.append({'rowid': '6', 'name': 'Sagan Machado', 'age': '55', 'phone' : '81 8794-7845'})
rows.append({'rowid': '7', 'name': 'Sylvia Carl', 'age' : '24', 'phone' : 'not applicable'})
rows.append({'rowid': '8', 'name': 'Assis Sagan', 'age' : '23', 'phone' : '71 9451-7845'})
rows.append({'rowid': '9', 'name': 'Carl Plath', 'age': '45', 'phone' : '81 8794-7845'})
template_values={'getURL' : None,
'postURL' : 'contactsdemo',
'cols': simplejson.dumps(cols),
'rows': simplejson.dumps(rows)}
path = os.path.join(os.path.dirname(__file__),os.path.join('../zoqui/demos','demo-jgrideditor.html'))
self.response.out.write(template.render(path, template_values))
return

def post(self):
rowid = self.request.get('rowid')
fieldname = self.request.get('fieldname')
fieldvalue = self.request.get('fieldvalue')
ret = {}
ret['rowid']=rowid
ret['fieldname']=fieldname
if fieldname:
ret['sts']='OK'
ret['fieldvalue']=ZString(fieldvalue).normalize().upper()
ret['msg']='Salvo'
else:
ret['fieldvalue']=fieldvalue
ret['sts']='ERROR'
ret['msg']='Invalid Value'
self.response.out.write(simplejson.dumps(ret))
return