#!/usr/bin/python import yaml config = yaml.safe_load(open("config.yml")) from notes import Notes, Note notebook = Notes() import sys if len(sys.argv) < 1: print("usage: add_note.py <text>") sys.exit() filename = sys.argv.pop(0) note_text = " ".join([str(x) for x in sys.argv]) if note_text != "": notebook.add_note(note_text)
parser.add_argument('-ap', '--append', help='Append to note', type=str) parser.add_argument('-d', '--delete', help='Delete note', type=str) parser.add_argument('-da', '--delall', help='Delete all notes', action='store_true') parser.add_argument('-v', '--view', help='View a note', type=str) parser.add_argument('-t', '--tick', help='Check off completed note', type=str) parser.add_argument('--step', help='unknown, required for tick', type=int) args = parser.parse_args() try: notesShelf = shelve.open('notes') if args.add: Notes.add_note(notesShelf, args.add) elif args.append: Notes.add_step(notesShelf, args.append) elif args.delete: Notes.delete_note(notesShelf, args.delete) elif args.delall: Notes.delete_all_notes(notesShelf) elif args.view: Notes.view_note(notesShelf, args.view) elif args.tick: Notes.delete_step(notesShelf, args.tick, args.step) elif args.list: Notes.list_notes(notesShelf) except ImportError: print('There was an error')
class Epilader: INTRA_URL = "https://intra.epitech.eu/" JSON_CONF = "./Config/conf.json" def __init__(self, arg): self.curl = pycurl.Curl() self.option = Option() self.option.parse(arg) self.log = Log(self.option.isVerboseMode()) self.datas = [] config = json.loads(open(Epilader.JSON_CONF).read()) self.login = config["login"] self.password = config["password"] self.notes = Notes(config["projets"], config["modules"]) def __del__(self): self.curl.close() def set_cookies(self): self.curl.setopt(self.curl.POST, 1) self.curl.setopt(self.curl.URL, Epilader.INTRA_URL) self.curl.setopt(self.curl.POSTFIELDS, 'login='******'&password='******'') def find_gpa(self, request_result): request_result = json.loads(request_result) try: gpa = float([x for x in request_result["gpa"] if (x["cycle"] == "bachelor")][0]['gpa']) except: self.log.error(Log.NO_GPA) return -1 return gpa def find_moyenne(self, request_result): self.notes.init() request_result = json.loads(request_result) for note in request_result["notes"]: self.notes.add_note(note) return self.notes.moyenne() def request(self, href): self.curl.setopt(self.curl.URL, href) reponse = io.BytesIO() self.curl.setopt(self.curl.WRITEFUNCTION, reponse.write) try: self.curl.perform() except KeyboardInterrupt: raise KeyboardInterrupt except: self.log.error(Log.REQUEST_FAIL) print ; return "" return reponse.getvalue().decode("utf-8") def launch(self): try: while True: user = input() if user == "" or user == "EOF": return href_gpa = Epilader.INTRA_URL + "user/" + user + "/?format=json" href_note = Epilader.INTRA_URL + "user/" + user + "/notes/?format=json" if user[0] != '#': gpa = self.find_gpa(self.request(href_gpa)) moyenne = self.find_moyenne(self.request(href_note)) self.log.write(user + "\t: " + str(gpa) + "\t: " + str(moyenne)) if gpa > 0: self.datas.append([user, gpa, moyenne]) except (KeyboardInterrupt, EOFError): print("KeyboardInterrupt") ; return def sort(self): self.datas.sort(key=lambda x: x[1], reverse=True) def display(self): rank = 1 for d in self.datas: self.option.write(str(rank) + " " + d[0] + "\t" + str(d[1]) + "\t" + str(d[2]) + "\n") rank += 1