Beispiel #1
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,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'
    )

    db.session.add(graph1)
    db.session.commit()
Beispiel #2
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)
Beispiel #3
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()
Beispiel #4
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()
Beispiel #5
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)
Beispiel #6
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 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)
Beispiel #8
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)
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)
Beispiel #10
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))
Beispiel #11
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))
Beispiel #12
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
Beispiel #13
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)
Beispiel #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)
Beispiel #15
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)
Beispiel #16
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)
Beispiel #17
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)
Beispiel #18
0
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)
Beispiel #19
0
def create_superuser(sid, password):
    """创建管理员账号"""
    admin = Teacher()

    admin.sid = sid
    admin.username = '******'
    admin.password = password
    admin.is_admin = True
    admin.confirmed = True
    try:
        db.session.add(admin)
        db.session.commit()
    except:
        return '创建失败'
    return '创建成功'
Beispiel #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()
Beispiel #21
0
def register():
    if current_user.is_authenticated:
        return redirect(url_for('users.dashboard'))
    form = RegistrationForm()
    if form.validate_on_submit():
        dept = Department.query.filter_by(
            dept_code=form.department.data).first()
        teacher = Teacher(name=form.name.data,
                          email=form.email.data,
                          password=form.password.data,
                          department=dept)
        db.session.add(teacher)
        db.session.commit()
        flash('Account created successfully! Please Log In.', 'success')
        return redirect(url_for('users.login'))
    return render_template('registerPro.html', form=form, title='Register')
Beispiel #22
0
def add_teacher():
    form = AddTeacherForm()

    if form.validate_on_submit():
        teacher = Teacher.query.filter_by(
            first_name=form.first_name.data, last_name=form.last_name.data, dept=form.dept.data).first()
        if teacher is not None:
            flash('Teacher already exists')
            return redirect(url_for('add_teacher'))
        teacher = Teacher(first_name=form.first_name.data,
                          last_name=form.last_name.data, dept=form.dept.data, created_by=current_user.id)
        db.session.add(teacher)
        db.session.commit()
        flash("Successfully Added New Teacher!")
        return redirect(url_for('add_teacher'))
    return render_template('add_teacher.html', title='Add Teacher', form=form)
Beispiel #23
0
    def post(self):

        parser = reqparse.RequestParser()
        parser.add_argument("first_name",
                            required=True,
                            help="Please enter a first name.")
        parser.add_argument("last_name",
                            required=True,
                            help="Please enter a last name.")
        parser.add_argument("email_address",
                            required=True,
                            help="Please enter an email address.")
        parser.add_argument("subjects_taught",
                            help="Separate multiple subject IDs with a comma.")
        args = parser.parse_args()
        first_name, last_name, email_address, subjects_taught = \
            args["first_name"], args["last_name"], args["email_address"], \
            args["subjects_taught"]
        teacher = Teacher(first_name=first_name,
                          last_name=last_name,
                          email_address=email_address,
                          staff_id="TC" + str(random.randint(1, 999)))
        if subjects_taught:
            subjects_taught_list = [
                subject.strip() for subject in subjects_taught.split(',')
            ]
            for subject_id in subjects_taught_list:
                try:
                    subject = Subject.query.get(subject_id)
                    if subject:
                        teacher.subjects_taught.append(subject)
                    else:
                        return {
                            "error":
                            "One or more subject IDs you entered "
                            "is invalid."
                        }, 400
                except:
                    return {
                        "error":
                        "The subjects_taught field should only "
                        "contain subject IDs separated by a comma."
                    }, 400
        return create_or_update_resource(resource=teacher,
                                         resource_type="teacher",
                                         serializer=teacher_serializer,
                                         create=True)
Beispiel #24
0
 def setUp(self):
     print('start test')
     self.app = create_app('test')
     self.app_context = self.app.app_context()
     self.app_context.push()
     db.create_all()
     self.t = Teacher()
     self.t.name = 'lizhiyong'
     self.t.age = 32
     db.session.add(self.t)
     db.session.commit()
     self.s = Student()
     self.s.name = 'zhangsan'
     self.s.age = 22
     self.s.teacher = self.t
     db.session.add(self.s)
     db.session.commit()
Beispiel #25
0
def addTeacher():
    result = {'code': 1, 'result': 'success'}
    try:
        teacher = Teacher()
        teacher.id = request.form.get('TeacherId', teacher.id)
        teacher.name = request.form.get('TeacherName', teacher.name)
        teacher.sex = str_to_bool(request.form.get('Sex', teacher.sex))

        if (request.form.get('Passwd', '') != ''):
            teacher.passwd = request.form.get('Passwd')

        db.session.add(teacher)
        db.session.commit()
    except Exception as e:
        result['code'] = 0
        result['result'] = '添加失败'
        print(e)
    return str(json.dumps(result))
def add_teacher():
    if isinstance(current_user._get_current_object(), Manager):
        if request.method == 'POST':
            TeacherNum = request.form['TeacherNum']
            DeptName = request.form['DeptName']
            DeptNum = Dept.query.filter_by(DeptName=DeptName).first().DeptNum
            TeacherName = request.form['TeacherName']
            TeacherSex = request.form['TeacherSex']
            TeacherTitle = request.form['TeacherTitle']
            TeacherInyear = request.form['TeacherInyear']
            if not Teacher.query.filter_by(TeacherNum=TeacherNum).first():
                teacher = Teacher(TeacherNum, DeptNum, TeacherName, TeacherSex,
                                  TeacherInyear, TeacherTitle)
                db.session.add(teacher)
                db.session.commit()
                flash('录入教师信息成功!')
            else:
                flash('工号%s已存在!' % (TeacherNum))
        return redirect(url_for('teacher_manage'))
Beispiel #27
0
def import_data(request):
    rb = xlrd.open_workbook('D:\pydata\prepod_goda.xlsx')
    sheet = rb.sheet_by_index(0)
    ins = Institute.objects.all()[0]
    n = sheet.nrows
    s = 'sdads'
    for rownum in range(sheet.nrows):
        row = sheet.row_values(rownum)
        d = row[0].strip()
        t = row[1].strip()
        g = row[2].strip()
        dep = Department()
        tech = Teacher()
        group = Group()

        db_d = Department.objects.filter(name=d)
        if (db_d.count() == 0):
            dep.name = d
            dep.institute = ins
            dep.save()
        else:
            dep = db_d[0]

        db_t = Teacher.objects.filter(last_name=t)
        if (db_t.count() == 0):
            tech.last_name = t
            tech.department = dep
            tech.save()
        else:
            tech = db_t[0]

        db_g = Group.objects.filter(name=g)
        if (db_g.count() == 0):
            group.name = g
            group.department = dep
            group.save()
        else:
            group = db_g[0]

        group.teachers.add(tech)
        group.save()

    return HttpResponse("OK " + s)
Beispiel #28
0
def register():
    if request.method == "GET":
        form = RegisterForm()
        return render_template("teacher/register.html",
                               form=form,
                               err=None,
                               err2=None)
    elif request.method == "POST":
        # 获取数据
        form = RegisterForm(request.form)
        try:
            form.validate_name(form.username)
            form.validate_email(form.email)
            form.validate_phone(form.phone)
        except ValidationError as e:
            return render_template("teacher/register.html",
                                   form=form,
                                   err=None,
                                   err2=e)

        if form.validate():
            data = form.data

            teacher = Teacher(
                username=data["username"],
                name=data["name"],
                pwd=generate_password_hash(data["pwd"]),
                email=data["email"],
                phone=data["phone"],
            )
            db.session.add(teacher)
            db.session.commit()

            session["username"] = teacher.username
            session["password"] = teacher.pwd
            return render_template("teacher/register_ok.html")
        err = form.errors
        return render_template("teacher/register.html",
                               form=form,
                               err=err,
                               err2=None)
def add_teacher():
    classes = Class.query.all()
    subjects = Subject.query.all()
    if request.method == 'POST':
        tech_name = request.form['tech_name']
        email = request.form['email']
        tech_address = request.form['tech_address']
        tech_contact = request.form['tech_contact']
        gender = request.form['gender']
        admin_id = current_user.id
        tech_subject = request.form['tech_subject']
        salary = request.form['salary']
        tech_class = request.form['stdclass']

        if tech_subject == 'Open this select subject':
            flash('Please etner subject!')
            return redirect(url_for('add_teacher'))

        if tech_class == 'Open this select class':
            tech_class = 'None'

        #tech_subject = Subject.query.filter_by(id=tech_subject.id).first()
        teacher = Teacher(tech_name=tech_name,
                          email=email,
                          tech_address=tech_address,
                          tech_contact=tech_contact,
                          gender=gender,
                          salary=salary,
                          admin_id=admin_id,
                          tech_subject=tech_subject,
                          tech_class=tech_class)
        db.session.add(teacher)
        db.session.commit()
        flash('{} teacher is successfully added!'.format(tech_name))
        return redirect(url_for('teacher_detials'))

    return render_template('administrator/add_teacher.html',
                           title='Add Teacher',
                           subjects=subjects,
                           classes=classes,
                           teacher=None)
Beispiel #30
0
def teacher_name_step(message):
    try:
        chat_id = message.chat.id
        name = message.text

        try:
            check_name = Student.query.filter(
                Student.id == str(chat_id)).first().name
            bot.send_message(chat_id,
                             text='Вы уже зарегистрировались как студент ' +
                             str(check_name))
        except AttributeError:
            teacher = Teacher(id=chat_id, name=name)
            db.session.add(teacher)
            db.session.commit()
            msg = bot.send_message(chat_id,
                                   text='Введите ссылку на таблицу Google')
            bot.register_next_step_handler(msg, teacher_table_link_step)
    except Exception as e:
        bot.reply_to(message,
                     "Произошла какая-то ошибка, я вас не понял " + str(e))