Пример #1
0
def updateZone(self, json_obj):
	try:
		user_obj = Users.get_by_id(int(json_obj["user_id"]))
		data = {}
		#if user not valid
		if not user_obj :
			
			data = {'status' : 1,
					'zone_name' : "unknown", 
					'map_name' : "unknown", 
					'last_update' : "unknown"
					}
			
			self.response.headers['Content-Type'] = "application/json"
			self.response.out.write(json.dumps(data))
			return
		
		#get zone from mac address
		item = db.GqlQuery(("SELECT * FROM BSSIDZones " +
			"WHERE mac_address = :1"), urllib.unquote_plus(json_obj["mac_address"]))	
		if item.count() > 0:
			
			curr_zone = item[0].zones
			zone_id = curr_zone.zone_id

			#update user location
			user_obj.last_location = curr_zone.key()
			user_obj.put()
			
			
			if curr_zone.maps.count() > 0:
				map_name = curr_zone.maps[0].map_name
				

			#generating JSON data
				data = {'status' : 0,
						'zone_name' : curr_zone.zone_name, 
						'map_name' : map_name,
						'last_update' : main.pretty_date(user_obj.last_update),
						}	
				self.response.headers['Content-Type'] = "application/json"
				self.response.out.write(json.dumps(data))	
				return
			
			#map not found
			else: 
				data = {'status' : 3,
						'zone_name' : curr_zone.zone_name, 
						'map_name' : "unknown",
						'last_update' : main.pretty_date(user_obj.last_update),
						}	
				self.response.headers['Content-Type'] = "application/json"
				self.response.out.write(json.dumps(data))	
				return
		#zone unknown						
		else: 	
			data = {'status' : 2,
					'zone_name' : "unknown", 
					'last_update' : main.pretty_date(user_obj.last_update),
					'map_name' : "unknown"
					}
			self.response.headers['Content-Type'] = "application/json"
			self.response.out.write(json.dumps(data))	
			return
	
	except apiproxy_errors.OverQuotaError, message:
		logging.error(message)
		self.response.headers['Content-Type'] = "application/json"
		self.response.out.write(json.dumps({"status" : 10}))