예제 #1
0
def create():
    user = get_jwt_identity
    params = request.json
    user = User.get_or_none(User.identity_card == get_jwt_identity())
    new_grade = Grade(student_id=params.get("student_id"), subject_id=params.get("subject_id"), grade=params.get("grade"), year=params.get("year"))

    if user.roles == "staff":
        if new_grade.save():
            response = []
            for grade in Grade.select():
                response.append({
                    "message": "Grade successfully updated",
                    "status": "Success",
                    "post_id": grade.subject_id,
                    "staff_name": grade.grade,
                    "title": grade.year,
                    "post": grade.student_id
                })
        else:
            response = {
                "error": new_grade.errors,
                "message": "Update failed, please try again",
                "status": "Failed"
            }
    else:
        response = {"message": "You are not allowed to perform this action!"}
    return jsonify(response)
예제 #2
0
 def setUp(self):
     student = Student('test', 1)
     course = Course(1, 'test_course')
     datetime_format = '%Y-%m-%dT%H:%M:%SZ'
     assignment = Assignment(1, 'hw1', '2018-01-02T23:59:00Z', course,
                             datetime_format)
     self.grade = Grade(student, course, assignment, 0.85)
예제 #3
0
    def post(self):
        data = request.get_json()

        # moge to tez w funkcji zamknac np checkPermission i raise custom error ktory zlapie na poziomie app

        grade_create_schema = GradeCreateSchema()
        grade = grade_create_schema.load(data)

        lecture_student = LectureStudents.query.filter_by(
            lecture_id=grade["lecture_id"],
            student_id=grade["student_id"]).first()
        if lecture_student is None:
            return {"mesage": "This student is not assigned to this lecture"}

        current_user_id = get_jwt_identity()
        #current_user = UserModel.query.get(current_user_id)
        teacher_id = lecture_student.lecture.teacher_id
        if current_user_id != teacher_id:
            return {"You have no permission to do that"}

        new_grade = Grade()
        new_grade.lecture_student = lecture_student
        new_grade.grade = grade['grade']

        db.session.add(new_grade)
        db.session.commit()

        return {"data": self.grade_schema.dump(new_grade)}
예제 #4
0
    def setUp(self):
        student = Student('test', 1)
        course = Course(1, 'test_course')
        datetime_format = '%Y-%m-%dT%H:%M:%SZ'
        assignment1 = Assignment(1, 'hw1', '2018-01-02T23:59:00Z', course,
                                 datetime_format)
        assignment2 = Assignment(2, 'hw2', '2018-01-02T23:59:00Z', course,
                                 datetime_format)
        assignment3 = Assignment(3, 'hw3', '2018-01-02T23:59:00Z', course,
                                 datetime_format)
        assignment4 = Assignment(4, 'hw4', '2018-01-02T23:59:00Z', course,
                                 datetime_format)
        self.grade1 = Grade(student, course, assignment1, 0.85)
        self.grade2 = Grade(student, course, assignment2, 0.75)
        self.grade3 = Grade(student, course, assignment3, 0.65)
        self.grade4 = Grade(student, course, assignment4, 0.55)

        self.enrollment = Enrollment(student, course, [self.grade1], 0.75)
예제 #5
0
def parse_grade(grades_page):
    try:
        disciplines_raw = [
                              [cell.text for cell in row("td")]
                              for row in BeautifulSoup(grades_page.content, features="lxml")("tr")
                          ][1:]
        disciplines = Grade(disciplines_raw).__dict__
    except:
        disciplines = None

    return disciplines
예제 #6
0
def insertGrade():
    if request.method == 'POST':
       grade = request.form['grade']
       student_id = request.form['student_id']
       course_id = request.form['course_id']
       grade = Grade(grade, student_id, course_id)
       if insertGrade(grade):
           return redirect(url_for('home'))
       else:
           error = 'ERROR'
           return render_template('insert-grade.html', error=error)
    else:
        return render_template('insert-grade.html')
예제 #7
0
from config.routes import routes
from modules.linechart_module import LineChartModule
from modules.fcq_card_module import FcqCardModule
from models.fcq import Fcq
from models.grade import Grade
from models.course import Course
from models.instructor import Instructor
from models.department import Department
from handlers.not_found_handler import NotFoundHandler
import logging

settings = {
    'cookie_secret': 'PqITv9b7QUyoAUUcgfRtReoZIXjQrEKKk9fpQpGu6MU=',
    'template_path': 'templates/',
    'static_path': 'static/',
    'grade': Grade(),
    'fcq': Fcq(),
    'course': Course(),
    'instructor': Instructor(),
    'department': Department(),
    'default_handler_class': NotFoundHandler,
    'ui_modules': {
        'chart_overtime': LineChartModule,
        'fcq_card': FcqCardModule
    }
}


def initialize_settings():
    settings['debug'] = options.debug
    settings['autoreload'] = options.debug
예제 #8
0
                        enrollment = Enrollment(
                            student,
                            course,
                            current_score=current_scores_dict.get(
                                student.lms_id))
                        student_grades = []
                        for assignment in assignments:
                            # Find the entry in grades_dict corresponding to this assignment
                            assignment_score = [
                                s for s in grades_dict.get(
                                    str(student.lms_id), [])
                                if str(s['lms_id']) == str(assignment.lms_id)
                            ]
                            if assignment_score:
                                student_grades.append(
                                    Grade(student, course, assignment,
                                          assignment_score[0].get('score')))
                        enrollment.add_grades(student_grades)
                        student.add_enrollments(enrollment)

            # Context dictionaries are used by Jinja to create the emails
            course_context_dicts = []
            for course in instructor.courses:
                logger.info(f'Finding outliers for {course.short_name}...')
                course_outliers = defaultdict(list)
                if course.students is not None:
                    for student in course.students:
                        # Create CI's for each student -> floats
                        enrollment = student.get_enrollment_by_course(course)

                        # Look for new good/bad results -> Assignments
                        if ref_date is not None:
예제 #9
0
def seed_grades():
    for grade in grades:
        new_grade = Grade(**grade)
        db.session.add(new_grade)
        db.session.commit()
예제 #10
0
def digest_grades(db, conn):
    data = dataSet('data/grades/grades.csv')
    grade_data = list(map(Grade().sanitize_from_raw, data.raw_data))
    dci_from_data(grade_data, db, conn)
    batch_insert(db, conn, grade_data, 'Grade')
예제 #11
0
 def rowToGrade(row):
     grade = row[0]
     student_id = row[1]
     course_id = row[2]
     return Grade(grade, student_id, course_id)