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))
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))
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)))
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))
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))
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
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
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
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'))
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
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'))
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))
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
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
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]
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