Exemplo n.º 1
0
    def __init__(self, request: Request, user_id: int):
        super().__init__(request)

        self.bill_id = int(request.matchdict.get('bill_id'))
        self.bill = repository.get_bill_by_id(self.bill_id)

        self.user_id = user_id
        self.user = repository.get_user_by_id(user_id)
        self.amount = None
Exemplo n.º 2
0
def details_get(request: Request):
    bill_id = int(request.matchdict.get('bill_id'))
    bill = repository.get_bill_by_id(bill_id)
    if not bill:
        return Response(status=404)

    user_id = 1  # probably get from a cookie?
    user = repository.get_user_by_id(user_id)

    return {'user': user, 'bill': bill, 'error': None}
def get_bill_or_client_error(bill_id):
    try:
        bill_id: int = int(bill_id)
    except ValueError:
        raise HTTPBadRequest()
    else:
        bill: Optional[Bill] = repository.get_bill_by_id(bill_id)
        if bill is None:
            raise HTTPNotFound()
    return bill
Exemplo n.º 4
0
def details_post(request: Request):
    bill_id = int(request.matchdict.get('bill_id'))
    bill = repository.get_bill_by_id(bill_id)
    if not bill:
        return Response(status=404)

    user_id = 1  # probably get from a cookie?
    user = repository.get_user_by_id(user_id)

    amount = int(request.POST.get('amount', -1))
    if amount < 0 or amount > bill.total - bill.paid:
        error = 'Your amount must be more the zero and less than what you owe.'

        return {'user': user, 'bill': bill, 'error': error, 'amount': amount}

    repository.add_payment(amount, bill_id)

    return HTTPFound(location='/bill/{}'.format(bill_id))
Exemplo n.º 5
0
    def __init__(self, request: Request, user_id: int):
        super().__init__(request)

        self.bill_id = int(request.matchdict.get('bill_id', -1))
        self.bill = repository.get_bill_by_id(self.bill_id)

        self.user_id = user_id
        self.user = repository.get_user_by_id(user_id)
        self.amount = None

        if not self.user:
            self.error = "No user with ID {}".format(user_id)
        elif not self.bill:
            self.error = "The bill with ID {} was not found".format(
                self.bill_id)
        elif self.user.id != self.bill.user_id:
            self.error = "The bill does not belong to user"
            self.bill = None
Exemplo n.º 6
0
def details_post(request: Request):
    user_id = 1
    user = repository.get_user_by_id(user_id)

    bill_id = int(request.matchdict.get('bill_id'))
    bill = repository.get_bill_by_id(bill_id)
    if not bill:
        return Response(status=404)

    amount = int(request.POST.get('amount', -1))
    if amount < 0 or amount > bill.total - bill.paid:
        error = 'Your amount must be more than zero and less than what you owe.'

        return {
            'user': user,
            'bill': bill,
            'error': error,
            'amount': amount,
        }

    repository.add_payment(amount, bill_id)

    raise HTTPFound(location=f'/bill/{bill_id}')