コード例 #1
0
def getpostreqnode(name):
    name = name.upper()
    #if name in CourseMaster().potrees:
    #   return CourseMaster().getpotree(name)
    node = Node(name)
    if name not in CourseMaster().postreqs: CourseMaster().loadpostreqs(name)
    for course in CourseMaster().postreqs[name]:
        print "\033[K", "\r", "loading: " + name,
        stdout.flush()
        node.addchild(getpostreqnode(course), "or")
    CourseMaster().setpotree(node, name)
    return node
コード例 #2
0
def getprereqnode(name):
    name = name.upper()
    if name in CourseMaster().trees:
        return CourseMaster().gettree(name)
    try:
        parsed = parse_prereq(CourseMaster().getprereqs(name))
        evaled = eval(tree_sub(parsed.strip(",")))
        evaled.setname(name)
        CourseMaster().settree(evaled, name)
        return evaled
    except ParseException:
        CourseMaster().settree(Node(name), name)
        return Node(name)
コード例 #3
0
 def loadpotree(self):
     try:
         self.potree = CourseMaster().getpotree(self.name)
     except MissingException:
         self.potree = getpostreqnode(self.name)
         CourseMaster().setpotree(self.name, self.potree)
コード例 #4
0
 def loadterm(self):
     self.term = CourseMaster().getterm(self.name)
コード例 #5
0
 def loaddescription(self):
     self.description = CourseMaster().getdescription(self.name)
コード例 #6
0
 def loadtitle(self):
     self.title = CourseMaster().gettitle(self.name)
コード例 #7
0
 def loadpostreqs(self):
     self.postreqs = CourseMaster().getpostreqs(self.name)
コード例 #8
0
 def loadcoreqs(self):
     self.coreqs = CourseMaster().getcoreqs(self.name)
コード例 #9
0
 def loadprereqs(self):
     self.prereqs = CourseMaster().getprereqs(self.name)
コード例 #10
0
class Course(object):
    def __init__(self, name, lazy=True):
        self.name = name
        self.prereqs     = None
        self.coreqs      = None
        self.postreqs    = None
        self.description = None
        self.title       = None
        self.tree = None
        self.potree = None
        self.term = None
        self.delay = 0
        if not lazy:
            self.loadinfo()
    def loadinfo(self):
        self.loadprereqs()
        self.loadcoreqs()
        self.loadtitle()
        self.loaddescription()
        self.loadpostreqs()
        self.loadterm()
    def meetsprereqs(self, courses=courses):
        meets = True
        if self.prereqs == None: self.loadprereqs()
        try:
            meets = eval(sub_prereq(parse_prereq(self.prereqs).strip(",").replace(",", ", "), courses)) >= 50
        except ParseException:
            meets = True
        return meets
    def completed(self):
        return self.name in courses
    def loadprereqs(self):
        self.prereqs = CourseMaster().getprereqs(self.name)
    def loadcoreqs(self):
        self.coreqs = CourseMaster().getcoreqs(self.name)
    def loadpostreqs(self):
        self.postreqs = CourseMaster().getpostreqs(self.name)
    def loadtitle(self):
        self.title = CourseMaster().gettitle(self.name)
    def loaddescription(self):
        self.description = CourseMaster().getdescription(self.name)
    def loadterm(self):
        self.term = CourseMaster().getterm(self.name)
    def loadtree(self):
        try:
            self.tree = CourseMaster().gettree(self.name)
        except MissingException:
            self.tree = getprereqnode(self.name)
            CourseMaster().settree(self.name, self.tree)
    def loadpotree(self):
        try:
            self.potree = CourseMaster().getpotree(self.name)
        except MissingException:
            self.potree = getpostreqnode(self.name)
            CourseMaster().setpotree(self.name, self.potree)
    def printtree(self,year):
        try:
            self.tree.printtree(year=year)
        except TypeError:
            print "Tree unavailable."
    def printpotree(self):
        try:
            self.potree.printtree()
        except TypeError:
            print "Tree unavailable."
    def print_info(self):
        print self.title + ":"
        print self.description
        self.print_prereqs()
        print "Co-reqs:  " + self.coreqs
        print "Post-reqs: " + ", ".join(self.postreqs)
    def print_prereqs(self):
        print "Pre-reqs: " + self.prereqs
        if self.completed():
            print colored("You have completed this course", 'green')
        elif self.meetsprereqs():
            print colored("You have the required pre-reqs", 'blue')
        else: print colored("You do not have the required pre-reqs", 'red')
    def print_term(self):
	if len(self.term) > 1:
            print "The following sections are available in the %s session:" % self.term[0]
            for t in self.term[1:]:
                print "Section available in term %s." % t
	else:
	    print "No sections are available this session."