def input_loop(datatimes=None, spq=None): global request line = '' # loop over the lines in a sqp adding them with priority 1001 which should put them at the top if spq is not None: request = spq else: request = Request() while True: line = raw_input(':::: ') if line in ['stop', 'write']: break if line == 'help': print_inst() continue # make an entry from the input try: line = line.split(',') except AttributeError: continue line = [v.strip() for v in line] # is the input a ShortCut? if len(line) == 2: try: sc = int(line[0]) except ValueError: print("** invalid sc [1,2,3,4]**") continue if line[1].upper() == 'DATA_TIMES::': entry = Entry(sc, 'DATA_TIMES', datetime.datetime.utcnow().replace(microsecond=0), 1, 1000) print('{0}: CREATED -- {1} to {2}').format(entry, entry.date.isoformat(), entry.endDate.isoformat()) request.addEntry(entry) continue elif line[1].upper().startswith('CONFIG'): tmp = line[1].split(':') try: date = datetime.datetime.strptime(tmp[1], '%Y%m%d') except ValueError: continue date2 = date while date2.day == date.day: try: entry = Entry(sc, 'CONFIG', date2, int(typeDict['CONFIG']['dataPerBlock'])*60 , 900, datatimes=datatimes) # hi pri except FIREOffException: date2 += datetime.timedelta(seconds=1) continue print('{0}: created -- {1} to {2}').format(entry, entry.date.isoformat(), entry.endDate.isoformat()) request.addEntry(entry) date2 += datetime.timedelta(seconds=entry.duration) continue elif line[1].upper().startswith('CONTEXT'): tmp = line[1].split(':') try: date = datetime.datetime.strptime(tmp[1], '%Y%m%d') except ValueError: continue date2 = date while date2.day == date.day: try: entry = Entry(sc, 'CONTEXT', date2, int(typeDict['CONTEXT']['dataPerBlock'])*60 , 700, datatimes=datatimes) # hi pri except FIREOffException: date2 += datetime.timedelta(seconds=1) continue print('{0}: created -- {1} to {2}').format(entry, entry.date.isoformat(), entry.endDate.isoformat()) request.addEntry(entry) date2 += datetime.timedelta(seconds=entry.duration) continue elif line[1].upper().startswith('MICRO_BURST'): tmp = line[1].split(':') try: date = datetime.datetime.strptime(tmp[1], '%Y%m%dT%H') except ValueError: continue date2 = date while date2.day == date.day: try: entry = Entry(sc, 'MICRO_BURST', date2, int(typeDict['MICRO_BURST']['dataPerBlock'])*60 , 500, datatimes=datatimes) except FIREOffException: date2 += datetime.timedelta(seconds=1) continue print('{0}: created -- {1} to {2}').format(entry, entry.date.isoformat(), entry.endDate.isoformat()) request.addEntry(entry) date2 += datetime.timedelta(seconds=entry.duration) continue elif len(line) != 5: print('** input much be 5 entries **') continue else: try: sc = int(line[0]) except ValueError: print("** invalid sc [1,2,3,4]**") continue typ = line[1].upper() if typ not in typeDict: print("** invalid type [{0}]**".format(' '.join(typeDict.keys()))) continue try: date = datetime.datetime.strptime(line[2], '%Y%m%dT%H:%M:%S') except ValueError, e: try: date = datetime.datetime.strptime(line[2], '%Y-%m-%dT%H:%M:%S') except ValueError, e: print e continue try: dur = int(line[3]) except ValueError: print("** invalid duration**") continue if dur <= 0: print("** invalid duration**") continue try: pri = int(line[4]) except ValueError: print("** invalid priority**") continue if pri <= 0: print("** invalid priority**") continue warnings.simplefilter('error') try: entry = Entry(sc, typ, date, dur, pri, datatimes=datatimes) except UserWarning, e: warnings.simplefilter('always') entry = Entry(sc, typ, date, dur, pri, datatimes=datatimes) print('** {0} **'.format(e))