Exemple #1
0
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})
Exemple #2
0
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
Exemple #3
0
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)
Exemple #5
0
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()
Exemple #6
0
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)
Exemple #10
0
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()
Exemple #11
0
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()
Exemple #12
0
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()
Exemple #13
0
def token_result(user, jwt, expires):
    return api.success({
        'user': user.get_api_dict(privacy=False),
        'jwt': jwt,
        'expires': str(expires)
    })
Exemple #14
0
def get_profile():
    return api.success(g.user.get_api_dict(privacy=False))
Exemple #15
0
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())
Exemple #16
0
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]})
Exemple #17
0
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())