コード例 #1
0
def get_personality_analysis(test_id, date):
    if not Corporate.can_access_test(CookieHelper.get_corporate_id(),
                                     test_id):
        return Error("No access", 403)()

    return (Corporate.get_personality_analysis(CookieHelper.get_corporate_id(),
                                               test_id, date))
コード例 #2
0
def get_tab_change(test_id, date):
    if not Corporate.can_access_test(CookieHelper.get_corporate_id(),
                                     test_id):
        return Error("No access", 403)()

    return (Corporate.get_tab_change(CookieHelper.get_corporate_id(),
                                               test_id, date))
コード例 #3
0
def get_overview(test_id, date):
    if not Corporate.can_access_test(CookieHelper.get_corporate_id(),
                                     test_id):
        return Error("No access", 403)()

    return (Corporate.get_test_performance(CookieHelper.get_corporate_id(),
                                           test_id, date))
コード例 #4
0
def get_test_attempt_report(test_id, user_id):
    if (not Corporate.can_access_test(CookieHelper.get_corporate_id(), test_id)
            or not Corporate.can_access_user(CookieHelper.get_corporate_id(),
                                             user_id)
    ):
        return Error("No access", 403)()

    report = (TestAttemptReport
              .query
              .join(TestAttempt,
                    and_(TestAttemptReport.test_attempt_id == TestAttempt.id,
                         TestAttempt.test_id == test_id,
                         TestAttempt.user_id == user_id))
              .one()
              )
    test_attempt = (TestAttempt.query
                    .filter(TestAttempt.test_id == test_id)
                    .filter(TestAttempt.user_id == user_id)
                    .one())

    report = report.todict()
    report['tab_change_count'] = test_attempt.focus_lost_count

    del report['test_attempt_id']
    del report['domain_based_ability']
    del report['paragraph_writing_ability']

    return report
コード例 #5
0
    def action_play(self, *args, **kwargs):
        user = User.query.get(kwargs['id'])
        login_user(user)

        if user.corporate != None:
            corporate_id = user.corporate.id
            CookieHelper.set_corporate_cookie(corporate_id)
        return self.handle_action()
コード例 #6
0
def update_question_attempt_score(test_attempt_id, section_attmpt_id,
                                  question_id):
    req = request.json

    test_attempt = (
        TestAttempt.query
            .filter(TestAttempt.id == test_attempt_id)
            .join(CorporateApplicants,
                  and_(CorporateApplicants.user_id == TestAttempt.user_id,
                       CorporateApplicants.corporate_id == CookieHelper.get_corporate_id()
                       )
                  )
            .join(SectionAttempt,
                  and_(SectionAttempt.test_attempt_id == TestAttempt.id,
                       SectionAttempt.id == section_attmpt_id))
            .join(QuestionAttempt,
                  and_(QuestionAttempt.section_attempt_id == SectionAttempt.id,
                       QuestionAttempt.question_id == question_id))
            .options(contains_eager(TestAttempt.section_attempts)
                     .contains_eager(SectionAttempt.question_attempts))
            .one()
    )

    score_diff = (
            req['score'] - test_attempt.section_attempts[0].question_attempts[
        0].score)

    test_attempt.section_attempts[0].score += score_diff
    test_attempt.section_attempts[0].question_attempts[0].score += score_diff
    test_attempt.score += score_diff

    db.session.commit()
コード例 #7
0
def get_test_dates(test_id):
    from sqlalchemy import func
    if not Corporate.can_access_test(CookieHelper.get_corporate_id(),
                                     test_id):
        return Error("No access", 403)()

    test_attempts = (
        TestAttempt.query
            .options(load_only(TestAttempt.date))
            .filter(TestAttempt.test_id == test_id)
            .filter(TestAttempt.is_complete == True)
            .filter(

                TestAttempt.user_id.in_(
                        db.session.query(
                                CorporateApplicants.user_id)
                            .filter(
                                CorporateApplicants.corporate_id == CookieHelper.get_corporate_id())
                )

        )

            .group_by(
                func.YEAR(func.CONVERT_TZ(TestAttempt.date,
                                          "+00:00",
                                          "-05:30")),
                func.MONTH(func.CONVERT_TZ(TestAttempt.date,
                                           "+00:00",
                                           "-05:30")),

                func.DAY(func.CONVERT_TZ(TestAttempt.date,
                                         "+00:00",
                                         "-05:30"))

        )

            .all())

    # print(test_attempts

    return test_attempts
コード例 #8
0
def user_login():
    """
    Converts password text to hash string using bcrypt, verifies the
    combination against the database and creates a session for user in Flask
    :param email:
    :param password:
    :return: user.todict()
    """
    req = request.get_json()
    user = (User.query
            .filter(User.email == req['email'])
            .first()
            )
    if user is not None:
        if bcrypt.check_password_hash(user.password, req['password']):
            if user.is_active == False:
                return Error("Email not confirmed. Please check your mail",
                             http_code=403)()

            login_user(user)
            session.permanent = True

            # get all fields except
            fields = [c.name for c in User.__table__.c]
            fields = filter(
                    lambda x: x not in ['password', 'is_active', 'type'],
                    fields)
            fields = list(fields)
            fields.append("corporate")
            fields.append({"corporate": ["tests", "name", "id"]})

            json_dict = user.todict(fields)

            if json_dict['corporate'] != None:
                corporate_id = json_dict['corporate']['id']
                CookieHelper.set_corporate_cookie(corporate_id)

            return user.todict(fields)
    return Error("Invalid Email or Password", 401)()
コード例 #9
0
def get_test_attempt_psych_report(test_id, user_id):
    if (not Corporate.can_access_test(CookieHelper.get_corporate_id(), test_id)
            or not Corporate.can_access_user(CookieHelper.get_corporate_id(),
                                             user_id)
    ):
        return Error("No access", 403)()

    try:

        report = (SixteenPReport
                  .query
                  .join(TestAttempt,
                        and_(SixteenPReport.test_attempt_id == TestAttempt.id,
                             TestAttempt.test_id == test_id,
                             TestAttempt.user_id == user_id))
                  .one()
                  )

    except NoResultFound:
        return Error("Not Found", 404)()

    report = report.todict()

    return report
コード例 #10
0
def bulk_update_user_status():
    req = request.json
    user_ids = req['user_ids']
    new_status = req['status']

    applications = (CorporateApplicants.query
                    .filter(CorporateApplicants.user_id.in_(user_ids))
                    .filter(CorporateApplicants.corporate_id
                            == CookieHelper.get_corporate_id()
                            )
                    .all())

    for application in applications:
        application.type = ApplicationStatusTypes[new_status]

    db.session.commit()

    return applications
コード例 #11
0
def update_question_attempt(test_attempt_id, section_attmpt_id,
                            question_id):
    test_attempt = (
        TestAttempt.query
            .filter(TestAttempt.id == test_attempt_id)
            .join(TestAttempt,
                  and_(CorporateApplicants.user_id == TestAttempt.user_id,
                       CorporateApplicants.corporate_id == CookieHelper.get_corporate_id()
                       )
                  )
            .join(SectionAttempt,
                  and_(SectionAttempt.test_attempt_id == TestAttempt.id,
                       SectionAttempt.id == section_attmpt_id))
            .join(QuestionAttempt,
                  and_(QuestionAttempt.section_attempt_id == SectionAttempt.id,
                       QuestionAttempt.question_id == question_id))
            .options(contains_eager(TestAttempt.section_attempts)
                     .contains_eager(SectionAttempt.question_attempts))
            .one()
    )