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