def fav(self): #go directly to couchbase for now user = account.get(self.user_id) user.setdefault('favs', []) item_id, = self.required_params(['item_id']) fav = int(self.request.params.get('fav')) print fav, type(fav) if not fav: return self.unfav() increment = 1 if item_id not in user['favs']: user['favs'].append(str(item_id)) user.save() timeblock = int(time.time() / (60 * 30)) key = 'favsblock_%s_%s' % (item_id, timeblock) val, cas = models.couchbase.incr('INTERNAL_%s' % key, 1, 0) models.couchbase.set(key, 0, 0, { 'value': val, 'item_id': item_id, 'time_block': timeblock }) key = 'favs_%s' % (item_id) val, cas = models.couchbase.incr('INTERNAL_%s' % key, increment, 0) models.couchbase.set(key, 0, 0, {'value': val, 'item_id': item_id}) return {'success': True}
def create(self): title, price = self.required_params(['title', 'price']) user = account.get(self.user_id) longitude, latitude, place_ref, place_name, address = self.optional_params( [ 'longitude', 'latitude', 'place_ref', 'place_name', 'formatted_address' ]) new_item = ItemModel.create(self.user_id, title, price=price, loc=[longitude, latitude], place_name=place_name, place_ref=place_ref, address=address) if 'picture' in self.request.POST: extension = self.request.POST['picture'].filename.split('.')[-1] sha = hashlib.sha224('%s_%s_%s' % (new_item['id'], 0, '*&(##BD!@')) image_key = sha.hexdigest() + '.' + extension input_file = self.request.POST['picture'].file content_type = self.request.POST['picture'].type aws.s3_upload_file( input_file, content_type, image_key, 'gleebox_items', ) new_item['pictures'].append(image_key) new_item.save() return {'item': new_item.data}
def unfav(self): #go directly to couchbase for now user = account.get(self.user_id) user.setdefault('favs', []) item_id, = self.required_params(['item_id']) increment = 1 if str(item_id) in user['favs']: user['favs'].remove(str(item_id)) user.save() timeblock = int(time.time() / (60 * 30)) key = 'favsblock_%s_%s' % (item_id, timeblock) current_block = models.couchbase.get('INTERNAL_%s' % key) if current_block and current_block[2] > 0: val, cas = models.couchbase.decr('INTERNAL_%s' % key, increment, 0) models.couchbase.set(key, 0, 0, { 'value': val, 'item_id': item_id, 'time_block': timeblock }) key = 'favs_%s' % (item_id) val, cas = models.couchbase.decr('INTERNAL_%s' % key, increment, 0) models.couchbase.set(key, 0, 0, {'value': val, 'item_id': item_id}) return {'success': True}
def get(self): token = self.request.params.get('token') if not token: token = self.request.cookies.get('token') id = auth.decode_token(token).split('|')[0] acct = account.get(id) if acct: acct['token'] = token else: raise ApiException('User not found') return {'user': acct.data}
def create(self): title, price = self.required_params(['title', 'price']) user = account.get(self.user_id) longitude, latitude, place_ref, place_name, address = self.optional_params(['longitude', 'latitude', 'place_ref', 'place_name', 'formatted_address']) new_item = ItemModel.create(self.user_id, title, price=price, loc=[longitude, latitude], place_name=place_name, place_ref=place_ref, address=address) if 'picture' in self.request.POST: extension = self.request.POST['picture'].filename.split('.')[-1] sha = hashlib.sha224('%s_%s_%s' % (new_item['id'], 0, '*&(##BD!@')) image_key = sha.hexdigest() + '.' + extension input_file = self.request.POST['picture'].file content_type = self.request.POST['picture'].type aws.s3_upload_file(input_file, content_type, image_key, 'gleebox_items',) new_item['pictures'].append(image_key) new_item.save() return {'item': new_item.data}
def unfav(self): #go directly to couchbase for now user = account.get(self.user_id) user.setdefault('favs', []) item_id, = self.required_params(['item_id']) increment = 1 if str(item_id) in user['favs']: user['favs'].remove(str(item_id)) user.save() timeblock = int(time.time() / (60 * 30)) key = 'favsblock_%s_%s' % (item_id, timeblock) current_block = models.couchbase.get('INTERNAL_%s' % key) if current_block and current_block[2] > 0: val, cas = models.couchbase.decr('INTERNAL_%s' % key , increment, 0) models.couchbase.set(key, 0, 0, {'value': val, 'item_id':item_id, 'time_block': timeblock}) key = 'favs_%s' % (item_id) val, cas = models.couchbase.decr('INTERNAL_%s' % key, increment, 0) models.couchbase.set(key, 0, 0, {'value': val, 'item_id':item_id}) return {'success': True}
def fav(self): #go directly to couchbase for now user = account.get(self.user_id) user.setdefault('favs', []) item_id, = self.required_params(['item_id']) fav = int(self.request.params.get('fav')) print fav, type(fav) if not fav: return self.unfav() increment = 1 if item_id not in user['favs']: user['favs'].append(str(item_id)) user.save() timeblock = int(time.time() / (60 * 30)) key = 'favsblock_%s_%s' % (item_id, timeblock) val, cas = models.couchbase.incr('INTERNAL_%s' % key , 1, 0) models.couchbase.set(key, 0, 0, {'value': val, 'item_id':item_id, 'time_block': timeblock}) key = 'favs_%s' % (item_id) val, cas = models.couchbase.incr('INTERNAL_%s' % key, increment, 0) models.couchbase.set(key, 0, 0, {'value': val, 'item_id':item_id}) return {'success': True}
def get_favs(self): user = account.get(self.user_id) return {'favs': user['favs']}