示例#1
0
文件: parsing.py 项目: timbotron/ICLS
    def __init__(self, argv):
        if argv[1][0] == "-":
            for arg in argv[1]:
                if arg == "r":
                    self.flags["is_report"] = True
                elif arg == "p":
                    self.flags["is_purge"] = True
                    self.flags["search_term"] = argv[2]
                elif arg == "m":
                    self.flags["is_monochrome"] = True
                elif arg == "d":
                    self.flags["is_default"] = True
                    self.flags["is_entry"] = True
                    self.flags["entry_text"] = argv[2]
                elif arg == "c":
                    self.flags["is_complete"] = True
                    self.flags["is_entry"] = True
                    self.flags["entry_text"] = argv[2]
                elif arg == "h":
                    self.flags["is_help"] = True
                elif arg == "t":
                    self.flags["is_tag"] = True
                    self.flags["is_search"] = True
                    self.flags["is_report"] = True
                elif arg == "s":
                    self.flags["is_search"] = True
                    self.flags["is_report"] = True
            if self.flags["is_complete"] == True and self.flags["is_report"] == True:
                self.flags["is_help"] = True
        else:
            self.flags["is_entry"] = True
            self.flags["entry_text"] = argv[1]
            # If anything was wrong, send to help
        if self.flags["is_help"]:
            print_help()
            # Lets get all the report/search stuff together!
        if self.flags["is_report"]:
            self.flags["search_query"] = "select * from `" + config.values["domain"] + "`"
            # It's a report, first try to parse it
            # print "It's a report!, num of args:"+str(len(argv))
            if self.flags["is_search"]:
                self.flags["search_query"] += " WHERE "
                # print "It's a search!"
                if len(argv) < 3:
                    print_error("No Search term or tag detected; use -h to see options")
                else:
                    if argv[2].count(",") > 0:
                        for i, v in enumerate(argv[2].split(",")):
                            self.flags["search_term"].append(v)
                    else:
                        self.flags["search_term"].append(argv[2])
                    # TODO Now we iterate and make there where clause, IN if search, tag= if tag
                    for key, term in enumerate(self.flags["search_term"]):
                        if self.flags["is_tag"]:
                            if key == 0:
                                self.flags["search_query"] += "tag IN ("
                            if key > 0:
                                self.flags["search_query"] += ","
                            self.flags["search_query"] += "'" + term + "'"
                        else:
                            if key > 0:
                                self.flags["search_query"] += " AND "
                            self.flags["search_query"] += " entry LIKE '%" + term + "%'"
                    if self.flags["is_tag"]:
                        self.flags["search_query"] += ")"

                if len(argv) >= 4:
                    # term and start date
                    self.flags["start_date"] = argv[3]
                    self.flags["search_query"] += " AND date>'" + self.flags["start_date"] + "'"
                if len(argv) == 5:
                    # term, start and finish date
                    self.flags["end_date"] = argv[4]
                    self.flags["search_query"] += " AND date<'" + self.flags["end_date"] + "'"
            else:
                if len(argv) >= 3:
                    # start date only
                    self.flags["start_date"] = argv[2]
                    self.flags["search_query"] += " WHERE date>'" + self.flags["start_date"] + "'"
                if len(argv) == 4:
                    # term and start date
                    self.flags["end_date"] = argv[3]
                    self.flags["search_query"] += " AND date<'" + self.flags["end_date"] + "'"