def post(self): ENV=tool.readHeader(self.request); #Get var from request and pass to data model object callbackJSONP=self.request.get('JSONP'); entry = Action() try: #check valid json , save as python json entry.content=json.dumps( json.loads(self.request.get('content')) ); except ValueError: self.response.out.write(json.dumps([])); return; #entry.userName = self.request.get('userName'); entry.place = place = self.request.get('place'); entry.type = self.request.get('type'); d={};#temporary dict entry.tag = [d.setdefault(tag,tag) for tag in self.request.get_all('tag') if tag and tag not in d]; entry.whereCreated=ENV.CityLatLong; entry.whereModified=ENV.CityLatLong; #preprocess before create if self.smartProcessBeforeCreate(entry) : entry.put() #save data model object to data base #render jsonData = json.dumps( [entry.dictJSON()] ) ; if callbackJSONP: self.response.out.write(callbackJSONP+'('+jsonData+');'); else: self.response.out.write(jsonData);
def get(self): ENV=tool.readHeader(self.request); user=ENV.CurrentUser; if not user: self.response.out.write("Logout Success") else: url = users.create_logout_url(self.request.uri) self.redirect(url);
def get(self): ENV=tool.readHeader(self.request); user=ENV.CurrentUser; if user: #check and create icon user automaticly self.checkAndCreateIconAutomatic(); self.response.out.write("Login Success") else: if self.request.get('check'): self.response.out.write("Not yet Login") else: url = users.create_login_url(self.request.uri) self.redirect(url);
def get(self): ENV=tool.readHeader(self.request); #Get var from request matchCurrentUser = self.request.get('createdByMe'); type=self.request.get_all('type') tags=self.request.get_all('tag'); maxFetch=self.request.get_range('max',0,100,default=1); offset=self.request.get_range('offset',0,10000,default=0); keys_only=self.request.get('keys_only'); callbackJSONP=self.request.get('JSONP'); #Query if(keys_only):query = db.Query(Icon, keys_only=True); else:query = db.Query(Icon, keys_only=False); #Filter if matchCurrentUser: query.filter("whoCreated =", ENV.CurrentUser); if type: query.filter("type IN", type); for tag in tags: if tag:query.filter("tag =", tag); #Fetch data=[]; if maxFetch>0: data = query.fetch(maxFetch,offset); else: data = [entry for entry in query]; #reversed, most new at bottom # entries=reversed(data); #render if(keys_only): jsonData=json.dumps( [entry for entry in data]) ; else: jsonData=json.dumps( [entry.dictJSON() for entry in data]) ; if callbackJSONP: self.response.out.write(callbackJSONP+'('+jsonData+');'); else: self.response.out.write(jsonData); return;
def checkAndCreateIconAutomatic(self): ENV=tool.readHeader(self.request); user=ENV.CurrentUser; keyName='ucon://user/'+user.email(); userIcon=db.get(db.Key.from_path('Icon',keyName )); if not userIcon: userIcon=Icon(key_name=keyName); userIcon.thumb="http://wwwcdn.net/ev/assets/images/vectors/afbig/user-symbol-blue-clip-art.jpg"; userIcon.type='user'; #generate content; contentDict={ 'photoURL' :userIcon.thumb , 'facetimeID' : user.email(), 'email' : user.email(), 'home' : keyName+'/public/home', 'inbox' : keyName+'/private/inbox', 'item' : keyName+'/private/item', }; userIcon.whereCreated=ENV.CityLatLong; userIcon.whereModified=ENV.CityLatLong; itemBarPlaceName=keyName+'/private/item'; ## need: add task (makecopy of toolset icon to user item bar) #camera app, upload-photo app contentDict['toolset']=["ucon://toolset/camera","ucon://toolset/upload-photo"]; taskqueue.add(url='/icon/' ,params={'keyName':'ucon://place/'+contentDict.get('home'), 'thumb':"http://theparentplace.files.wordpress.com/2012/04/home1.png", 'type': 'place', 'tag':'home' , 'content': json.dumps({ "placeName": contentDict.get('home'), "title": user.email() + " - Home", "backgroundPhotoURL": "", "photoURL": userIcon.thumb }) } ,queue_name='fastAndSecure'); # taskqueue.add(url='/action/' # ,params={'place':itemBarPlaceName, 'type': 'makecopy', 'tag':'toolset' , 'content': json.dumps({"iconID":"ucon://toolset/camera","isKeyName":True}) } # ,queue_name='fastAndSecure'); # #upload photo app # taskqueue.add(url='/action/' # ,params={'place':itemBarPlaceName, 'type': 'makecopy', 'tag':'toolset' , 'content': json.dumps({"iconID":"ucon://toolset/upload-photo","isKeyName":True}) } # ,queue_name='fastAndSecure'); userIcon.content = json.dumps(contentDict); userIcon.put();
def post(self): ENV=tool.readHeader(self.request); #Get var from request and pass to data model object keyName=self.request.get('keyName'); callbackJSONP=self.request.get('JSONP'); if keyName: entry = db.get(db.Key.from_path('Icon',keyName )); if entry==None: entry = Icon(key_name=keyName) else: #keyName exist self.response.out.write(json.dumps([])); else: entry= Icon(); #pass to model try: #check valid json , save as python json entry.content=json.dumps( json.loads(self.request.get('content')) ); except ValueError: self.response.out.write(json.dumps([])); return; entry.thumb = self.request.get('thumb'); entry.type = self.request.get('type'); d={};#temporary dict entry.tag = [d.setdefault(tag,tag) for tag in self.request.get_all('tag') if tag and tag not in d]; entry.whereCreated=ENV.CityLatLong; entry.whereModified=ENV.CityLatLong; entry.put() #save data model object to data base #each new create icon should have a makecopy action auto generate right after it is created, so user will see reflection of it right away #icons that dont have any makecopy action are likely become garbage (because no one can see or copy it) #this can help avoid situtation when icon is created but send makecopy action phase on client is error. # write some code here to generate make copy action (need some var from request) #render jsonData=json.dumps( [entry.dictJSON()] ) ; if callbackJSONP: self.response.out.write(callbackJSONP+'('+jsonData+');'); else: self.response.out.write(jsonData); return;
def get(self): ENV=tool.readHeader(self.request); #Get var from request place=self.request.get('place'); matchCurrentUser = self.request.get('createdByMe'); type=self.request.get_all('type') tags=self.request.get_all('tag'); maxFetch=self.request.get_range('max',0,1000,default=20); offset=self.request.get_range('offset',0,10000,default=0); keys_only=self.request.get('keys_only'); callbackJSONP=self.request.get('JSONP'); #time filter #filter > distance time from now ddays=self.request.get_range('days',0,365,default=0); dhours=self.request.get_range('hours',0,24,default=0); dminutes=self.request.get_range('minutes',0,60,default=0); if(self.request.get('seconds')):dseconds=abs(int(self.request.get('seconds'))); else:dseconds=0; #filter > timeString1 timeString1=self.request.get('timeLowerBound'); #Query if(keys_only):query = db.Query(Action, keys_only=True); else:query = db.Query(Action, keys_only=False); #Filter if place: query.filter("place =", place); if matchCurrentUser: query.filter("whoCreated =", ENV.CurrentUser); if type: query.filter("type IN", type); for tag in tags: if tag:query.filter("tag =", tag); if(ddays or dhours or dminutes or dseconds): timeFilter=datetime.datetime.now()-datetime.timedelta(days=ddays,hours=dhours,minutes=dminutes,seconds=dseconds ); query.filter("created >",timeFilter); if(timeString1): time_lower_bound_filter=datetime.datetime.strptime(timeString1,"%Y-%m-%d %H:%M:%S.%f"); query.filter("created >",time_lower_bound_filter); #Sort query.order("-created"); #Fetch data=[]; if maxFetch>0: data = query.fetch(maxFetch,offset); else: data = [entry for entry in query]; #reversed, most new at bottom entries=reversed(data); #render if(keys_only): jsonData = json.dumps( [entry for entry in entries]) ; else: jsonData = json.dumps( [entry.dictJSON() for entry in entries]) ; if callbackJSONP: self.response.out.write(callbackJSONP+'('+jsonData+');'); else: self.response.out.write(jsonData); return;
def post(self): ENV=tool.readHeader(self.request); #get icon id=self.request.get('id'); keyName=self.request.get('keyName'); callbackJSONP=self.request.get('JSONP'); entry=None; if id: try: entry=db.get( db.Key(id)); except datastore_errors.BadKeyError: self.response.out.write(json.dumps([])); return; if not entry and keyName: entry=db.get(db.Key.from_path('Icon',keyName )); if entry==None: self.response.out.write(json.dumps([])); return; #set new thumb thumb = self.request.get('thumb'); if thumb and len(thumb)>0:entry.thumb=thumb; #clear tag if self.request.get('clearTag'): entry.tag=[]; else: #delete tag from icon deleteTags = self.request.get_all('dtag'); for tag in deleteTags: try: entry.tag.remove(tag); except ValueError: continue; #add more tag to icon tags = self.request.get_all('tag'); if entry.tag==None:entry.tag=[]; for tag in tags: if tag not in entry.tag: entry.tag+=[tag]; #clear content (if clearContent, old content will be wipe out) if self.request.get('clearContent'): entry.content={}; #modify value for key by merging content try: contentDict=json.loads(entry.content); mergeContent=json.loads(self.request.get('mergeContent')); contentDict.update(mergeContent); except ValueError: self.response.out.write(json.dumps([])); return; #remove none value # for key in contentDict: # if contentDict[key]==None: # del contentDict[key]; entry.content=json.dumps(contentDict); entry.whereModified=ENV.CityLatLong; entry.put(); jsonData = json.dumps( [entry.dictJSON()]) ; if callbackJSONP: self.response.out.write(callbackJSONP+'('+jsonData+');'); else: self.response.out.write(jsonData); return;