def get(self, request): ticket_service = TicketService() store = self.get_current_store() tickets = ticket_service.active_tickets_in(store) return self.success( {"list": [self.represent_ticket(ticket) for ticket in tickets]})
def patch(self, request, id): data = QueryDict(request.body) state = data['state'] ticket_service = TicketService() ticket = self._get_ticket(id) ticket.state = state ticket_service.save_ticket(ticket) return self.success(self.represent_ticket(ticket))
def post(self, request, utxid): tx_service = TxService() ticket_service = TicketService() order_tx = tx_service.load(utxid) if not order_tx: self.abort(message=f"Order tx({utxid}) not found", status_code=404) with tx_service.finish_order(order_tx) as creditor: # creditor.credit_order(amount=1000, name="John", ref="123-456", bank="NHBank") pass ticket = ticket_service.ticket_of_tx(utxid) return self.success({ "utxid": utxid, "ticket_id": ticket and ticket.id, "ticket_number": ticket and ticket.number, })
def test_load(ticket_1): assert TicketService().load(ticket_1.id) == ticket_1
def test_remove_ticket(ticket_1): TicketService().remove_ticket(ticket_1) assert ticket_1.removed
def test_active_tickets_in(ticket_1): assert len(TicketService().active_tickets_in(store=ticket_1.store)) == 1 assert len(TicketService().active_tickets_in(store=ticket_1.store, state='todo')) == 1 assert len(TicketService().active_tickets_in(store=ticket_1.store, state='done')) == 0
def test_ticket_of_tx(ticket_1): assert TicketService().ticket_of_tx(ticket_1.tx.utxid).id == ticket_1.id
def test_save_ticket(ticket_1): ticket_1.state = 'done' TicketService().save_ticket(ticket_1) assert TicketService().load(ticket_1.id).state == 'done'
def ticket_service(): return TicketService()
def delete(self, request, id): ticket_service = TicketService() ticket = self._get_ticket(id) ticket_service.remove_ticket(ticket) return self.success()
def _get_ticket(self, id): ticket = TicketService().load(id) if not ticket: self.abort(message=f"No ticket {id}", status_code=404) return ticket