Exemplo n.º 1
0
    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
Exemplo n.º 2
0
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."