class Scheduler(Thread): file_semaphore = Semaphore() def __init__(self,controller,dispatch,error): Thread.__init__(self) self.policy = policy.get_policy() self.controller = controller self.do_dispatch = dispatch self.error = error self.queue = Queue() self.queue.load() self.lock = Lock() self._quit = Event() self.add_queue = SyncQueue(0) self.num_run = 0 self.log = get_logger() def job(self,id): return self.queue.get(id) def jobs(self): return self.queue.get() def save(self): self.queue.save() def add(self,item): if self.lock.acquire(0): self.queue.add(item) self.lock.release() else: self.add_queue.put(item) def add_url(self,url,referer=None): try: fd = urlopen(url,referer=referer) meta = fd.read() fullurl = fd.geturl() fd.close() save_torrent = 1 if fullurl.startswith('file://'): torrent_file = urllib.unquote(url) if torrent_file.startswith('file://'): torrent_file = torrent_file[7:] elif fullurl.startswith('file:/') and fullurl[8] == '|': torrent_file = urllib.unquote(url) torrent_file = torrent_file[7]+':'+torrent_file[9:] if torrent_file.find('Temporary Internet Files') >= 0: filename = os.path.split(url)[1] torrent_file = os.path.join(self.policy(policy.TORRENT_PATH), filename) else: filename = urllib.unquote(os.path.split(url)[1]) torrent_file = os.path.join(self.policy(policy.TORRENT_PATH), filename) torrent_path = os.path.dirname(torrent_file) if not os.path.exists(torrent_path): os.mkdir(torrent_path) if save_torrent: fd = open(torrent_file,'wb') fd.write(meta) fd.close() #~ d = Download() #cbt try: #cbt rd = bdecode(meta) #cbt if rd['cbt_user'] == self.policy(policy.CBT_LOGIN): #cbt dest_path = rd['cbt_path'] #cbt except: #cbt dest_path = self.policy(policy.DEST_PATH) #cbt self.add(QueueEntry(torrent_file, dest_path=dest_path)) #cbt except Exception,why: return str(why)
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'])