Example #1
0
	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);
Example #2
0
	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);
Example #3
0
	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);
Example #4
0
	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;
Example #5
0
	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();
Example #6
0
	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;
Example #7
0
	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;
Example #8
0
	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;