コード例 #1
0
    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}
コード例 #2
0
    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}
コード例 #3
0
    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}
コード例 #4
0
ファイル: account.py プロジェクト: tomzilla/gleebox
 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}
コード例 #5
0
ファイル: account.py プロジェクト: troyp/gleebox
 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}
コード例 #6
0
ファイル: item.py プロジェクト: tomzilla/gleebox
    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}
コード例 #7
0
ファイル: item.py プロジェクト: tomzilla/gleebox
    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}
コード例 #8
0
ファイル: item.py プロジェクト: tomzilla/gleebox
    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}
コード例 #9
0
ファイル: account.py プロジェクト: tomzilla/gleebox
 def get_favs(self):
     user = account.get(self.user_id)
     return {'favs': user['favs']}
コード例 #10
0
ファイル: account.py プロジェクト: troyp/gleebox
 def get_favs(self):
     user = account.get(self.user_id)
     return {'favs': user['favs']}