Exemple #1
0
def bind_teacher(current_file_info: dict, current_book):
    worksheet = current_book.sheet_by_name('统计表')
    test_time = os.path.splitext(current_file_info['Name'])[0][22:30]
    # 每次遍历一个班级
    for i in range(worksheet.ncols):
        # 寻找有效列
        col = worksheet.col_values(i)
        if str(col[1]).startswith('1'):
            class_index = str(worksheet.col_values(i)[1])[0:4]
            grades = StudentGrade.query.filter_by(test_time=test_time, class_index=class_index).all()
            # TODO:query不all()直接迭代是否可以提高速度?
            for name in col:
                if str(name).isalpha():
                    results = re.findall(u"[\u4e00-\u9fa5]+", worksheet.col_values(0)[col.index(name)])
                    if int(class_index) in range(1801, 1818):
                        subject = results[0]
                    else:
                        subject = results[-1]
                    if not Teacher.query.filter_by(teacher_name=str(name)).first():
                        teacher = Teacher()
                        teacher.teacher_name = str(name)
                        teacher.subject = subject
                        db.session.add(teacher)
                    else:
                        teacher = Teacher.query.filter_by(teacher_name=str(name)).first()
                    for grade in grades:
                        teacher.student_grades.append(grade)
    db.session.commit()
Exemple #2
0
 def test_teacher_expired_confirmation_token(self):
     u = Teacher(password='******')
     db.session.add(u)
     db.session.commit()
     token = u.generate_auth_token(1)
     time.sleep(2)
     self.assertFalse(u.verify_auth_token(token) == u)
def dashboard_all_teachers():
    admin = Admin.query.filter_by(
        admin_full_name=current_user.admin_full_name).first()
    # ---------------------
    # Teacher Registration
    # ---------------------
    teacher_form = TeacherRegistrationForm()
    if teacher_form.validate_on_submit():
        teacher = Teacher(
            teacher_full_name=teacher_form.teacher_full_name.data,
            teacher_email=teacher_form.teacher_email.data,
            teacher_phone=teacher_form.teacher_phone.data,
            teacher_residence=teacher_form.teacher_residence.data,
            teacher_course=teacher_form.teacher_course.data)
        teacher.set_password(teacher_form.teacher_password.data)
        db.session.add(teacher)
        db.session.commit()
        send_registration_details_teacher(teacher)
        flash('Teacher successfully registered')
        return redirect(url_for('admin.dashboard_all_teachers'))
    # ---------------------
    # End of teacher registration
    # ---------------------
    teachers = Teacher.query.order_by(Teacher.teacher_last_seen.desc()).all()
    all_teachers = len(Teacher.query.all())
    return render_template('admin/all_teachers.html',
                           title='All Teachers',
                           teachers=teachers,
                           admin=admin,
                           all_teachers=all_teachers,
                           teacher_form=teacher_form)
def teacher_del():
    teacher_id = request.form.get('teacher_id', -1, type=int)
    if teacher_id != -1:
        teacher = Teacher.get_by_id(teacher_id)
        ret = Teacher.delete_teacher(teacher)
    else:
        ret = u'删除失败'
    return jsonify(ret=ret)
Exemple #5
0
def teacher_del():
    teacher_id = request.form.get('teacher_id', -1, type=int)
    if teacher_id != -1:
        teacher = Teacher.get_by_id(teacher_id)
        ret = Teacher.delete_teacher(teacher)
    else:
        ret = u'删除失败'
    return jsonify(ret = ret)
Exemple #6
0
 def test_teacher_is_school_admin(self):
     t = Teacher(telephone='13700000001')
     s = School(name='aschool', admin='13700000001')
     db.session.add_all([t, s])
     db.session.commit()
     self.assertFalse(t.is_teacher_admin(s.id))
     t.schools.append(s)
     db.session.commit()
     self.assertTrue(t.is_teacher_admin(s.id))
 def teachers(teacher_creat):
     tea_number = [
         int(tea_number) for tea_number in teacher_creat.col_values(0)
     ]
     tea_name = [tea_name for tea_name in teacher_creat.col_values(1)]
     tea_tea = [tea_tea for tea_tea in teacher_creat.col_values(2)]
     teacher_list = zip(tea_number, tea_name, tea_tea)
     for teacher in teacher_list:
         Teacher.create_tea(*teacher)
Exemple #8
0
 def test_teacher_bind_school(self):
     t = Teacher(telephone='13700000000')
     s = School(name='aschool')
     db.session.add_all([t, s])
     db.session.commit()
     Tcode.generate_code(10, s.id)
     tcode = Tcode.query.all()[0].code
     t.bind_school(tcode)
     self.assertTrue(t.schools[0].id == s.id)
     self.assertTrue(Tcode.query.filter_by(code=tcode).first() is None)
Exemple #9
0
def teacher_save():
    try:
        t = Teacher()
        t.id = 1
        t.username = '******'
        t.password = '******'
        db.session.add(t)
        db.session.commit()
    except Exception, e:
        print e
Exemple #10
0
def teacher_save():
    try:
        t = Teacher()
        t.id = 1
        t.username = '******'
        t.password = '******'
        db.session.add(t)
        db.session.commit()
    except Exception, e:
        print e
Exemple #11
0
def addteacher():

    form = AddTeacherForm()
    if form.validate_on_submit():
        user = Teacher(username=form.username.data, email=form.email.data) 
        user.set_password(form.password_hash.data)
        db.session.add(user)
        db.session.commit()
        flash('Teacher is added Successfully')
        return redirect(url_for('addteacher'))
    return render_template('addteacher.html', form=form)
Exemple #12
0
def teacher():
    page = request.args.get('page', 1, type=int)
    per_page = current_app.config['ADMIN_TEACHER_PER_PAGE']
    if page == -1:
        page = ((Teacher.get_count() - 1) // per_page) + 1
    pagination = Teacher.get_list_pageable(page, per_page)
    teacher_list = pagination.items
    return render_template('admin/teacher.html',
                           title = u'教师管理',
                           teacher_list = teacher_list,
                           pagination = pagination)
def teacher():
    page = request.args.get('page', 1, type=int)
    per_page = current_app.config['ADMIN_TEACHER_PER_PAGE']
    if page == -1:
        page = ((Teacher.get_count() - 1) // per_page) + 1
    pagination = Teacher.get_list_pageable(page, per_page)
    teacher_list = pagination.items
    return render_template('admin/teacher.html',
                           title=u'教师管理',
                           teacher_list=teacher_list,
                           pagination=pagination)
Exemple #14
0
def add_teacher():
    form = AddTeacherForm()
    if form.validate_on_submit():
        teacher = Teacher()
        teacher.name = form.name.data
        teacher.age = form.age.data
        db.session.add(teacher)
        db.session.commit()
        return redirect(url_for('.teachers'))

    return render_template('add_teacher.html', form=form)
Exemple #15
0
 def create(self, teacher):
     username = teacher['username']
     user_service.set_request(self.request)
     user = user_service.create_user({
         'username': teacher['username'],
         'password': constants.TEACHER_DEFAULT_PASSWORD,
         'fullname': teacher['fullname'],
         'roles': ['TEACHER']
     })
     user_service.create_school_user(self.request.school_id, user.id)
     teacher = Teacher()
     teacher.user = user
     return super().create(teacher)
def signup():
    form = SignupForm(request.form)
    if request.method == 'POST' and form.validate():
        if form.role.data == "student":
            user = Student(name=form.name.data,
                           email=form.email.data,
                           student_ref=form.uni_id.data)
        else:
            user = Teacher(name=form.name.data,
                           title=form.title.data,
                           teacher_ref=form.uni_id.data,
                           email=form.email.data)
        user.set_password(form.password.data)
        try:
            db.session.add(user)
            db.session.commit()
            response = make_response(redirect(url_for('main.index')))
            response.set_cookie("name", form.name.data)
            return response
        except IntegrityError:
            db.session.rollback()
            flash(
                'ERROR! Unable to register {}. Please check your details are correct and resubmit'
                .format(form.email.data), 'error')
    return render_template('signup.html', form=form)
Exemple #17
0
def add_teacher():
    if not current_user.is_authenticated or current_user.role != 'admin':
        return redirect(url_for('login'))
    db_subject_list = Subject.query.all()
    subject_list = [(i.name, i.name) for i in db_subject_list]
    form1 = AddTeacher(prefix="form1")
    form1.subject.choices = subject_list
    if form1.validate_on_submit() or form1.submit.data:
        old_user = User.query.filter(User.login == form1.login.data).first()
        if old_user is not None:
            flash('Teacher already exists')
            return redirect(url_for('add_teacher'))
        user = User(login=form1.login.data, role='teacher')
        user.set_password(form1.password.data)
        teacher = Teacher(name=form1.name.data, sub_name=form1.subject.data)
        user.teachers = teacher
        db.session.add(user)
        db.session.add(teacher)
        db.session.commit()
        flash('Teacher is added')
        return redirect(url_for('add_teacher'))
    db_teacher_list = Teacher.query.all()
    teacher_list = [(i.name, i.sub_name + "\t" + i.name)
                    for i in db_teacher_list]
    form2 = DeleteTeacher(prefix="form2")
    form2.teacher.choices = teacher_list
    if form2.validate_on_submit() or form2.submit.data:
        t = Teacher.query.filter(Teacher.name == form2.teacher.data).first()
        u = User.query.filter(User.id == t.teach_id).first()
        db.session.delete(u)
        db.session.commit()
        flash('Teacher is deleted')
        return redirect(url_for('add_teacher'))
    return render_template('add_teacher.html', form1=form1, form2=form2)
Exemple #18
0
def join_faculty():
    form = JoinFaculty()
    if request.method == 'POST' and form.validate():
        check_email = Teacher.query.filter_by(email=form.email.data).first()
        if check_email != None:
            flash(
                'This email is already assigned to a Teacher. Are you sure you are not already a teacher at this school?'
            )
            return render_template('teacher_templates/join_faculty.html',
                                   form=form)
        # work around to make sure user loader doesn't confuse teachers and students
        count1 = Student.query.order_by(Student.id.desc()).all()[0].id
        count2 = Teacher.query.order_by(Teacher.id.desc()).all()[0].id
        id = max(count1, count2) + 1
        new_teacher = Teacher(id=id,
                              first_name=form.first_name.data.title(),
                              last_name=form.last_name.data.title(),
                              started_at_school=form.started_at_school.data,
                              pic_url=form.pic_url.data,
                              email=form.email.data,
                              password_hash=generate_password_hash(
                                  form.password.data))
        db.session.add(new_teacher)
        db.session.commit()
        flash(
            f'Thank you {new_teacher.first_name} {new_teacher.last_name}. You are now a registered teacher. Please Log in!'
        )
        return redirect('/login')
    return render_template('teacher_templates/join_faculty.html', form=form)
Exemple #19
0
    def test_edit_exam_teacher(self):
        """Teacher edit their exam properly"""
        exam = Exam.query.first()
        teacher = Teacher.get_by_id(exam.author_id)
        # Generate a header for a teacher
        token = generate_user_token(teacher.username, TEACHER_PERMISSIONS)
        from_date = datetime.now().replace(microsecond=0)
        exam_body = {
            'title': '',
            'description': '',
            'exercises': '[]',
            'exam_duration': 300,
            'shuffle_exercises': True,
            'max_retries': 1,
            'from_date': from_date,
            'to_date': from_date + timedelta(days=10)
        }
        res = self.client.patch(f'/api/v1/exams/{exam.id}',
                                headers={'Content-Type': 'application/json',
                                         'Authorization': f'bearer {token}'},
                                json=exam_body)
        self.assertEqual(res.status_code, 200, res.get_json())
        data = res.get_json()
        self.check_fields_list(data, ['success', 'updated'])
        self.assertTrue(data['success'])
        self.assertEqual(data['updated'], exam.id)

        exam = Exam.get_by_id(exam.id)
        for key, value in exam_body.items():
            self.assertEqual(value, getattr(exam, key), f'{key}: {value}')
Exemple #20
0
 def setUp(self):
     self.app = create_app('test')
     self.app_context = self.app.app_context()
     self.app_context.push()
     db.create_all()
     t = Teacher()
     t.name = 'zhangliu'
     t.age = 35
     db.session.add(t)
     db.session.commit()
     s = Student()
     s.name = 'wangwu'
     s.age = 20
     s.teacher = t
     db.session.add(s)
     db.session.commit()
Exemple #21
0
    def setUp(self):
        """Set up test client and populate test database with test data
        """
        self.app = app.test_client()
        db.create_all()
        user = User(username="******", password="******")
        student = Student(student_id="ST001",
                          first_name="Hermione",
                          last_name="Granger",
                          email_address="*****@*****.**")
        teacher = Teacher(staff_id="TC001",
                          first_name="Minerva",
                          last_name="McGonagall",
                          email_address="*****@*****.**")
        subject = Subject(subject_id="SB001",
                          name="Transfiguration",
                          description="Teaches the art of changing the form "
                          "and appearance of an object or a person.")

        subject.major_students.append(student)
        teacher.subjects_taught.append(subject)

        db.session.add(user)
        db.session.add(student)
        db.session.add(teacher)
        db.session.add(subject)

        self.token = self.get_token()
Exemple #22
0
 def test_list_enrolled_students_others_exams(self):
     """Teacher cannot list enrolled students of another teacher's exam"""
     teacher1 = (Teacher.get_query().join(Exam).order_by(
         Teacher.id).first())
     teacher2 = (Teacher.get_query().join(Exam).order_by(
         Teacher.id.desc()).first())
     exam1 = Exam.get_query().filter(Exam.author_id == teacher1.id).first()
     exam2 = Exam.get_query().filter(Exam.author_id == teacher2.id).first()
     tests_cases = ((teacher1, exam2), (teacher2, exam1))
     for teacher, exam in tests_cases:
         token = generate_user_token(teacher.username, TEACHER_PERMISSIONS)
         res = self.client.get(f'/api/v1/enrolls/{exam.id}',
                               headers={
                                   'Content-Type': 'application/json',
                                   'Authorization': f'bearer {token}'
                               })
         self.assertEqual(res.status_code, 403, res.get_json())
def teacher_edit(id):
    teacher = Teacher.get_by_id(id)
    teacher_form = TeacherForm()
    if request.method == 'GET':
        teacher_form.name.data = teacher.name
        teacher_form.department.data = teacher.department
    if request.method == 'POST' and teacher_form.validate():
        ret = Teacher.update_teacher(teacher, teacher_form)
        if ret == 'OK':
            return redirect(url_for('admin.teacher'))
        elif ret == 'FAIL':
            flash(u'提交失败')
        else:
            flash(ret)
    return render_template('admin/teacher_form.html',
                           title=u'修改教师',
                           action=url_for('admin.teacher_edit', id=id),
                           teacher_form=teacher_form)
Exemple #24
0
def teacher_edit(id):
    teacher = Teacher.get_by_id(id)
    teacher_form = TeacherForm()
    if request.method == 'GET':
        teacher_form.name.data = teacher.name
        teacher_form.department.data = teacher.department
    if request.method == 'POST' and teacher_form.validate():
        ret = Teacher.update_teacher(teacher, teacher_form)
        if ret == 'OK':
            return redirect(url_for('admin.teacher'))
        elif ret == 'FAIL':
            flash(u'提交失败')
        else:
            flash(ret)
    return render_template('admin/teacher_form.html',
                           title = u'修改教师',
                           action = url_for('admin.teacher_edit', id=id),
                           teacher_form = teacher_form)
def tea_Find():
    tea_name = request.form.get('tea_name', -1)
    if tea_name != -1:
        tea = Teacher.get_by_name(tea_name)
        if tea is None:
            ret = 'FAIL'
        else:
            ret = 'OK'
    else:
        ret = 'FAIL'
    return jsonify(ret=ret)
Exemple #26
0
 def test_list_enrolled_exam_teacher(self):
     """Teachers cannot enroll to exams"""
     teachers = Teacher.get_query().all()
     for teacher in teachers:
         token = generate_user_token(teacher.username, TEACHER_PERMISSIONS)
         res = self.client.get('/api/v1/enrolls',
                               headers={
                                   'Content-Type': 'application/json',
                                   'Authorization': f'bearer {token}'
                               })
         self.assertEqual(res.status_code, 403)
Exemple #27
0
Fichier : views.py Projet : TSS2/a
def tea_Find():
    tea_name = request.form.get('tea_name', -1)
    if tea_name != -1:
        tea = Teacher.get_by_name(tea_name)
        if tea is None:
            ret = 'FAIL'
        else:
            ret = 'OK'
    else:
        ret = 'FAIL'
    return jsonify(ret = ret)
Exemple #28
0
def register_teacher():
    form = RegistrationTeacherForm()
    if form.validate_on_submit():
        role_teacher = SystemRole.query.filter_by(name=role_teacher_name).first()
        user_teacher = SystemUser(login=form.login.data, password=form.password.data, system_role=role_teacher,
                                  enabled=form.enabled.data)
        teacher = Teacher(fio=form.fio.data, system_user=user_teacher, phone=form.phone.data)
        db.session.add(user_teacher)
        db.session.add(teacher)
        flash('преподаватель {} создан.'.format(form.login.data))
        return redirect(url_for('.teachers_list'))
    return render_template('users/form_register_edit.html', form=form, class_name='преподавателя', creating=True)
Exemple #29
0
 def get_teacher_list(self):
     teachers = []
     item = self.teachers.data
     has_t = Teacher.get_by_name(item)
     if not has_t:
         teacher = Teacher.Teacher()
         teacher.name = item
         teacher.save()
         teachers.append(teacher)
     else:
         teachers.append(has_t)
     return teachers
Exemple #30
0
def setup_database():
    db.create_all()

    u1 = Student('Heather', 'Freeman', '*****@*****.**', 'Abc123',
                 'student')
    u2 = Student('Amanda', 'Evans', '*****@*****.**', 'Cde456',
                 'student')
    u3 = Student('Jerry', 'White', '*****@*****.**', 'qwerty123', 'student')
    u4 = Student('Jane', 'Berry', '*****@*****.**', 'tyu1234', 'student')
    u5 = Student('Lori', 'Welch', '*****@*****.**', 'erg34345', 'student')
    u6 = Student('Dorothy', 'Medina', '*****@*****.**', 'bfdg2',
                 'student')
    u7 = Student('Lawrence', 'Foster', '*****@*****.**', 'regergs2',
                 'student')
    u8 = Student('Annie', 'Pierce', '*****@*****.**', 'bfg3', 'student')
    u9 = Student('Melissa', 'Taylor', '*****@*****.**', 'eret3',
                 'student')
    u10 = Student('Deborah', 'Richards', '*****@*****.**', 'opi234',
                  'student')

    t1 = Teacher('Albert', 'Morris', '*****@*****.**', 'abc123', 'teacher')
    t2 = Teacher('Jane', 'Ripper', '*****@*****.**', 'abc123', 'teacher')

    task1 = Task(1, 1, 1)
    task2 = Task(2, 1, 1)
    task3 = Task(1, 2, 1)
    task3.mark_id = 1
    task3.completed = True

    m1 = Mark(7, 10, 1, 2)
    m2 = Mark(1, 10, 3, 3)
    m3 = Mark(1, 10, 5, 3)
    m4 = Mark(4, 10, 5, 3)
    m5 = Mark(5, 10, 4, 3)
    m6 = Mark(3, 10, 2, 4)

    db.session.add_all([u1, u2, u3, u4, u5, u6, u7, u8, u9, u10, t1, t2])
    db.session.add_all([task1, task2, task3])
    db.session.add_all([m1, m2, m3, m4, m5, m6])

    links = [
        t1.add_student(u1),
        t1.add_student(u2),
        t1.add_student(u3),
        t1.add_student(u8),
        t1.add_student(u9)
    ]
    db.session.add_all(links)

    db.session.commit()

    graph1 = Graph(
        '{"version":2,"graph":{"showGrid":true,"showXAxis":true,"showYAxis":true,"xAxisStep":0,"yAxisStep":0,"xAxisMinorSubdivisions":0,"yAxisMinorSubdivisions":0,"xAxisArrowMode":"NONE","yAxisArrowMode":"NONE","xAxisLabel":"Re","yAxisLabel":"Im","xAxisNumbers":true,"yAxisNumbers":true,"polarMode":false,"polarNumbers":true,"degreeMode":false,"projectorMode":false,"squareAxes":true,"viewport":{"xmin":-1.6708536134523648,"ymin":-1.9601353023240395,"xmax":1.9920012573229602,"ymax":1.847026847468353}},"expressions":{"list":[{"id":"0","type":"expression","latex":"\\sqrt{x^2+y^2}-\\sqrt{x^2+\\left(y+1\\right)^2}=0","domain":{"min":0,"max":1},"hidden":false,"color":"#2d70b3","style":"normal","residualVariable":"","regressionParameters":{},"isLogModeRegression":false},{"id":"1","type":"expression","latex":"\\sqrt{x^2+y^2}-\\sqrt{y^2+\\left(x-1\\right)^2}=0","domain":{"min":0,"max":1},"hidden":false,"color":"#388c46","style":"normal","residualVariable":"","regressionParameters":{},"isLogModeRegression":false}]}}',
        '<thead><tr><th>Plot</th><th></th><th></th></tr></thead><tbody> <tr id="row0"><td><span class="MathJax_Preview" style="color: inherit; display: none;"></span><span class="MathJax" id="MathJax-Element-2-Frame" tabindex="0" style="position: relative;" data-mathml="<math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;><mstyle displaystyle=&quot;true&quot;><mrow><mo>|</mo><mi>z</mi><mo>|</mo></mrow><mo>=</mo><mrow><mo>|</mo><mi>z</mi><mo>+</mo><mi>i</mi><mo>|</mo></mrow></mstyle></math>" role="presentation"><nobr aria-hidden="true"><span class="math" id="MathJax-Span-128" style="width: 6.074em; display: inline-block;"><span style="display: inline-block; position: relative; width: 5.06em; height: 0px; font-size: 120%;"><span style="position: absolute; clip: rect(1.691em, 1004.93em, 2.927em, -1000em); top: -2.56em; left: 0em;"><span class="mrow" id="MathJax-Span-129"><span class="mstyle" id="MathJax-Span-130"><span class="mrow" id="MathJax-Span-131"><span class="mrow" id="MathJax-Span-132"><span class="mo" id="MathJax-Span-133" style="font-family: STIXVariants;">|</span><span class="mi" id="MathJax-Span-134" style="font-family: STIXGeneral; font-style: italic;">z</span><span class="mo" id="MathJax-Span-135" style="font-family: STIXVariants;">|</span></span><span class="mo" id="MathJax-Span-136" style="font-family: STIXGeneral; padding-left: 0.375em; padding-right: 0.375em;">=</span><span class="mrow" id="MathJax-Span-137"><span class="mo" id="MathJax-Span-138" style="font-family: STIXVariants;">|</span><span class="mi" id="MathJax-Span-139" style="font-family: STIXGeneral; font-style: italic;">z</span><span class="mo" id="MathJax-Span-140" style="font-family: STIXGeneral; padding-left: 0.3em; padding-right: 0.3em;">+</span><span class="mi" id="MathJax-Span-141" style="font-family: STIXGeneral; font-style: italic;">i</span><span class="mo" id="MathJax-Span-142" style="font-family: STIXVariants;">|</span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.56em;"></span></span></span><span style="display: inline-block; overflow: hidden; vertical-align: -0.298em; border-left: 0px solid; width: 0px; height: 1.198em;"></span></span></nobr><span class="MJX_Assistive_MathML" role="presentation"><math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle displaystyle="true"><mrow><mo>|</mo><mi>z</mi><mo>|</mo></mrow><mo>=</mo><mrow><mo>|</mo><mi>z</mi><mo>+</mo><mi>i</mi><mo>|</mo></mrow></mstyle></math></span></span><script type="math/asciimath" id="MathJax-Element-2">|z|=|z+i|</script></td><td><input name="plot" id="0" checked="" type="checkbox"></td><td><input class="btn btn-block" name="del" id="del0" value="X" type="button"></td></tr><tr id="row1"><td><span class="MathJax_Preview" style="color: inherit; display: none;"></span><span class="MathJax" id="MathJax-Element-3-Frame" tabindex="0" style="position: relative;" data-mathml="<math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;><mstyle displaystyle=&quot;true&quot;><mrow><mo>|</mo><mi>z</mi><mo>|</mo></mrow><mo>=</mo><mrow><mo>|</mo><mi>z</mi><mo>-</mo><mn>1</mn><mo>|</mo></mrow></mstyle></math>" role="presentation"><nobr aria-hidden="true"><span class="math" id="MathJax-Span-201" style="width: 6.372em; display: inline-block;"><span style="display: inline-block; position: relative; width: 5.298em; height: 0px; font-size: 120%;"><span style="position: absolute; clip: rect(1.691em, 1005.17em, 2.927em, -1000em); top: -2.56em; left: 0em;"><span class="mrow" id="MathJax-Span-202"><span class="mstyle" id="MathJax-Span-203"><span class="mrow" id="MathJax-Span-204"><span class="mrow" id="MathJax-Span-205"><span class="mo" id="MathJax-Span-206" style="font-family: STIXVariants;">|</span><span class="mi" id="MathJax-Span-207" style="font-family: STIXGeneral; font-style: italic;">z</span><span class="mo" id="MathJax-Span-208" style="font-family: STIXVariants;">|</span></span><span class="mo" id="MathJax-Span-209" style="font-family: STIXGeneral; padding-left: 0.375em; padding-right: 0.375em;">=</span><span class="mrow" id="MathJax-Span-210"><span class="mo" id="MathJax-Span-211" style="font-family: STIXVariants;">|</span><span class="mi" id="MathJax-Span-212" style="font-family: STIXGeneral; font-style: italic;">z</span><span class="mo" id="MathJax-Span-213" style="font-family: STIXGeneral; padding-left: 0.3em; padding-right: 0.3em;">−</span><span class="mn" id="MathJax-Span-214" style="font-family: STIXGeneral;">1</span><span class="mo" id="MathJax-Span-215" style="font-family: STIXVariants;">|</span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.56em;"></span></span></span><span style="display: inline-block; overflow: hidden; vertical-align: -0.298em; border-left: 0px solid; width: 0px; height: 1.198em;"></span></span></nobr><span class="MJX_Assistive_MathML" role="presentation"><math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle displaystyle="true"><mrow><mo>|</mo><mi>z</mi><mo>|</mo></mrow><mo>=</mo><mrow><mo>|</mo><mi>z</mi><mo>-</mo><mn>1</mn><mo>|</mo></mrow></mstyle></math></span></span><script type="math/asciimath" id="MathJax-Element-3">|z|=|z-1|</script></td><td><input name="plot" id="1" checked="" type="checkbox"></td><td><input class="btn btn-block" name="del" id="del1" value="X" type="button"></td></tr></tbody>',
        2, '2 Lines', '',
        'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAPWklEQVR4nO3dXVBU9xnH8UN7k15wZ/ei5cIyGTJDpzR1hsy01Aw3DZ0YymQYrNU6MTB21LCT1gQZ0whRY9CAxJd1asXqRMeYERUl9V3rYlxZhTgQXwFRAovgUtcsohsWdp9eWLb895wDC7rP7kN/35n/ReC/e86B83HPW1SjOKmjo4M6OjpivRpRKRgMkqZppGkaJSQkRG05xYdX0jsHVyhjaHgoassjmtq/NyIiLdYrMNJU/kEDiNwAhCEAkRuAMAQgcgMQhgBEbgDCEIDIDUAYAhC5AQhDACI3AGEIQOQGIAwBiNwAhCEAkRuAMAQgcgMQhgBEbgDCEIDIDUAYAhC5AQhDACI3AGEIQOQGIAwBiNwAhCEAkRuAMAQgcgMQhgBEbgDCEIDIDUAYAhC5AQhDACI3AGEIQOQGIAwBiNwAhCEAkRuAMAQgcgMQhgBEbgDCEIDIDUAYAhC5iQFy4MABWr16NW3evNl0fPjhh2S32xnXOrIARG5igJw4cYLee++90I5mNPLz88nhcDCudWQBiNzEABmpr6+PLBaLAsNisVBrayvDWk4uAJGbOCADAwO6T46SkhKGNZx8ACI3cUDu3LmjA9LQ0MCwhpMPQOQmDsjhw4cVHElJSeT1ehnWcPIBiNzEAbFarQqQgoICCgaDDGs4+QBEbqKADAwMUGpqqgJk//79TGs4+QBEbqKAfP3117rzj/b29nHf+9GjR9Tb22v4vfv375PL5aKhIfMdaXBwkLq7u+n+/fvjLssoAJGbNrKBsR4Oh4McDofu6319faFDqK1btyo4UlJSyO/3Kxs0ODhILpeL7HY72Ww2ysnJIU3TKDU1lYaHh0PznE4nZWRkKOcyPT09ynt99913tGnTJt0Vs0AgQERP4EWybaMvLCQkJETtZ2jdW0xL9ryrjFu322Pye5sqQ4v1Coz3g+7v7yeiJ38Kj+zsZpd3fT4fJScnG95EtNlsoXk2m23cOV1dXbrDuZHR1NQUWqdvvvlm3G0DELlDzCGW2+3W3SCsq6sznNfR0UGzZs0y3KnXr19PmqZRVlYWVVdXKwhGTvh7enpCy6qsrKSysrKnuqyMQyy5iQFit9t1d8/dbrfp/EWLFoXmJicn0+DgIFVXV5OmabRmzRoKBAIUDAYpNzc3NK+qqor8fj+lpaUpd+dv3LgBICYBCFPj/aBLS0uVnTQ7O1s5pxid3+9Xzi9KSkqoqamJNE2jZcuWhc5pwh9b2b9/Py1dupQSExOVR1dGn/tYLBbducp4AYjcRADx+XyUnp6uAKmqqjJ9r/C77evXr6fU1FTKzs5WrlaN/lSyWCxUUFBAmqbRuXPnQnPCz30yMjLGvOJlFIDITQSQ1tZW3Yny1atXTd+rpqZGNz8pKYn6+vqUeSPnFmlpaYYn6kREHo9H+ZQpKyub8LYBiNxEANm3b5+ysycnJ9Pjx49N32vJkiWkaRrNmDEj9Bqn06nMGRoaooyMDEpMTAzNmT17tu7T4eLFi8qyL1y4MOFtAxC5xT2QYDBICxYsUHZSq9Vq+j5Gd9tXr16tm9fV1RXRTccNGzYoh2Hhn0KRBCByi3sgXq9Xd2+jtrbW9H3C77ab7dRHjhxR5n3wwQe6OYFAgDIzM5VPGLMLA2MFIHKLeyCXLl1SduTExETq7Ow0fZ/wu+2VlZWG84qKipT3vH37tm5O+FWusS4MjBWAyC3ugVRWVio7/MyZM02vIoVfcTLD5PP5lBNzsyeCHQ6Hsuzm5uZJbRuAyC2ugQQCAeV+xlifCET6u+35+fmGO374jb9jx44Zvt+6deuUCwMPHz4kIqL+/n7dM2BjBSByi2sgLpdLdyIdfjVqdOF32812/D179ox74y/8/KOwsJCCwSANDAxQWloaVVRURLxtACK3uAHy4MGD0IOJI408GjJ6Z/Z4PKbvMfpuu9nc8KtiZnfkw3HW1tZSMBik+fPnk8Vioa6uroi3DUDkFjdAwvP7/bq755qmUXd3d0TzFy5caHh4FX5VzOzEO/ww7MyZM7R06VLSNI3q6+sntC0AIre4A+L1eqmhoYHy8vJ0ODRNo+LiYmpubqYHDx4or2tra4vo8Cr8qpjZHflwICPj+PHjE94mAJFb3AEJP6wyG+GPhIQ/V2X2pO+hQ4cMT7zDc7vdusO7y5cvT2qbAERucQcknnK73eR0OunKlSsTfkBxdAAiNwBhCEDkFjdA4v2v7nmaAERucQOks7NzQpdOJQUgcosbIFP5Bw0gcgMQhgBEbgDCEIDIDUAYAhC5AQhDACI3AGEIQOQGIAwBiNwAhCEAkRuAMAQgcgMQhgBEbgDCEIDIDUAYAhC5AQhDACI3AGEIQOQGIAwBiNwAhCEAkRuAMAQgcgMQhgBEbgDCEIDIDUAYAhC5AQhDACI3AGEIQOQGIAwBiNwAhCEAkRuAMAQgcgMQhgBEbgDCEIDIDUAYAhC5AQhDACI3AGEIQOQGIAwBiNwAhCEAkZsWyT+YiSFjpLzxc3oh/xfKSPj+92K+XsJHzFcA4xkNAInKiPkKYDyjASBRGLE+xhtpKh/LTuVzEJfLRd3d3VFdRiwDEIamMpBgMDil/4ViAGFoKgOZ6gEIQ5KAeDweKi0tpYqKCtq8efOYo7y8nGw2Gx04cICam5vp4cOHUdqy2AUgDEkC4na7acuWLfT6669P6qTWarXSvXv3orSF/AEIQ5KAjG737t06AEVFReTxeGhgYIA6Ojpox44dujkWi4Xa2tqe4ZbFLgBhSCqQo0eP6nb+9vZ23TyPx0OpqanqJeeUFPL5fE+zOXERgDAkFUhlZaVup/f7/YZzHQ6HDlNTU9Oklx0vAQhDEoEEAgHKzMxUdviSkhLdvJFLvG1tbTog27dvf6rtiYcAhCGJQFwul26HP3funG7e8PAwERG1trbq5ttstqfanngIQBiSCOTIkSO6E2+Px6ObN/IJYgTkiy++eKrtiYcAhCGJQIqKipSdfc6cORQIBEzn79y5UwekpaVlQsscHBwkj8dDvb299O23305qvZ91AMKQNCADAwO6q1K7du0ynd/T00MWi0WZn52dHTr8Gq+vvvqKlixZogOWm5tLvb29E17/ZxmAMCQNyJUrV3Q7a2trq+Hc9vZ2SktL0x2O3b17d9zl9PT0UF5eXuh1a9eupZaWFiovLw99be7cuTF91gtAGJIGJPxwKTk5mfr6+mhoaIiGh4fJ6/VSQ0MDWa1WHaT09HRyuVzjLsPpdCqvczqdoe/dvHlTWXYsH2EBEIYkAQkGg5STkzPhR0yysrKorq4uoj/tT548qby2vr5e+f6NGzdC38vIyKChodg9cAkgDEkC0tfXpzufSExM1H1tZNTU1FBPT0/E73/27Fnl9Xv37tXNGX2BoKCgAIdYRADyLHoWQOx2u+nlXaNLv263O+L3vnPnzrgn8jU1NXF1Nx5AGJIEpLS01PTyrtHVraqqqojeNxAI6A7dmpublTkHDx4c99OFOwBhSAoQv99P6enpyk766aefKnNWrlypfD8lJSWic4TwT585c+aEDp3cbjctXLhQOaQ7derUxDY+SgEIQ1KAGD1Pde3aNWWO0SXg8Q6DjOAdP36cOjs7qaysTPn6li1byOv1Tmr7oxGAMCQFyL59+3SXdx8/fqzMCQQClJGRocwzeohxdNevXx/zClhubi4dOnSI+vv7J7Xd0QxAGJIAJBgM0oIFC5Qdt6ioyHDunj17lHlJSUmGz2mNVF1drczPz88np9NJbW1tcf+/6Wot3V6Kh2FvvEn2xpsxX49ojJsuLz03bTo9N206/eCHP4nact76fAUt+my5Mq513acvb9yjs1d7qfHWv01fe7n1Lj3/4q9D6/nctOm0Y99Rw7nOqx30o5QZEc1t6fbS8jUblbn7j5+P+e8k0qEVVl2ieBgFm+qoYFNdzNcjWmN6TkloRGsZv934Z8raYFXG7PV2emXlacpccZJeWXma3tx8wfC1fyw/qazj87mraKHtS9NlZb69Q5n/q8Vb6a1tFw3nvlxYpcyd9/GJmP8+Ih0AwjRiAeQ3n1gpa9VJylzxv/G7j84avvbV5Z8r6zjjzQ2mO3xh1SWa9/EJHSiz31/2+9XK3PnlJ8fcjvyNdkqbX0FvbjBeV84BIEwjNkAKKXPFMQVI1qozute9te0ivfhGpbKOry7/fMxlLd5aTz+b97Hymtf+us9wbu6qw8q8zLd3mL7v7z86QtNzSuinc9fRor8Zf9pxDgBhGrEA8sonVnrto9MKkLzyc7rX/WHtMWX9xtrZR4/wT50XZq8x/B3mb7Tr3j/z7R30py3nqbDqCdAFn/yLZv73UOylhTZavLU+5r+zwqpLpG0/3UbxMCqqG6iiuiHm6xGNUXWqjSzpeU/GS7Ojtpw5Vcsob9tSZWz45zX6y85GWvz3i/T+Z030j9O3aLf9Nu2236bNhy7TOxsP0rQZObrx41/Opnc2HqSNBxtpx+mW0GtGj8r9F3Wvm/7yPFqx7ThtO3ZNmbtozW7D5aTNWqz896I1u2nX2XbD5cVi4DIvQ/F4mdfn8+keGzEbZjcCx3ry1+j/R6+trTVdRnFxcVz+JdgAwlA8AolVjx49ovr6empsbKTz58/T9evX4/rvzwIQhgBEbgDC0FQG4vP54voT4GkDEIamMpCp/HsjAhCWAERuAMIQgMgNQBgCELkBCEMAIjcAYQhA5AYgDAGI3ACEIQCRG4AwBCByAxCGAERuAMIQgMgNQBgCELkBCEMAIjcAYQhA5AYgDAGI3ACEIQCRG4AwBCByAxCGAERuAMIQgMgNQBgCELlpIxsY6+FwOMjhcMR8PaIxRv/bfAkJCVFbjnVvMS3Z864ybt1ux+/tKYYW6xX4f/hBA4jcgUMshnCIJTcAYQhA5AYgDAGI3ACEIQCRG4AwBCByAxCGAERuAMIQgMgNQBgCELkBCEMAIjcAYQhA5AYgDAGI3ACEIQCRG4AwBCByAxCGAERuAMIQgMgNQBgCELkBCEMAIjcAYQhA5AYgDAGI3ACEIQCRG4AwBCByAxCGAERuAMIQgMgNQBgCELkBCEMAIjcAYQhA5AYgDAGI3ACEIQCRG4AwBCByAxCGAERuAMIQgMgNQBgCELkBCEMAIjcAYQhA5AYgDAGI3ACEIQCRG4AwBCByAxCGAERuAMIQgMgNQBgCELkBCEMAIjcAYQhA5AYgDAGI3ACEIQCRG4AwBCByAxCGAERuAMIQgMgNQBgCELn9B4KLRTkmtn8TAAAAAElFTkSuQmCC'
    )

    db.session.add(graph1)
    db.session.commit()
Exemple #31
0
 def test_teacher_invalid_confirmation_token(self):
     u1 = Teacher(password='******')
     u2 = Teacher(password='******')
     db.session.add(u1)
     db.session.add(u2)
     db.session.commit()
     token = u1.generate_auth_token()
     self.assertFalse(u2.verify_auth_token(token) == u2)
def add_teacher():
    """
    Add new teacher
    """
    form = AddTeacherForm()

    if form.validate_on_submit():
        teacher = Teacher(teacher_name=form.teacher_name.data)
        db.session.add(teacher)
        db.session.commit()
        flash(message='Teacher is successfully added.', category='success')
        return redirect(url_for('teacher.add_teacher'))

    return render_template('teacher/add_teacher.html', title='Add Teacher', form=form)
Exemple #33
0
def get_monthly_report():
    form = GetMonthlyReportsForm()
    form.teacher.choices = Teacher.get_teachers_for_choices(defaultOpt=(0,
                                                                        'All'))

    if form.validate_on_submit():
        monthly_report_list = [[
            'Teacher', 'Days as main teacher', 'Days as assistant teacher',
            'Total days', 'Salary'
        ]]

        month = int(form.month.data)
        year = int(form.year.data)
        pay_per_day = int(form.pay_per_day.data)

        if form.teacher.data != 0:
            teachers = Teacher.query.filter_by(id=form.teacher.data)
        else:
            teachers = Teacher.query.all()

        num_days_in_month = calendar.monthrange(year, month)[1]
        start_date = datetime(year, month, 1).date()
        end_date = datetime(year, month, num_days_in_month).date()

        for teacher in teachers:
            report_row = []
            report_row.append(teacher.teacher_name)
            days_as_main = Report.query.filter(
                and_(Report.teaching_date >= start_date,
                     Report.teaching_date <= end_date,
                     Report.main_teacher_id == teacher.id)).count()
            days_as_assistant = Report.query.filter(
                and_(Report.teaching_date >= start_date,
                     Report.teaching_date <= end_date,
                     Report.assistant_teacher_id == teacher.id)).count()
            total_teaching_days = days_as_main + days_as_assistant
            salary = pay_per_day * total_teaching_days
            report_row.append(days_as_main)
            report_row.append(days_as_assistant)
            report_row.append(total_teaching_days)
            report_row.append(salary)
            monthly_report_list.append(report_row)
        return excel.make_response_from_array(
            monthly_report_list,
            file_type='csv',
            file_name=f'{month}-{year} monthly report')

    return render_template('report/get_monthly_report.html',
                           title='Get Monthly Report',
                           form=form)
Exemple #34
0
 def get_teacher_list(self):
     import re
     items = re.split(ur'[\、\,\,\s\;\;]+', self.teachers.data)
     teachers = []
     for item in items:
         has_t = Teacher.get_by_name(item)
         if not has_t:
             teacher = Teacher.Teacher()
             teacher.name = item
             teacher.save()
             teachers.append(teacher)
         else:
             teachers.append(has_t)
     return teachers
def teacher_add():
    teacher_form = TeacherForm()
    if request.method == 'POST' and teacher_form.validate():
        ret = Teacher.create_teacher(teacher_form)
        if ret == 'OK':
            return redirect(url_for('admin.teacher'))
        elif ret == 'FAIL':
            flash(u'提交失败')
        else:
            flash(ret)
    return render_template('admin/teacher_form.html',
                           title=u'添加教师',
                           action=url_for('admin.teacher_add'),
                           teacher_form=teacher_form)
Exemple #36
0
def teacher_add():
    teacher_form = TeacherForm()
    if request.method == 'POST' and teacher_form.validate():
        ret = Teacher.create_teacher(teacher_form)
        if ret == 'OK':
            return redirect(url_for('admin.teacher'))
        elif ret == 'FAIL':
            flash(u'提交失败')
        else:
            flash(ret)
    return render_template('admin/teacher_form.html',
                           title = u'添加教师',
                           action = url_for('admin.teacher_add'),
                           teacher_form = teacher_form)
Exemple #37
0
 def test_teacher_is_employ_and_dissmiss(self):
     t = Teacher(telephone='13700000000')
     s = School(name='aschool')
     t.schools.append(s)
     db.session.add_all([t, s])
     db.session.commit()
     self.assertTrue(t.is_employ(s.id))
     t.dismiss_school(s.id)
     self.assertFalse(t.is_employ(s.id))
def reset_password_teacher(token):
    if current_user.is_authenticated:
        return redirect(url_for('teacher.dashboard_account'))
    teacher = Teacher.verify_reset_password_token(token)
    if not teacher:
        return redirect(url_for('teacher.dashboard_account'))
    form = ResetPasswordForm()
    if form.validate_on_submit():
        teacher.set_password(form.password.data)
        db.session.commit()
        flash('Your password has been reset.')
        return redirect(url_for('auth.login_teacher'))
    return render_template('auth/password-reset/reset_password_teacher.html',
                           title='Reset Password for Teacher',
                           form=form)
Exemple #39
0
def analyze(request, teacher_id):

	teacher = Teacher.objects.filter(id=teacher_id)
	str_request = ('http://api.donorschoose.org/common/json-teacher.html?teacher=%s&APIKey=DONORSCHOOSE' % teacher_id)
	r = requests.get(str_request)
	data_dict = {}
	if r.status_code == 200:
		json_response = json.loads(str(r.text))
		if not teacher:
			teacher = Teacher(id=teacher_id)
		teacher.description = json_response['description']
		teacher.photo_url = json_response['photoURL']
		teacher.poverty = json_response['povertyLevel']
		teacher.profile_url = json_response['profileURL']
		teacher.save()

	return render(
    	request,
    	'analyze.html',
    	{'teacher': teacher})
Exemple #40
0
Fichier : forms.py Projet : TSS2/a
 def get_teacher_list(self):
     # import re
     # items = re.split(ur'[\、\,\,\s\;\;]+', self.teachers.data)
     # teachers = []
     # for item in items:
     #     has_t = Teacher.get_by_name(item)
     #     if has_t is not None:
     #         teachers.append(has_t)
     # return teachers
     teachers = []
     # n = 0
     # print 1112222222222
     # h = Teacher.get_all()
     # for a in h:
     #     print h[n].name
     #     n = n + 1
     for item in self.teachers.data:
         if item == '':
             continue
         has_t = Teacher.get_by_name(item)
         if has_t is not None:
             teachers.append(has_t)
     return teachers
Exemple #41
0
    def get_teacher_key(self, teacher):
        """
        Get (or create) the teacher key based on the teacher name

        :param teacher: The teacher name
        :type teacher: app.robot.value_objects.Teacher
        :return: The teacher key
        :rtype: google.appengine.ext.ndb.Key
        """
        logging.debug("Searching teacher '%s'", teacher.name)
        key = self.generate_teacher_key(teacher)
        teacher_model = lru_cache.get(key)
        if teacher_model:
            logging.debug("Found teacher in LRU cache :D")
            raise ndb.Return(ndb.Key(Teacher, key))
        logging.debug("Searching (or even registering) teacher '%s' in NDB", teacher.name.decode("ISO-8859-1"))
        teacher_model = yield Teacher.get_or_insert_async(
            key,
            name=teacher.name.decode("ISO-8859-1"),
            context_options=context_options
        )
        """ type: app.models.Teacher """
        lru_cache[key] = teacher_model
        raise ndb.Return(teacher_model.key)
Exemple #42
0
def teachers_json():
    query = request.args.get('query', None)
    teachers = Teacher.get_all(query)
    return jsonify(teachers = [t.to_json() for t in teachers])