def get(self): r = BookmarkAdd() if not self.request.get('id'): return fb_key = self.request.get('id') user = users.get_current_user() gamer_key = Key.from_path(kloombaDb.Gamer.kind(), user.user_id()) #get flowerbed flowerbed = GqlQuery('SELECT * FROM Flowerbed WHERE __key__=:1', fb_key).get() if not flowerbed: return #no such flowerbed #check bookmark bookmark = GqlQuery( 'SELECT * FROM Bookmark WHERE ANCESTOR IS :1 AND flowerbed=:2', gamer_key, Key(fb_key)).get() if bookmark: return #bookmark allready exist bookmark = kloombaDb.Bookmark(parent=gamer_key) bookmark.owner = user.user_id() bookmark.flowerbed = flowerbed bookmark.put() r.timestamp = int(time.time()) fb = r.flowerbed fb.timestamp = int(time.mktime(flowerbed.timestamp.timetuple())) fb.id = str(flowerbed.key()) fb.latitude = int(flowerbed.point.lat * 1000000) fb.longitude = int(flowerbed.point.lon * 1000000) fb.owner = flowerbed.owner_public_id fb.flowers = flowerbed.flowers if self.request.get('debug', False): self.response.out.write(r) else: self.response.out.write(r.SerializeToString())
def get(self): r = BookmarkAdd() if not self.request.get('id'): return fb_key = self.request.get('id') user = users.get_current_user() gamer_key = Key.from_path(kloombaDb.Gamer.kind(), user.user_id()) #get flowerbed flowerbed = GqlQuery('SELECT * FROM Flowerbed WHERE __key__=:1', fb_key).get() if not flowerbed: return #no such flowerbed #check bookmark bookmark = GqlQuery('SELECT * FROM Bookmark WHERE ANCESTOR IS :1 AND flowerbed=:2', gamer_key, Key(fb_key)).get() if bookmark: return #bookmark allready exist bookmark = kloombaDb.Bookmark(parent=gamer_key) bookmark.owner = user.user_id() bookmark.flowerbed = flowerbed bookmark.put() r.timestamp = int(time.time()) fb = r.flowerbed fb.timestamp = int(time.mktime(flowerbed.timestamp.timetuple())) fb.id = str(flowerbed.key()) fb.latitude = int(flowerbed.point.lat * 1000000) fb.longitude = int(flowerbed.point.lon * 1000000) fb.owner = flowerbed.owner_public_id fb.flowers = flowerbed.flowers if self.request.get('debug', False): self.response.out.write(r) else: self.response.out.write(r.SerializeToString())
def get(self): r = FlowerbedTransfer() if not int(self.request.get('amount'), 0): return fb_id = self.request.get('id') amount = int(self.request.get('amount')) #get from memcache flowerbed = memcache.get(fb_id) if not flowerbed: flowerbed = GqlQuery('SELECT * FROM Flowerbed WHERE __key__=:1', Key(fb_id)).get() ts = time.time() if flowerbed: fb_flowers = flowerbed.flowers +\ int(floor( (ts - time.mktime(flowerbed.timestamp.timetuple())) / RULES['TICK'] *\ RULES['FLOWERS_PER_TICK'] )) user = users.get_current_user() gamer_key = Key.from_path(kloombaDb.Gamer.kind(), user.user_id()) gamer_hash = hashlib.md5(user.user_id() + SALT).hexdigest() bp_flowers = GqlQuery('SELECT * FROM Backpack WHERE ANCESTOR IS :1 AND name=:2', gamer_key, 'flower').get() #TODO: check if flowerbed is close to user if amount < 0: #from if flowerbed.owner != user.user_id(): return #not your flowerbed if fb_flowers < amount * -1: return #not enough on flowerbed #ok, now subtract flowerbed.flowers = fb_flowers + amount flowerbed.put() memcache.set(str(flowerbed.key()), flowerbed) bp_flowers.amount -= amount bp_flowers.put() else: #to if bp_flowers.amount < amount: return #not enough in backpack if flowerbed.owner == user.user_id(): #ok, it's mine flowerbed.flowers = fb_flowers + amount flowerbed.put() memcache.set(str(flowerbed.key()), flowerbed) bp_flowers.amount -= amount bp_flowers.put() else: #ok, attack if fb_flowers - amount >= 0: #still the same owner flowerbed.flowers = fb_flowers - amount flowerbed.put() memcache.set(str(flowerbed.key()), flowerbed) bp_flowers.amount -= amount bp_flowers.put() else: #conquer #set lost lost = GqlQuery('SELECT * FROM Possession WHERE ANCESTOR IS :1 AND flowerbed=:2', Key.from_path(kloombaDb.Gamer.kind(), flowerbed.owner), flowerbed).get() lost.lost = True lost.put() #set flowerbed flowerbed.flowers = amount - fb_flowers flowerbed.owner = user.user_id() flowerbed.owner_public_id = gamer_hash flowerbed.put() memcache.set(str(flowerbed.key()), flowerbed) #set backpack bp_flowers.amount -= amount bp_flowers.put() #set conquer possession = GqlQuery('SELECT * FROM Possession WHERE ANCESTOR IS :1 AND flowerbed=:2', gamer_key, flowerbed).get() if not possession: possession = kloombaDb.Possession(parent=gamer_key) possession.flowerbed = flowerbed possession.lost = False possession.put() backpack = GqlQuery('SELECT * FROM Backpack WHERE ANCESTOR IS :1', gamer_key).run() #set timestamps r.flowerbed.timestamp = int(time.time()) r.backpack.timestamp = int(time.time()) #set flowerbed r.flowerbed.id = str(flowerbed.key()) r.flowerbed.latitude = int(flowerbed.point.lat * 1000000) r.flowerbed.longitude = int(flowerbed.point.lon * 1000000) r.flowerbed.owner = flowerbed.owner_public_id r.flowerbed.flowers = flowerbed.flowers #set backpack for i in backpack: bp = r.backpack.item.add() bp.name = i.name bp.amount = i.amount if self.request.get('debug', False): self.response.out.write(r) else: self.response.out.write(r.SerializeToString())
def get(self): r = FlowerbedTransfer() if not int(self.request.get('amount'), 0): return fb_id = self.request.get('id') amount = int(self.request.get('amount')) #get from memcache flowerbed = memcache.get(fb_id) if not flowerbed: flowerbed = GqlQuery('SELECT * FROM Flowerbed WHERE __key__=:1', Key(fb_id)).get() ts = time.time() if flowerbed: fb_flowers = flowerbed.flowers +\ int(floor( (ts - time.mktime(flowerbed.timestamp.timetuple())) / RULES['TICK'] *\ RULES['FLOWERS_PER_TICK'] )) user = users.get_current_user() gamer_key = Key.from_path(kloombaDb.Gamer.kind(), user.user_id()) gamer_hash = hashlib.md5(user.user_id() + SALT).hexdigest() bp_flowers = GqlQuery( 'SELECT * FROM Backpack WHERE ANCESTOR IS :1 AND name=:2', gamer_key, 'flower').get() #TODO: check if flowerbed is close to user if amount < 0: #from if flowerbed.owner != user.user_id(): return #not your flowerbed if fb_flowers < amount * -1: return #not enough on flowerbed #ok, now subtract flowerbed.flowers = fb_flowers + amount flowerbed.put() memcache.set(str(flowerbed.key()), flowerbed) bp_flowers.amount -= amount bp_flowers.put() else: #to if bp_flowers.amount < amount: return #not enough in backpack if flowerbed.owner == user.user_id(): #ok, it's mine flowerbed.flowers = fb_flowers + amount flowerbed.put() memcache.set(str(flowerbed.key()), flowerbed) bp_flowers.amount -= amount bp_flowers.put() else: #ok, attack if fb_flowers - amount >= 0: #still the same owner flowerbed.flowers = fb_flowers - amount flowerbed.put() memcache.set(str(flowerbed.key()), flowerbed) bp_flowers.amount -= amount bp_flowers.put() else: #conquer #set lost lost = GqlQuery( 'SELECT * FROM Possession WHERE ANCESTOR IS :1 AND flowerbed=:2', Key.from_path(kloombaDb.Gamer.kind(), flowerbed.owner), flowerbed).get() lost.lost = True lost.put() #set flowerbed flowerbed.flowers = amount - fb_flowers flowerbed.owner = user.user_id() flowerbed.owner_public_id = gamer_hash flowerbed.put() memcache.set(str(flowerbed.key()), flowerbed) #set backpack bp_flowers.amount -= amount bp_flowers.put() #set conquer possession = GqlQuery( 'SELECT * FROM Possession WHERE ANCESTOR IS :1 AND flowerbed=:2', gamer_key, flowerbed).get() if not possession: possession = kloombaDb.Possession(parent=gamer_key) possession.flowerbed = flowerbed possession.lost = False possession.put() backpack = GqlQuery('SELECT * FROM Backpack WHERE ANCESTOR IS :1', gamer_key).run() #set timestamps r.flowerbed.timestamp = int(time.time()) r.backpack.timestamp = int(time.time()) #set flowerbed r.flowerbed.id = str(flowerbed.key()) r.flowerbed.latitude = int(flowerbed.point.lat * 1000000) r.flowerbed.longitude = int(flowerbed.point.lon * 1000000) r.flowerbed.owner = flowerbed.owner_public_id r.flowerbed.flowers = flowerbed.flowers #set backpack for i in backpack: bp = r.backpack.item.add() bp.name = i.name bp.amount = i.amount if self.request.get('debug', False): self.response.out.write(r) else: self.response.out.write(r.SerializeToString())