Пример #1
0
class Agency(object):
  def __init__(self, name):
    self.name = name

    self.booked_phone = Queue()
    self.booked_cash = Queue()
    self.tickets = Queue()
    self.sold = Queue()

    self.load()

  def open(self):
    os.system("clear")
    print blue("Welcome to %s" % green(self.name))
    print blue("========================")
    while True:
      print red("How may I help you?")
      print yellow("1. Buy a ticket\n"
                   " 2. Book a ticket by phone\n"
                   " 3. Book a ticket\n"
                   " 4. Cancel booking\n"
                   " 5. See how many money do you have\n"
                   " 6. Goodbye!\n")

      option = raw_input(green("I want to: "))

      if option == "1":
        self.buy_ticket()

      if option == "2":
        self.book_ticket_by_phone()

      if option == "3":
        self.book_ticket()

      if option == "4":
        self.cancel_booking()

      if option == "5":
        self.money()

      if option == "6":
        break

  def ticket(self, in_queue):
    option = raw_input("Do you want a specific number?[Y/n]: ")
    if option in ['Y', 'y', 'YE', 'ye', 'YES', 'yes']:
      number = raw_input("Please insert a number: ")
      if number not in self.booked_phone and number not in self.booked_cash:
        number = self.tickets.find(number)
        in_queue.push(number)
        print "Your number is %s" % number[0]
      else:
        print "Number already taken"
        return self.buy_ticket()
    else:
      number = self.tickets.pop()
      self.booked_phone.push(number)
      print "Your ticket is %s" % number[0]

  def buy_ticket(self):
    self.ticket(self.sold)

  def book_ticket_by_phone(self):
    self.ticket(self.booked_phone)

  def book_ticket(self):
    self.ticket(self.booked_cash)

  def money(self):
    # get total from sold
    total = 0
    for ticket in self.sold:
      total += ticket[1]

    # get total from booked_with_cash
    for ticket in self.booked_cash:
      total += ticket[1]

    return total

  def cancel_booking(self):
    number = raw_input("Please enter the number: ")
    if number in self.booked_phone:
      self.booked_phone.find(number)

    if number in self.booked_cash:
      self.booked_cash.find(number)

    print "Thank you"

  def load(self):
    with open("logs/now") as f:
      content = json.load(f.read())

      self.booked_phone.load(content['phone'])
      self.booked_cash.load(content['cash'])
      self.tickets.load(content['tickets'])