예제 #1
0
def fix_for_employee_feature_group(request, sql_session):
  feature_group_1 = FeatureGroup(n=1, name='GROUP_1', parent_n=1)
  Session.add(feature_group_1)
  feature_group_2 = FeatureGroup(n=2, name='GROUP_2', parent_n=1)
  Session.add(feature_group_2)

  Session.add(Feature(n=1, name='-'))
  Session.add(Feature(n=2, name='FEATURE_1',
                      feature_group=[feature_group_1, ]))
  Session.add(Feature(n=3, name='FEATURE_2',
                      feature_group=[feature_group_2, ]))

  Session.add(Question(n=21, feature_n=1, txt='CONTENT_21'))
  Session.add(Question(n=22, feature_n=2, txt='CONTENT_22'))
  Session.add(Question(n=31, feature_n=3, txt='CONTENT_31'))

  _today = date.today()
  Session.add(Result(n=1, question_n=21,
                     is_correct=True, employee_n=1, ddate=_today))
  Session.add(Result(n=2, question_n=22,
                     is_correct=False, employee_n=1, ddate=_today))

  Session.add(Result(n=3, question_n=22,
                     is_correct=True, employee_n=2, ddate=_today))
  Session.add(Result(n=4, question_n=31,
                     is_correct=False, employee_n=2, ddate=_today))
  Session.add(Plan(n=1, employee_n=1, year=date.today().year,
                   month=date.today().month, qty_work=1, qty_question=1))
  Session.add(Plan(n=2, employee_n=2, year=date.today().year,
                   month=date.today().month, qty_work=1, qty_question=2))
예제 #2
0
def fix_results_for_pivot_report(request, sql_session):

  feature_group_1 = FeatureGroup(n=1, name='GROUP_1', parent_n=1)
  Session.add(feature_group_1)

  Session.add(Feature(n=1, name='FEATURE_1',
                      feature_group=[feature_group_1, ]))
  # Session.commit()
  # Вопрос 1 к Теме 2
  Session.add(Question(n=21, feature_n=1, txt='CONTENT21', answer_n=211))
  # Session.commit()
  Session.add(Answer(n=211, question_n=21, txt='CONTENT211'))

  Session.add(Question(n=31, feature_n=1, txt='CONTENT31', answer_n='311'))
  # Session.commit()
  Session.add(Answer(n=311, question_n=31, txt='CONTENT311'))
  # Session.commit()

  _today = date.today()
  tomorrow = _today + relativedelta(days=1)
  Session.add(Result(n=10, question_n=21, answer_n=211,
                     is_correct=True, employee_n=1, ddate=_today))
  Session.add(Result(n=11, question_n=21, answer_n=211,
                     is_correct=True, employee_n=1, ddate=_today))
  Session.add(Result(n=12, question_n=31, answer_n=221,
                     is_correct=False, employee_n=1, ddate=_today))

  Session.add(Result(n=13, question_n=21, answer_n=211,
                     is_correct=True, employee_n=1, ddate=tomorrow))
  Session.add(Result(n=14, question_n=31, answer_n=221,
                     is_correct=False, employee_n=1, ddate=tomorrow))
예제 #3
0
def fix_report(request, sql_session):
  Session.add(EmployeeGroup(n=1, name='admins'))
  Session.add(Employee(n=1,  name='NAME_1',
                       employee_group_n=1, disabled=False))
  # Этот тупой. Нет правильных ответов
  Session.add(Employee(n=2,  name='NAME_2',
                       employee_group_n=1, disabled=False))

  Session.add(Feature(n=1, name='FEATURE_1'))
  Session.add(Feature(n=2, name='FEATURE_2'))

  Session.add(Question(n=1, feature_n=1, txt='QUESTION_1', answer_n=12))
  Session.add(Answer(n=11, question_n=1, txt='ANSWER_11'))
  Session.add(Answer(n=12, question_n=1, txt='ANSWER_12'))

  Session.add(Question(n=2, feature_n=2, txt='QUESTION_2', answer_n=21))
  Session.add(Answer(n=21, question_n=2, txt='ANSWER_21'))
  Session.add(Answer(n=22, question_n=2, txt='ANSWER_22'))

  Session.add(Result(n=11, question_n=1, answer_n=12,
                     is_correct=True, employee_n=1, ddate=date.today()))
  Session.add(Result(n=12, question_n=1, answer_n=11,
                     is_correct=False, employee_n=2, ddate=date.today()))

  Session.add(Result(n=21, question_n=2, answer_n=21,
                     is_correct=True, employee_n=1, ddate=date.today() + timedelta(days=1)))
  Session.add(Result(n=22, question_n=2, answer_n=22,
                     is_correct=False, employee_n=2, ddate=date.today() + timedelta(days=1)))
예제 #4
0
def fix_results_for_rest(request, sql_session):
  Session.add(Feature(n=1, name='-'))
  Session.add(Feature(n=2, name='FEATURE1'))
  Session.add(Feature(n=3, name='FEATURE2'))
  # Session.commit()
  # Вопрос 1 к Теме 2
  Session.add(Question(n=21, feature_n=2, txt='CONTENT21', answer_n=211))
  # Session.commit()
  Session.add(Answer(n=211, question_n=21, txt='CONTENT211'))
  Session.add(Answer(n=212, question_n=21, txt='CONTENT212'))
  Session.add(Answer(n=213, question_n=21, txt='CONTENT213'))

  # Вопрос 2 к Теме 2
  Session.add(Question(n=22, feature_n=2, txt='CONTENT22', answer_n=211))
  # Session.commit()
  Session.add(Answer(n=221, question_n=22, txt='CONTENT221'))
  Session.add(Answer(n=222, question_n=22, txt='CONTENT222'))
  Session.add(Answer(n=223, question_n=22, txt='CONTENT223'))
  # Session.commit()

  # Вопрос 1 к Теме 3
  Session.add(Question(n=31, feature_n=3, txt='CONTENT31', answer_n='311'))
  # Session.commit()
  Session.add(Answer(n=311, question_n=31, txt='CONTENT311'))
  Session.add(Answer(n=312, question_n=31, txt='CONTENT312'))
  Session.add(Answer(n=313, question_n=31, txt='CONTENT313'))
  # Session.commit()

  Session.add(Result(n=1, question_n=21, answer_n=211,
                     is_correct=True, employee_n=1, ddate=yesterday))
  Session.add(Result(n=2, question_n=22, answer_n=221,
                     is_correct=False, employee_n=1, ddate=yesterday))
예제 #5
0
def fix_results(request, sql_session):
  Session.add(EmployeeGroup(n=1, name='admins'))
  Session.add(Employee(n=1,  name='NAME',
                       password='******', employee_group_n=1, disabled=False))

  Session.add(Feature(n=1, name='-'))
  Session.add(Feature(n=2, name='FEATURE1'))
  Session.add(Feature(n=3, name='FEATURE2'))
  # Session.commit()
  # Вопрос 1 к Теме 2
  Session.add(Question(n=21, feature_n=2, txt='CONTENT21', answer_n=211))
  Session.add(Answer(n=211, question_n=21, txt='CONTENT211'))
  Session.add(Answer(n=212, question_n=21, txt='CONTENT212'))
  Session.add(Answer(n=213, question_n=21, txt='CONTENT213'))

  # Вопрос 2 к Теме 2
  Session.add(Question(n=22, feature_n=2, txt='CONTENT22', answer_n=211))
  Session.add(Answer(n=221, question_n=22, txt='CONTENT221'))
  Session.add(Answer(n=222, question_n=22, txt='CONTENT222'))
  Session.add(Answer(n=223, question_n=22, txt='CONTENT223'))

  # Вопрос 1 к Теме 3
  Session.add(Question(n=31, feature_n=3, txt='CONTENT31', answer_n='311'))
  Session.add(Answer(n=311, question_n=31, txt='CONTENT311'))
  Session.add(Answer(n=312, question_n=31, txt='CONTENT312'))
  Session.add(Answer(n=313, question_n=31, txt='CONTENT313'))

  Session.add(Result(n=1, question_n=21, answer_n=211,
                     is_correct=True, employee_n=1))
  Session.add(Result(n=2, question_n=22, answer_n=221,
                     is_correct=False, employee_n=1))
예제 #6
0
 def create_question(feature, params):
     question = Question()
     question.txt = params['txt']
     question.feature_n = feature.n
     Session.add(question)
     answer_n = params['answer_n']
     Session.flush()
     if 'answers' in params:
         for answer_params in params['answers']:
             answer = FeatureCtrl.create_answer(question, answer_params)
             if answer is not None and answer_params['n'] == answer_n:
                 question.answer_n = answer.n
                 Session.flush()
             # print(answer_params)
     return question
예제 #7
0
 def generate_question(employee_name):
     """
 Получение след.вопроса в зависимости от плана и уже отвеченных вопросов
 """
     null_question = Question(n=0)
     today = date.today()
     year = today.year
     month = today.month
     employee = EmployeeCtrl.find_by_name(employee_name)
     plan = PlanCtrl.get_current_plan(employee_name, year, month)
     qty_answered = ResultCtrl.count_answered(employee, year,
                                              month)  # уже отвечено
     if plan.qty_question > qty_answered:
         qty_day = plan.qty_question // plan.qty_work + 1  # к-во вопросов в день
         # print('qty_day = %s' % (qty_day,))
         # print(plan)
         params = {'employee_n': employee.n, 'date': today}
         results = ResultCtrl.find(params)  # отвечено сегодня
         # print('results = %s' % (results,))
         if len(results) < qty_day:  # если план на день еще не выполнен
             subquery = Session.query(
                 Result.question_n).filter(Result.employee_n == employee.n)
             q = Session.query(Question).filter(
                 not_(Question.n.in_(subquery)))
             questions = q.all()
             # print(questions)
             if len(questions) == 0 or questions is None:
                 return QuestionCtrl.get_repeat(employee)
             return questions[0]
         else:
             return null_question
     else:
         # План по вопросам сделан
         return null_question
예제 #8
0
    def test_model_sets_n_automatically(self):
        question = Question(feature_n=3, txt='CONTENT31', answer_n=311)
        Session.add(question)
        Session.flush()
        assert question.answer_n == 311

        questions = Session.query(Question).filter(
            Question.feature_n == 3).all()
        assert len(questions) == 1
예제 #9
0
def fix_questions(request, sql_session):
  Session.add(Feature(n=1, name='-'))
  Session.add(Feature(n=2, name='FEATURE1'))
  Session.add(Feature(n=3, name='FEATURE2'))
  # Session.commit()
  # Вопрос 1 к Теме 2
  Session.add(Question(n=21, feature_n=2, txt='CONTENT21', answer_n=211))
  Session.add(Answer(n=211, question_n=21, txt='CONTENT211'))
  Session.add(Answer(n=212, question_n=21, txt='CONTENT212'))
  Session.add(Answer(n=213, question_n=21, txt='CONTENT213'))
예제 #10
0
    def get_repeat(employee):
        """
    Получение вопроса среди уже отвеченных,
    в случае когда на все вопросы уже ответили,
    но по плану нужно еще задать. Т.е. вопросы задаются повторно.
    """
        result = Session.query(Result.question_n).filter(
            Result.employee_n == employee.n,
            Result.question_n == Question.n).group_by(
                Result.question_n).order_by(func.count()).first()

        question = Question.get(result.question_n)
        return question
예제 #11
0
def fix_full_fixteres(request, sql_session):
  Session.add(FeatureGroup(n=1, name='group1'))
  feature_group = FeatureGroup(n=11, name='group11', parent_n=1)
  Session.add(feature_group)

  feature = Feature(n=1, name='FEATURE_1',
                    info='INFO_1', info_profit='INFO_PROFIT_1', feature_group=[feature_group, ])

  Session.add(feature)
  Session.add(Question(n=1, feature_n=1, txt='QUESTION_1', answer_n=2))

  Session.add(Answer(n=1, question_n=1, txt='ANSWER_1'))
  Session.add(Answer(n=2, question_n=1, txt='ANSWER_2'))
  Session.add(Answer(n=3, question_n=1, txt='ANSWER_3'))
예제 #12
0
def fix_results_for_generate(request, sql_session):
  feature_group_1 = FeatureGroup(n=1, name='GROUP_1', parent_n=1)
  Session.add(feature_group_1)
  feature_group_2 = FeatureGroup(n=2, name='GROUP_2', parent_n=1)
  Session.add(feature_group_2)

  Session.add(Feature(n=1, name='-'))
  Session.add(Feature(n=2, name='FEATURE1', feature_group=[feature_group_1, ]))
  Session.add(Feature(n=3, name='FEATURE2', feature_group=[feature_group_2, ]))
  # Session.commit()
  # Вопрос 1 к Теме 2
  Session.add(Question(n=21, feature_n=1, txt='CONTENT21', answer_n=211))
  # Session.commit()
  Session.add(Answer(n=211, question_n=21, txt='CONTENT211'))
  Session.add(Answer(n=212, question_n=21, txt='CONTENT212'))
  Session.add(Answer(n=213, question_n=21, txt='CONTENT213'))

  # Вопрос 2 к Теме 2
  Session.add(Question(n=22, feature_n=2, txt='CONTENT22', answer_n=211))
  # Session.commit()
  Session.add(Answer(n=221, question_n=22, txt='CONTENT221'))
  Session.add(Answer(n=222, question_n=22, txt='CONTENT222'))
  Session.add(Answer(n=223, question_n=22, txt='CONTENT223'))
  # Session.commit()

  # Вопрос 1 к Теме 3
  Session.add(Question(n=31, feature_n=3, txt='CONTENT31', answer_n='311'))
  # Session.commit()
  Session.add(Answer(n=311, question_n=31, txt='CONTENT311'))
  Session.add(Answer(n=312, question_n=31, txt='CONTENT312'))
  Session.add(Answer(n=313, question_n=31, txt='CONTENT313'))
  # Session.commit()

  _today = date.today()
  Session.add(Result(n=1, question_n=21, answer_n=211,
                     is_correct=True, employee_n=1, ddate=_today))
예제 #13
0
 def exam(question_n, answer_n, employee_name, time_begin, time_end):
   """
   Проверка ответа на вопрос и сохранение результата тестирования
   """
   result = Result()
   employee = EmployeeCtrl.find_by_name(employee_name)
   result.employee_n = employee.n
   result.question_n = question_n
   result.answer_n = answer_n
   result.time_begin=time_begin
   result.time_end=time_end
   question = Question.get(question_n)
   result.is_correct = (question.answer_n == int(answer_n))
   Session.add(result)
   Session.flush()
   return result
예제 #14
0
 def update_question(feature, questions_params):
     # print(questions_params)
     for question_param in questions_params:
         n = question_param['n']
         if n <= 0:
             FeatureCtrl.create_question(feature, question_param)
         else:
             q = Session.query(Question).filter(Question.n == n)
             if 'txt' in question_param:
                 q.update({'txt': question_param['txt']})
             if 'answer_n' in question_param:
                 q.update({'answer_n': question_param['answer_n']})
             question = Question.get(n)
             if 'answers' in question_param:
                 FeatureCtrl.update_answer(question,
                                           question_param['answers'])
         return feature
예제 #15
0
 def get_next(employee_name):
     """
 Получение следующего вопроса для сотрудника
 """
     null_question = Question(n=0)
     employee = EmployeeCtrl.find_by_name(employee_name)
     today_results = Session.query(Result).filter(
         Result.ddate == date.today()).all()
     if len(today_results) > 0:
         return null_question
     subquery = Session.query(
         Result.question_n).filter(Result.employee_n == employee.n)
     q = Session.query(Question).filter(not_(Question.n.in_(subquery)))
     questions = q.all()
     if len(questions) == 0:
         return null_question
     return questions[0]
예제 #16
0
    def post(self):
        if self.context.action == 'exam':
            params = self.request.json_body
            print('-------------------------')
            print(params['time_begin'])
            time_begin = datetime.strptime(params['time_begin'],
                                           '%Y-%m-%d %H:%M:%S')
            time_end = datetime.strptime(params['time_end'],
                                         '%Y-%m-%d %H:%M:%S')
            res = ResultCtrl.exam(params['question_n'], params['answer_n'],
                                  params['employee_name'], time_begin,
                                  time_end)
            # print(res.is_correct)
            question = Question.get(params['question_n'])
            feature = question.feature

            return ResultWithFeatureJSON().dump({
                'feature': feature,
                'is_correct': res.is_correct
            }).data