def delete_bill(billId): try: if not _delete_bill(billId): return api.not_found() # noqa:E701 DB.session.commit() return api.success({'deleted': True}) except Exception as ex: print("Unexpected exception deleting bill {}: {}".format(billId, ex)) return api.success({'deleted': False})
def register(formData=None): displayName, email, password = formData isOk, result = security.do_register(displayName, email, password) if isOk: result = api.success(result.get_api_dict(privacy=False)) # noqa:E701 else: result = api.bad_request(result) # noqa:E701 return result
def read_cycle(cycleId): isOk, err = _check_params() if not isOk: return err billCycle = BillingCycle.query.filter(BillingCycle.id == cycleId).first() if billCycle is None: return api.not_found() # noqa:E701 return api.success(billCycle.get_api_dict())
def reject_invitation(id): invitation = HouseholdInvitation.query\ .filter(HouseholdInvitation.id == id)\ .first() if invitation is None or (g.user.householdId != invitation.householdId and g.user.id != invitation.toUserId): return api.unauthorized() invitationId = invitation.id DB.session.delete(invitation) DB.session.commit() return api.success(invitationId)
def update_bill(billId, formData=None): name, cost = formData bill = _get_bill(billId) if bill is None: return api.not_found() # noqa:E701 bill.name = name bill.cost = cost try: DB.session.add(bill) DB.session.commit() return api.success(bill.get_api_dict()) except Exception as ex: print("Unexpected exception updating bill {}: {}".format(billId, ex)) return api.server_error()
def delete_bills(formData=None): billIds = formData[0] deletedBills = {} try: for billId in billIds: if _delete_bill(billId): deletedBills[billId] = True else: deletedBills[billId] = False DB.session.commit() return api.success({'deleted': deletedBills}) except Exception as ex: print("Unexpected exception deleting bills: {}".format(ex)) return api.server_error()
def send_invitation(formData=None): email, message = formData if g.user.email.lower() == message.lower(): return api.bad_request(ErrorCode.Self) toUser = User.query.filter(User.email == email).first() if toUser is None: return api.not_found() if toUser.householdId is not None: return api.bad_request(ErrorCode.AlreadyInHousehold) invitation = HouseholdInvitation(householdId=g.user.householdId, fromUserId=g.user.id, toUserId=toUser.id, sendTime=dates.utcnow(), message=message) DB.session.add(invitation) DB.session.commit() return api.success(invitation.get_api_dict())
def accept_invitation(id): currentUser = g.user invitation = HouseholdInvitation.query.filter(HouseholdInvitation.id == id and HouseholdInvitation.toUserId == currentUser.id).first() if invitation is None: return api.not_found() currentUser = User.query.filter(User.id == currentUser.id).first() currentUser.householdId = invitation.householdId currentUser.householdCreator = False apiDict = invitation.household.get_api_dict() DB.session.add(currentUser) DB.session.query(HouseholdInvitation).filter(HouseholdInvitation.toUserId == currentUser.id).delete() DB.session.commit() return api.success(apiDict)
def make_bill_payment(formData=None): cost = formData[0] # Unpack single value tuple userId = g.user.id bill = Bill.query.filter(Bill.id == g.billId).first() if bill is None: return api.not_found() # noqa:E701 currentCycle = bill.get_current_billing_cycle() payment = BillPayment(billId=bill.id, billCycleId=currentCycle.id, amount=cost, userId=userId) payment.timestamp = validation.utcnow() DB.session.add(payment) DB.session.commit() result = {'payment': payment.get_api_dict(), 'bill': bill.get_api_dict()} return api.success(result)
def update_household(householdId, formData=None): name = formData[0] user = g.user if householdId != user.householdId: return api.unauthorized() household = Household.query.filter(Household.id == householdId).first() household.name = name try: DB.session.add(household) DB.session.commit() return api.success(household.get_api_dict()) except Exception as ex: print("Error updaing household {}: {}".format(householdId, ex)) return api.server_error()
def create_bill(formData=None): billType, name, cost, date = formData isOk, code = _date_validator_round2(date, billType) if not isOk: return api.bad_request(code) # noqa:E701 try: bill = Bill(type=billType, name=name, householdId=g.user.householdId, cost=cost, date=date) DB.session.add(bill) DB.session.commit() # Commit so the new bill id is retrieved cycle = bill.create_current_billing_cycle() DB.session.add(cycle) DB.session.commit() return api.success(bill.get_api_dict()) except Exception as ex: print("Exception on bill insert: {}".format(ex)) return api.server_error()
def new_household(formData=None): name = formData[0] user = User.query.filter(User.id == g.user.id).first() if user.householdId is not None: return api.bad_request(ErrorCode.AlreadyInHousehold) household = Household(name=name, created=validation.utcnow()) try: DB.session.add(household) DB.session.commit() user.householdId = household.id user.householdCreator = True DB.session.add(household) DB.session.commit() return api.success(household.get_api_dict()) except Exception as ex: print("Unexpected exception on household insert: {}".format(ex)) return api.server_error()
def token_result(user, jwt, expires): return api.success({ 'user': user.get_api_dict(privacy=False), 'jwt': jwt, 'expires': str(expires) })
def get_profile(): return api.success(g.user.get_api_dict(privacy=False))
def read_bill(billId): bill = _get_bill(billId) if bill is None: return api.not_found() # noqa:E701 return api.success(bill.get_api_dict())
def get_household_users(): if g.user.householdId is None: return api.not_found() users = User.query.filter(User.householdId == g.user.householdId and User.id != g.user.id).all() return api.success({'users': [user.get_api_dict() for user in users]})
def my_household(): household = Household.query.filter(Household.id == g.user.householdId).first() if household is None: return api.not_found() else: return api.success(household.get_api_dict())