def open(self, prefix, port, rate=None): if self.isOpen(): error("Already opened!") else: if rate == None: self.rate = self.default else: self.rate = rate self.prefix = prefix self.name = port portname = prefix + port try: self.port = serial.Serial( portname, rate, timeout= .01, # time to accumulate characters: 10 ms @ 115200, thats up to 115.2 chars parity=self.parity, stopbits=self.stopbits, xonxoff=0, rtscts=0, # hw flow control bytesize=self.bytesize) note('opened %s at %d' % (port, rate)) self.start() # run serial in thread self.opened.emit() except Exception, e: if self.port: self.port.close() self.port = None # error('open port failed for '+prefix+port) raise Exception('open port failed for ' + prefix + port)
def update_teacher(id): teacher = orm_session.query(Teacher).filter(Teacher.id == id).first() firstname = request.form["firstname"].decode("utf-8") lastname = request.form["lastname"].decode("utf-8") birthdate = request.form["birthdate"].decode("utf-8") validate_birthdate(birthdate) nationality = request.form["nationality"].decode("utf-8") visa_status = request.form["visa_status"].decode("utf-8") salary_per_hour = request.form["salary_per_hour"].decode("utf-8") if validate_form_field_not_empty(firstname, lastname, birthdate): logger.info("Teacher's name is %s", firstname + ' ' + lastname) teacher.firstname = firstname teacher.lastname = lastname teacher.birthdate = birthdate teacher.nationality = nationality teacher.visa_status = visa_status teacher.salary_per_hour = salary_per_hour orm_session.add(teacher) orm_session.commit() message.success("successful") else: message.error("Failed") return redirect("teachers")
def try_to_move(self, dx=0, dy=0): player_x = state.player.x player_y = state.player.y new_x = player_x + dx new_y = player_y + dy if new_x < 0 or new_y < 0 or new_x >= self.width or new_y >= self.height: message.error("How'd you get over there? You cannot exit the map!", flip=True) return False new_cell = self.cells[new_y][new_x] new_cell.on_use() if new_cell.passable and (new_y == 0 or new_y >= self.height-1): #room warp time self.clear_player() if new_y <= 0: state.player.y = self.prev_room.height - 2 explore.set_room(self.prev_room) else: state.player.y = 1 explore.set_room(self.next_room) return if not new_cell.passable: if not new_cell.special: message.error("There is something in the way.") return False self.move_player(new_x, new_y) sanity.step()
def load(self, hits=0, bucket_id=None, **others): # just for loading with coverage # if bucket id is given, make sure it tallies if bucket_id and bucket_id != self.parent.offset + self.idx: message.error( 'given bucket index does no match actual bucket index') self.incr(hits, quiet=True)
def update_teacher(id): teacher = orm_session.query(Teacher).filter(Teacher.id==id).first() firstname = request.form["firstname"].decode("utf-8") lastname = request.form["lastname"].decode("utf-8") birthdate = request.form["birthdate"].decode("utf-8") validate_birthdate(birthdate) nationality = request.form["nationality"].decode("utf-8") visa_status = request.form["visa_status"].decode("utf-8") salary_per_hour = request.form["salary_per_hour"].decode("utf-8") if validate_form_field_not_empty(firstname, lastname, birthdate): logger.info("Teacher's name is %s", firstname + ' ' + lastname) teacher.firstname = firstname teacher.lastname = lastname teacher.birthdate = birthdate teacher.nationality = nationality teacher.visa_status = visa_status teacher.salary_per_hour = salary_per_hour orm_session.add(teacher) orm_session.commit() message.success("successful") else: message.error("Failed") return redirect("teachers")
def open(self, prefix, port, rate=None): if self.isOpen(): error("Already opened!") else: if rate == None: self.rate = self.default else: self.rate = rate self.prefix = prefix self.name = port portname = prefix+port try: self.port = serial.Serial(portname, rate, timeout=.01, # time to accumulate characters: 10 ms @ 115200, thats up to 115.2 chars parity=self.parity, stopbits=self.stopbits, xonxoff=0, rtscts=0, # hw flow control bytesize=self.bytesize) note('opened %s at %d'%(port, rate)) self.start() # run serial in thread self.opened.emit() except Exception, e: if self.port: self.port.close() self.port = None # error('open port failed for '+prefix+port) raise Exception('open port failed for '+prefix+port)
def bucket_id(self): try: return self.point.bucket_id( **dict([(key, int(value)) for key, value in self.axis.__dict__.iteritems()])) except KeyError: message.error('cursor value for axis is None') raise axisValueError
def edit(id): todo = orm_session.query(model.Todo).filter_by(id=id).first() if todo: return template("edit", title=TITLE, todo=todo, flush_message=message.flush_message()) else: message.error(u"找不到記錄") redirect("/")
def edit_subject(id): subject = orm_session.query(Subject).filter(Subject.id == id).first() if subject: message.success("successful!") return render_template('edit-subject.html', subject=subject) else: message.error("Failed!") return redirect("/")
def __set__(self, instance, value): if value in self.values.values(): self.value = value elif type(value) == type(int) and value in self.rev.keys(): self.value = self.rev[value] else: message.error('axis %(name)s has no enumeration %(value)s', name=self.name, value=value)
def try_move(self, x=0, y=0): px = self.player_x + x py = self.player_y + y if px < 0 or py < 0 or px >= self.width or py >= self.height: message.error("You cannot exit the map.", flip=True) return False tile = self.tiles[py][px] if tile.door: message.add("<YELLOW>You enter the next room.", flip=True) return ("changeroom", (x, y)) elif tile.warp: message.add("<YELLOW>You descend into the darkness.", flip=True) return ("changelevel", (None,)) elif tile.monster: message.add("<LIGHTRED>You attack the monster!", flip=True) state.mode = 'battle' event.fire('battle.start', tile.monster_properties) state.after_battle_tile = tile state.after_battle_pos = (px, py) raise state.StateChanged() elif tile.boss_door and not state.found_key: message.add("<LIGHTRED>You need a boss key to pass through this door.", flip=True) elif tile.passable: if tile.is_pickup and not tile.picked_up: #they found a thing! if tile.pickup_type == "health": message.add("<GREEN>You found a <LIGHTGREEN>Stone Of Health</>!", flip=True) state.player.bonus_hp += 1 state.player.cur_hp += 1 state.player.hp += 1 player.update_player_statblock(state.player) if tile.pickup_type == "key": message.add("<GREEN>You found a <LIGHTGREEN>Boss Key</>!", flip=True) state.found_key = True if tile.pickup_type == "limb": message.add("<GREEN>You found an <LIGHTGREEN>Orb Of Shiva</>!", flip=True) state.player.add_limb() if tile.pickup_type == "macguffin": message.add("<GREEN>You found a <LIGHTGREEN>Melimnerian Artifact</>!", flip=True) message.add("<GREEN>These powerful wards give you some control\nover the magical curse of Melimnor.", flip=True) state.player.quest_accuracy_bonus += 1 state.player.found_artifacts += 1 state.player.calc_stats() player.update_player_statblock(state.player) tile.clear() self.move_player(px, py) return True else: message.error("Something is in the way.", flip=True) return False
def delete_subject(id): subject = orm_session.query(Subject).filter(Subject.id == id).first() if subject: message.success("successful!") orm_session.delete(subject) orm_session.commit() else: message.error("Failed!") return redirect('/subjects')
def edit_student(id): student = orm_session.query(Student).filter(Student.id==id).first() if student: logger.info("student = %s", student) message.success("successful!") return render_template('edit-student.html', student=student) else: message.error("Failed!") return redirect("/students")
def edit_student(id): student = orm_session.query(Student).filter(Student.id == id).first() if student: logger.info("student = %s", student) message.success("successful!") return render_template('edit-student.html', student=student) else: message.error("Failed!") return redirect("/students")
def edit_course(id): course = orm_session.query(Course).filter(Course.id == id).first() logger.info("editing course: %s", course) if course: message.success("successful!") return render_template('edit-course.html', course=course) else: message.error("Failed!") return redirect(url_for("courses"))
def ask_user(self): while True: key = term.getkey() if key not in ('y', 'Y', 'n', 'N'): message.error("Please choose 'Y' or 'N'", flip=True) continue if key in ('y', 'Y'): return True if key in ('n', 'N'): return False
def edit_teacher(id): teacher = orm_session.query(Teacher).filter(Teacher.id == id).first() if teacher: logger.info("Editing teacher %s", teacher) message.success("successful") return render_template('edit-teacher.html', teacher=teacher) else: message.error("Failed!") return redirect(url_for("teachers"))
def simulation_fatal(self) : 'Wrapper for fatal epilogue' message.debug('Fatal - End of Simulation') return try : self.fatal() except : exc = sys.exc_info() message.error('fatal epilogue failed because ' + str(exc[0])) self.traceback(exc[2])
def simulation_fatal(self): 'Wrapper for fatal epilogue' message.debug('Fatal - End of Simulation') return try: self.fatal() except: exc = sys.exc_info() message.error('fatal epilogue failed because ' + str(exc[0])) self.traceback(exc[2])
def __set__(self, instance, value): if value in self.axis.values: self.value = value elif isinstance(value, int) and value in self.axis.rev: self.value = self.axis.rev[value] else: message.error('axis %(name)s has no enumeration %(value)s', name=self.axis.name, value=value) raise axisValueError
def edit_teacher(id): teacher = orm_session.query(Teacher).filter(Teacher.id==id).first() if teacher: logger.info("Editing teacher %s", teacher) message.success("successful") return render_template('edit-teacher.html', teacher=teacher) else: message.error("Failed!") return redirect(url_for("teachers"))
def delete(id): todo = orm_session.query(model.Todo).filter_by(id=id).first() if todo: orm_session.delete(todo) orm_session.commit() message.success(u"刪除事項成功") else: message.error(u"找不到記錄") redirect("/")
def update_course(id): course = orm_session.query(Course).filter(Course.id == id).first() name = request.form["name"].decode("utf-8") if course: course.name = name orm_session.add(course) orm_session.commit() else: message.error("Failed") return redirect(url_for("home"))
def delete_teacher(id): teacher = orm_session.query(Teacher).filter(Teacher.id==id).first() if teacher: logger.info("deleting teacher %s", teacher) orm_session.delete(teacher) orm_session.commit() orm_session.close() message.success("successful!") else: message.error(u"找不到记录") return redirect(url_for("teachers"))
def delete_teacher(id): teacher = orm_session.query(Teacher).filter(Teacher.id == id).first() if teacher: logger.info("deleting teacher %s", teacher) orm_session.delete(teacher) orm_session.commit() orm_session.close() message.success("successful!") else: message.error(u"找不到记录") return redirect(url_for("teachers"))
def delete_student(id): student = orm_session.query(Student).filter(Student.id==id).first() if student: logger.info("student = %s", student) orm_session.delete(student) orm_session.commit() orm_session.close() message.success("sucessful!") else: message.error(u"找不到记录") return redirect('/students')
def delete_student(id): student = orm_session.query(Student).filter(Student.id == id).first() if student: logger.info("student = %s", student) orm_session.delete(student) orm_session.commit() orm_session.close() message.success("sucessful!") else: message.error(u"找不到记录") return redirect('/students')
def new(): name = request.forms.get("name").decode("utf-8"); if len(name) > 0: record = model.Todo(topic=name, status=False) orm_session.add(record) orm_session.commit() message.success(u"新增事項成功") else: message.error(u"沒有輸入項目") redirect("/")
def new_subject(): subject_name = request.form["name"].decode("utf-8") duration = request.form["duration"].decode("utf-8") tier = request.form["tier"].decode("utf-8") if len(subject_name) > 0 and len(duration) > 0 and tier: subject = Subject(name=subject_name, duration=duration, tier=tier) orm_session.add(subject) orm_session.commit() message.success("successful!") else: message.error("Failed!") return redirect('/subjects')
def new_course(): name = request.form["name"].decode("utf-8") if len(name) > 0: record = Course(name=name, active=True) orm_session.add(record) orm_session.commit() message.success("sucessful!") else: message.error("Failed!") return redirect(url_for('courses'))
def new_subject(): subject_name = request.form["name"].decode("utf-8") duration = request.form["duration"].decode("utf-8") tier = request.form["tier"].decode("utf-8") if len(subject_name) >0 and len(duration) > 0 and tier: subject = Subject(name=subject_name, duration=duration, tier=tier) orm_session.add(subject) orm_session.commit() message.success("successful!") else: message.error("Failed!") return redirect('/subjects')
def update_student(id): student = orm_session.query(Student).filter(Student.id == id).first() name = request.form["name"].decode("utf-8") if student: student.name = name orm_session.add(student) orm_session.commit() message.success("successful") else: message.error("Failed") return redirect("students")
def cb_fn(self) : 'As callback executes vpi_get_value, could change callback fn and cb_filter signature to fn(value)' self.cnt += 1 if self.cb_filter() : self.filtered += 1 return for func in self.funcs : try : func() except Exception, exc: self.excepted += 1 message.error('Exception in callback "%(name)s" : %(exc)s', exc=str(exc), name=self.name) for detail in traceback.format_exc().strip('\n').split('\n') : message.warning(detail)
def __init__(self, name=None, activity=None, block=None, test=None, db=None): self.epilogue_cb = epilogue(self.end_of_simulation) self.name = name or self.name self.test = test or self.test self.is_success = None self.coverage = None activity = activity or self.activity block = block or self.block message.terminate_cbs.add(self.name, 10, self.terminate, self.check_success) try: mdb.connection.set_default_db(db=self.get_db()) self.mdb = mdb.mdb(self.name, activity=activity, block=block, test=self.test) except: message.note('Not using mdb because ' + str(sys.exc_info())) self.START() try: self.prologue() except: exc = sys.exc_info() message.error('prologue failed because ' + str(exc[0])) self.traceback(exc[2]) # self.coverage *may* be assigned to root node in prologue, # if not check for one and use last one created if exists if self.coverage is None and coverage.hierarchy.populated(): self.coverage = coverage.hierarchy.last_root if self.coverage: if getattr(self, 'master_id', False): database.insert.set_master(self.mdb.log_id, self.master_id) if getattr(self, 'master_chk', False): # create the hierarchy from master id and verify congruent pass else: database.insert.write(self.coverage, self.mdb.log_id, database.upload.REFERENCE) # is verilog library synthetic? if verilog.vpiInfo().product == 'Python': self.end_of_simulation()
def update_student(id): student = orm_session.query(Student).filter(Student.id==id).first() name = request.form["name"].decode("utf-8") if student: student.name = name orm_session.add(student) orm_session.commit() message.success("successful") else: message.error("Failed") return redirect("students")
def unfinish(id): todo = orm_session.query(model.Todo).filter_by(id=id).first() if todo: orm_session.query(model.Todo).filter_by(id=id).update({ model.Todo.status: False }) orm_session.commit() message.success(u"恢復事項成功") else: message.error(u"找不到記錄") redirect("/")
def __iadd__(self, other): """ can't use this if __get__ returns non self-object type would need to implement __cmp__, __le__ etc. """ if isinstance(other, int): adj = other elif other in self.axis.values: adj = self.axis.ord[other] else: message.error('axis %(name)s has no enumeration %(value)s', name=self.axis.name, value=other) raise axisValueError self.__set__(None, self.__int__ + adj)
def do_import(modulename): if type(modulename) != types.StringType: return try: return sys.modules[modulename] except KeyError: pass message.information("Importing module %s" % modulename, 2) try: __import__(modulename) return do_import(modulename) except: message.error("Couldn't import %s (%s: %s)" % (modulename, sys.exc_type, sys.exc_value)) return None
def delete(id): find_students = select([CourseStudentLink.course_id, CourseStudentLink.student_id]).select_from(CourseStudentLink.__table__).where(CourseStudentLink.course_id == id) rs = orm_session.execute(find_students) student = rs.fetchone() if student: message.error(u"还有学生选了这门课") else: course = orm_session.query(Course).filter(Course.id==id).first() logger.info("course name: %s", course) if course: orm_session.delete(course) orm_session.commit() return redirect(url_for('courses'))
def update_subject(id): subject = orm_session.query(Subject).filter(Subject.id==id).first() logger.info("Subject object = %s", subject) name = request.form["name"].decode("utf-8") duration = request.form["duration"].decode("utf-8") if subject: logger.info("Subject name = %s and duration = %s.\n", \ "textfield name = %s, textfield duration = %s\n", subject.name, subject.duration, name ,duration) if subject.name != name: subject.name = name if subject.duration != duration: subject.duration = duration orm_session.add(subject) orm_session.commit() message.success("successful") else: message.error("Failed!") return redirect('/subjects')
def update_subject(id): subject = orm_session.query(Subject).filter(Subject.id == id).first() logger.info("Subject object = %s", subject) name = request.form["name"].decode("utf-8") duration = request.form["duration"].decode("utf-8") if subject: logger.info("Subject name = %s and duration = %s.\n", \ "textfield name = %s, textfield duration = %s\n", subject.name, subject.duration, name ,duration) if subject.name != name: subject.name = name if subject.duration != duration: subject.duration = duration orm_session.add(subject) orm_session.commit() message.success("successful") else: message.error("Failed!") return redirect('/subjects')
def save(): id = request.forms.get("id").decode("utf-8"); name = request.forms.get("name").decode("utf-8"); if id is None or id == "": message.error(u"找不到記錄") elif len(name) <= 0: message.error(u"沒有輸入項目") else: todo = orm_session.query(model.Todo).filter_by(id=id).first() if todo: orm_session.query(model.Todo).filter_by(id=id).update({ model.Todo.topic: name }) orm_session.commit() message.success(u"編輯事項成功") redirect("/")
def delete(id): find_students = select([ CourseStudentLink.course_id, CourseStudentLink.student_id ]).select_from( CourseStudentLink.__table__).where(CourseStudentLink.course_id == id) rs = orm_session.execute(find_students) student = rs.fetchone() if student: message.error(u"还有学生选了这门课") else: course = orm_session.query(Course).filter(Course.id == id).first() logger.info("course name: %s", course) if course: orm_session.delete(course) orm_session.commit() return redirect(url_for('courses'))
def new_student(): firstname = request.form["firstname"].decode("utf-8") lastname = request.form["lastname"].decode("utf-8") if request.form["paid"] == 'on': paid = True else: paid = False if len(firstname) > 0 and len(lastname) > 0: record = Student(firstname=firstname, lastname=lastname, paid=paid, active=True) orm_session.add(record) orm_session.commit() message.success("sucessful!") else: message.error("Failed!") return edirect("/students")
def end_of_simulation(self, run_epilogue=True) : 'Wrapper for epilogue' message.debug('End of Simulation') if run_epilogue : try : self.epilogue() except : exc = sys.exc_info() message.error('epilogue failed because ' + str(exc[0])) self.traceback(exc[2]) # remove fatal callback message.terminate_cbs.rm(self.name) else : message.note('Not running epilogue due to early terminate') # tidy up mdb.finalize_all() # coverage if self.coverage : database.insert.write(self.coverage, self.mdb.log_id, database.upload.RESULT) # remove callbacks verilog.callback.remove_all()
def check(self, sig0, sig1) : if long(sig0) != long(sig1) : message.error("sig0(%x, %s) != sig1(%x, %s) when value(%d'h%x)" % (long(sig0), repr(sig0), long(sig1), repr(sig1), self.size, self.bits)) if long(sig0) != self.val : message.error("sig0(%x, %s) != value(%x) when value(%d'h%x)" % (long(sig0), repr(sig0), self.bits, self.size, self.bits)) if long(sig1) != self.val : message.error("sig1(%x, %s) != value(%x) when value(%d'h%x)" % (long(sig1), repr(sig1), self.bits, self.size, self.bits))
def __init__(self, name=None, parent=None, values=None, start=0, **enums): self.name = name or "No Description Given" if parent: parent.add_axis(self) if values is not None: if isinstance(values, dict): self.values = values elif isinstance(values, list): self.values = dict( zip(values, (range(start, start + len(values))))) else: message.error('axis %(name)s has illegal value type (%vtype)s', name=self.name, vtype=type(values)) raise axisValueError else: # must have some values if not len(enums): message.error('axis %(name)s has no values', name=self.name) raise axisValueError self.values = enums # make sure enum indices are integers non_int = filter(lambda x: not (isinstance(x, (long, int))), self.values.values()) if non_int: message.error('axis %(name)s has non integer indices %(non_int)s', name=self.name, non_int=non_int) raise axisValueError # reverse lookup self.rev = dict((value, key) for key, value in self.values.iteritems()) # check enum values unique if len(self.rev) != len(self.values): raise axisValueError self.ord = dict((key, idx) for idx, key in enumerate(self.get_enums()))
def __init__(self, name=None, activity=None, block=None, test=None, db=None) : self.epilogue_cb = epilogue(self.end_of_simulation) self.name = name or self.name self.test = test or self.test self.is_success = None self.coverage = None activity = activity or self.activity block = block or self.block message.terminate_cbs.add(self.name, 10, self.terminate, self.check_success) try : mdb.connection.set_default_db(db=self.get_db()) self.mdb = mdb.mdb(self.name, activity=activity, block=block, test=self.test) except : message.note('Not using mdb because ' + str(sys.exc_info())) self.START() try : self.prologue() except : exc = sys.exc_info() message.error('prologue failed because ' + str(exc[0])) self.traceback(exc[2]) # self.coverage *may* be assigned to root node in prologue, # if not check for one and use last one created if exists if self.coverage is None and coverage.hierarchy.populated() : self.coverage = coverage.hierarchy.last_root if self.coverage : if getattr(self, 'master_id', False) : database.insert.set_master(self.mdb.log_id, self.master_id) if getattr(self, 'master_chk', False) : # create the hierarchy from master id and verify congruent pass else : database.insert.write(self.coverage, self.mdb.log_id, database.upload.REFERENCE) # is verilog library synthetic? if verilog.vpiInfo().product == 'Python' : self.end_of_simulation()
def end_of_simulation(self, run_epilogue=True): 'Wrapper for epilogue' message.debug('End of Simulation') if run_epilogue: try: self.epilogue() except: exc = sys.exc_info() message.error('epilogue failed because ' + str(exc[0])) self.traceback(exc[2]) # remove fatal callback message.terminate_cbs.rm(self.name) else: message.note('Not running epilogue due to early terminate') # tidy up mdb.finalize_all() # coverage if self.coverage: database.insert.write(self.coverage, self.mdb.log_id, database.upload.RESULT) # remove callbacks verilog.callback.remove_all()
def new_teacher(): firstname = request.form["firstname"].decode("utf-8") lastname = request.form["lastname"].decode("utf-8") birthdate = request.form["birthdate"].decode("utf-8") validate_birthdate(birthdate) nationality = request.form["nationality"].decode("utf-8") visa_status = request.form["visa_status"].decode("utf-8") salary_per_hour = request.form["salary_per_hour"].decode("utf-8") if validate_form_field_not_empty(firstname, lastname, birthdate): record = Teacher(firstname=firstname, lastname=lastname, \ birthdate=birthdate, nationality=nationality, visa_status=visa_status, \ salary_per_hour = salary_per_hour, active=True) orm_session.add(record) orm_session.commit() message.success("sucessful") else: message.error("Failed!") return redirect(url_for("teachers"))
def check(self, sig0, sig1): if long(sig0) != long(sig1): message.error( "sig0(%x, %s) != sig1(%x, %s) when value(%d'h%x)" % (long(sig0), repr(sig0), long(sig1), repr(sig1), self.size, self.bits)) if long(sig0) != self.val: message.error( "sig0(%x, %s) != value(%x) when value(%d'h%x)" % (long(sig0), repr(sig0), self.bits, self.size, self.bits)) if long(sig1) != self.val: message.error( "sig1(%x, %s) != value(%x) when value(%d'h%x)" % (long(sig1), repr(sig1), self.bits, self.size, self.bits))