Esempio n. 1
0
 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)
Esempio n. 2
0
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")
Esempio n. 3
0
    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()
Esempio n. 4
0
 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)
Esempio n. 5
0
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")
Esempio n. 6
0
	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)
Esempio n. 7
0
 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
Esempio n. 8
0
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("/")
Esempio n. 9
0
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("/")
Esempio n. 10
0
 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)
Esempio n. 11
0
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("/")
Esempio n. 12
0
    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
Esempio n. 13
0
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')
Esempio n. 14
0
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")
Esempio n. 15
0
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")
Esempio n. 16
0
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"))
Esempio n. 17
0
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"))
Esempio n. 18
0
 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
Esempio n. 19
0
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"))
Esempio n. 20
0
 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])
Esempio n. 21
0
 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])
Esempio n. 22
0
 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
Esempio n. 23
0
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"))
Esempio n. 24
0
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')
Esempio n. 25
0
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("/")
Esempio n. 26
0
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"))
Esempio n. 27
0
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"))
Esempio n. 28
0
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"))
Esempio n. 29
0
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')
Esempio n. 30
0
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')
Esempio n. 31
0
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"))
Esempio n. 32
0
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("/")
Esempio n. 33
0
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')
Esempio n. 34
0
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'))
Esempio n. 35
0
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')
Esempio n. 36
0
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")
Esempio n. 37
0
 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)
Esempio n. 38
0
    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()
Esempio n. 39
0
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'))
Esempio n. 40
0
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")
Esempio n. 41
0
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("/")
Esempio n. 42
0
            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)
Esempio n. 43
0
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
Esempio n. 44
0
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'))
Esempio n. 45
0
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
Esempio n. 46
0
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')
Esempio n. 47
0
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')
Esempio n. 48
0
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("/")
Esempio n. 49
0
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'))
Esempio n. 50
0
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")
Esempio n. 51
0
 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()
Esempio n. 52
0
 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))
Esempio n. 53
0
 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()))
Esempio n. 54
0
  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()
Esempio n. 55
0
 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()
Esempio n. 56
0
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"))
Esempio n. 57
0
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")
Esempio n. 58
0
 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))