Beispiel #1
0
def get_apps():

    user_app = UserApp()
    try:
        user_id = current_user.get_id()
        apps = user_app.get(user_id)

        if apps:
            response = {}
            response['user'] = current_user.serialize()
            response['apps'] = apps
            return jsonify(response)


    except Exception as e:
        print e
        raise ExceptionResponse() 
Beispiel #2
0
    def post(self):
        action = request.json.get('action')
        item_id = int(request.json.get('item_id'))
        survey_id = int(request.json.get('survey_id'))

        if action == 'buy':
            item = Item.query.get(item_id)
            wallet = UserWallet.query.filter(UserWallet.user==current_user).filter(UserWallet.survey_id==survey_id).one()

            if wallet.dollars < item.price:
                return self.response_fail('You do not have enough money.\n\nConsider selling some items first.')
            else:
                wallet.dollars -= item.price
                purchase = Purchase(
                    user=current_user,
                    thing=item,
                    dollars=item.price,
                    bought_date=datetime.utcnow()
                )

                db.session.add(purchase)
                db.session.commit()

                return self.response_ok(data={
                    'purchase': purchase.serialize(),
                    'balance': wallet.dollars,
                    'who_bought': [{'name': p.user.name, 'avatar': p.user.avatar}
                                   for p in Purchase.query
                                   .filter(Purchase.thing_id==item_id).all()],
                })
        elif action == 'sell':
            purchase = (Purchase.query
                        .filter(Purchase.thing_id==item_id)
                        .filter(Purchase.user==current_user)
                        .one())

            if not purchase:
                return self.response_fail('You do not have this item')
            else:
                wallet = (UserWallet.query
                          .filter(UserWallet.user==current_user)
                          .filter(UserWallet.survey_id==survey_id)
                          .one())
                wallet.dollars += purchase.dollars

                data={
                    'user': current_user.serialize(),
                    'item_id': item_id,
                    'purchase': purchase.serialize(),
                    'balance': wallet.dollars
                }

                db.session.delete(purchase)
                db.session.commit()

                data['who_bought'] = [
                    {'name': p.user.name, 'avatar': p.user.avatar}
                    for p in Purchase.query.filter(Purchase.thing_id==item_id).all()
                ]

                return self.response_ok(data=data)

        return self.response_fail('Wrong method')