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()
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')