def __init__(self, tmp, list_formations = False): verb("Initializing... ") self.fetcher = UMonsTimesheetFetcher(MAX_RETRIES, RETRY_DELAY) verb("done\n") self.list_formations = list_formations self.formations = self.get_formations() self.periods = self.get_periods() self.tmp = tmp
class ParserFetcher: def __init__(self, tmp, list_formations = False): verb("Initializing... ") self.fetcher = UMonsTimesheetFetcher(MAX_RETRIES, RETRY_DELAY) verb("done\n") self.list_formations = list_formations self.formations = self.get_formations() self.periods = self.get_periods() self.tmp = tmp def get_formations(self): verb("Fetch formations... ") formations = {} flist = self.fetcher.formations.items() for fid, fname in flist: formations[fid] = fname if self.list_formations: sort_func = lambda (a,b), (c,d): cmp(b.lower(), d.lower()) flist.sort(sort_func) for fid, fname in flist: print str(fid) + " - " + fname verb("done: got " + str(len(flist)) + " formations\n") return formations def get_periods(self): verb("Fetch periods... ") periods = {} plist = self.fetcher.periods.items() for pid, pname in plist: periods[pid] = pname verb("done: got " + str(len(plist)) + " periods\n") return periods def fetch(self, fid): for pid in self.periods.keys(): html = self.fetcher.fetch_post_form(fid, [], pid) filename = path.join(self.tmp, "html", str(fid) + "-" + str(pid) + ".html") try: fd = codecs.open(filename, "w", "utf8") fd.write(unescape_html(html)) fd.close() except IOError, err: print >> sys.stderr, err
def main(): try: try: opts, args = getopt.getopt(sys.argv[1:], "p:g:m:i:vh",\ ["periods=", "groups=", "html=", "ics=", "verbose",\ "list-formations", "list-periods", "list-rooms", "codename-sort", "output-formation-name", "output-period-name", "max-retries", "retry-delay", "help"]) except getopt.GetoptError, err: print >> sys.stderr, str(err) usage() sys.exit(2) sort_func = lambda (a,b), (c,d): cmp(b.lower(), d.lower()) output_formation_name = 0 output_period_name = 0 if ('-h', '') in opts or ('--help', '') in opts: usage() sys.exit() if ("--codename-sort", "") in opts: sort_func = lambda (a,b), (c,d): cmp(a.lower(), c.lower()) if ("--output-formation-name", "") in opts: output_formation_name = 1 if ("--output-periods-name", "") in opts: output_period_name = 1 if ("--list-formations", "") in opts: formations_list = UMonsTimesheetFetcher( max_retries, retry_delay).formations.items() formations_list.sort(sort_func) for fcodename, fname in formations_list: print "%s - %s" % (fname, fcodename) sys.exit(0) if ("--list-periods", "") in opts: periods_list = UMonsTimesheetFetcher( max_retries, retry_delay).periods.items() periods_list.sort(sort_func) for pcodename, pname in periods_list: print "%s - %s" % (pname, pcodename) sys.exit(0) if ("--list-rooms", "") in opts: rooms_list = UMonsTimesheetFetcher( max_retries, retry_delay).rooms.items() rooms_list.sort(sort_func) for rcodename, rname in rooms_list: print "%s - %s" % (rname, rcodename) sys.exit(0) if len(args) == 0: print >> sys.stderr, 'ERROR: Missing formation parameter.' print >> sys.stderr, ' %s -h or --help to get help.' %\ sys.argv[0] sys.exit(2) formations = map(decode_input, args) periods = [] groups = [] output_funcs = [] verb = False opts = map(lambda (x, y): (decode_input(x), decode_input(y)), opts) for o, a in opts: if o in ("-p", "--periods"): periods.extend(a.split(",")) elif o in ("-g", "--groups"): groups.extend(a.split(",")) elif o in ("-m", "--html"): if not os.path.isdir(a): print u"\"%s\" not a directory, creating." % a try: os.makedirs(a) except OSError, err: print >> sys.stderr, err sys.exit(2) output_funcs.append(partial(output_html, dir=a, output_formation_name=output_formation_name, output_period_name=output_period_name)) elif o in ("-i", "--ics"): print >> sys.stderr, "iCalendar format output",\ "is not yet implemented. Option ignored."