コード例 #1
0
    def serialize(self, attributes=None):
        if not attributes:
            attributes = ('statement_id', )

        serialized = attrs_to_dict(self, *attributes)
        user = getattr(g, 'user', None)
        if user and self.run.user.id == user.id:
            serialized.update(
                attrs_to_dict(self, *PynformaticsRun.AUTHOR_ATTRS))
        return serialized
コード例 #2
0
    def serialize(self, attributes=None):
        if not attributes:
            attributes = (
                'run_id',
                'contest_id',
                'create_time',
                'lang_id',
                'prob_id',
                'score',
                'size',
                'status',
                'problem_id',
            )

        serialized = attrs_to_dict(self, *attributes)

        if 'create_time' in attributes:
            serialized['create_time'] = str(serialized['create_time'])

        if 'problem_id' in attributes:
            serialized['problem_id'] = self.problem.id

        serialized.update(self.get_pynformatics_run().serialize())

        user = getattr(g, 'user', None)
        if not user or user.ejudge_id != self.user.ejudge_id:
            serialized['user'] = self.user.serialize()

        return serialized
コード例 #3
0
 def serialize(self):
     return attrs_to_dict(
         self,
         'id',
         'name',
         'content',
     )
コード例 #4
0
 def serialize(self):
     return attrs_to_dict(
         self,
         'start',
         'duration',
         'statement_id',
     )
コード例 #5
0
    def serialize(self, attributes=None):
        if attributes is None:
            attributes = (
                'id',
                'user',
                'problem_id',
                'statement_id',
                'score',
                'status',
                'language_id',
                'create_time',
                'ejudge_run_id',
                'ejudge_contest_id',
            )
        if hasattr(g, 'user') and g.user.id == self.user_id:
            attributes = (
                *attributes,
                'source',
            )
        serialized = attrs_to_dict(self, *attributes)

        if 'create_time' in attributes:
            serialized['create_time'] = str(self.create_time)

        if 'user' in attributes:
            serialized['user'] = self.user.serialize()

        return serialized
コード例 #6
0
    def update(self, user):
        if not self.json:
            self.json = {}

        if str(user.id) not in self.json:
            self.json[str(user.id)] = {
                **attrs_to_dict(user, 'firstname', 'lastname'),
            }
コード例 #7
0
ファイル: book.py プロジェクト: ElinRin/informatics-alive
 def serialize(self, course_module_id=None):
     serialized = attrs_to_dict(
         self,
         'id',
         'course_id',
         'name',
     )
     if course_module_id:
         serialized['url'] = Book.url(course_module_id)
     return serialized
コード例 #8
0
 def serialize(self, attributes=None):
     if not attributes:
         attributes = (
             'name',
             'description',
             'owner_id',
             'visible',
         )
     serialized = attrs_to_dict(self, *attributes)
     return serialized
コード例 #9
0
 def serialize(self):
     serialized = attrs_to_dict(
         self,
         'id',
         'course_id',
         'name',
         'type',
         'reference',
         'summary',
     )
     serialized['type'] = self.type_
     return serialized
コード例 #10
0
 def serialize_run(run):
     serialized = attrs_to_dict(
         run,
         'run_id',
         'contest_id',
         'create_time',
         'score',
         'status'
     )
     serialized['create_time'] = serialized['create_time'].isoformat()
     serialized['problem_id'] = run.problem.id
     return serialized
コード例 #11
0
    def serialize(self):
        serialized = attrs_to_dict(
            self,
            'id',
            'course_id',
            'module',
            'section_id',
            'visible',
        )
        if self.instance:
            serialized['type'] = self.instance.MODULE_TYPE
            if self.instance.MODULE_TYPE == 'STATEMENT':
                serialized['instance'] = attrs_to_dict(
                    self.instance,
                    'id',
                    'name',
                )
            elif self.instance.MODULE_TYPE in ['BOOK', 'MONITOR']:
                serialized['instance'] = self.instance.serialize(course_module_id=self.id)
            else:
                serialized['instance'] = self.instance.serialize()

        return serialized
コード例 #12
0
    def serialize(self, attributes=None):
        if not attributes:
            attributes = (
                'id',
                'name',
                'olympiad',
                'settings',
                'time_start',
                'time_stop',
                'virtual_olympiad',
                'virtual_duration',
                'course_module_id',
                'course',
                'require_password',
            )
        serialized = attrs_to_dict(self, *attributes)
        if 'course' in attributes and self.course:
            serialized['course'] = self.course.serialize()
        serialized['course_module_id'] = getattr(self.course_module, 'id',
                                                 None)

        if 'require_password' in attributes:
            if self.course:
                serialized['require_password'] = self.course.require_password()
            else:
                serialized['require_password'] = False

        user = getattr(g, 'user', None)
        if self.olympiad or self.virtual_olympiad:
            if not user:
                return serialized

            try:
                participant = self.participants.filter_by(
                    user_id=user.id).one()
            except NoResultFound:
                return serialized

            serialized['participant'] = participant.serialize()

        serialized['problems'] = {
            rank: {
                'id': statement_problem.problem.id,
                'name': statement_problem.problem.name,
            }
            for rank, statement_problem in self.StatementProblems.items()
            if statement_problem.problem and not statement_problem.hidden
        }
        return serialized
コード例 #13
0
    def test_simple(self):
        ejudge_run = EjudgeRun(
            run_id=2,
            user=self.users[0],
            problem=self.problems[0],
            run_uuid='some string',
            score=10,
            status=7,
            lang_id=27,
            test_num=3,
            create_time=datetime.datetime(2018, 3, 24, 9, 51, 30),
            last_change_time=datetime.datetime(2018, 3, 24, 9, 51, 31),
        )
        db.session.add(ejudge_run)
        db.session.flush()

        run = Run.from_ejudge_run(ejudge_run)
        db.session.add(run)
        db.session.flush()

        assert_that(
            attrs_to_dict(
                run,
                'user_id',
                'problem_id',
                'statement_id',
                'score',
                'ejudge_run_id',
                'ejudge_contest_id',
                'ejudge_score',
                'ejudge_status',
                'ejudge_language_id',
                'ejudge_test_num',
                'ejudge_create_time',
                'ejudge_last_change_time',
            ),
            has_entries({
                'user_id': self.users[0].id,
                'problem_id': self.problems[0].id,
                'score': ejudge_run.score,
                'ejudge_run_id': ejudge_run.run_id,
                'ejudge_contest_id': ejudge_run.contest_id,
                'ejudge_score': ejudge_run.score,
                'ejudge_status': ejudge_run.status,
                'ejudge_language_id': ejudge_run.lang_id,
                'ejudge_test_num': ejudge_run.test_num,
                'ejudge_create_time': ejudge_run.create_time,
                'ejudge_last_change_time': ejudge_run.last_change_time,
            }))
コード例 #14
0
    def serialize(self):
        serialized = attrs_to_dict(
            self,
            'id',
            'full_name',
            'short_name',
        )
        serialized['require_password'] = self.require_password()

        if not self.require_password():
            serialized['sections'] = [
                section.serialize() for section in self.sections.all()
                if section.visible
            ]
        return serialized
コード例 #15
0
 def serialize(self, attributes=None):
     if attributes is None:
         attributes = (
             'id',
             'user_id',
             'problem_id',
             'source',
             'language_id',
         )
     serialized = attrs_to_dict(self, *attributes)
     if 'user_id' in attributes:
         serialized['user_id'] = self.user.id
     if 'problem_id' in attributes:
         serialized['problem_id'] = self.problem.id
     return serialized
コード例 #16
0
    def serialize(self):
        serialized = attrs_to_dict(
            self,
            'id',
            'course_id',
            'section',
            'summary',
            'sequence',
            'visible',
        )
        serialized['modules'] = [
            module.serialize()
            for module in self.modules.filter_by(visible=True).all()
        ]

        return serialized
コード例 #17
0
ファイル: user.py プロジェクト: ElinRin/informatics-alive
 def serialize(self, attributes=None):
     if not attributes:
         attributes = (
             'id',
             'firstname',
             'lastname',
             'active_virtual',
             'ejudge_id',
         )
     serialized = attrs_to_dict(self, *attributes)
     if 'active_virtual' in attributes:  # TODO Убрать во внешний сериалайзер
         participant = self.get_active_participant()
         if participant:
             serialized['active_virtual'] = participant.serialize()
         else:
             serialized.pop('active_virtual')
     return serialized
コード例 #18
0
ファイル: tests.py プロジェクト: ElinRin/informatics-alive
    def check_request(
        self,
        username=None,
        password=None,
        moodle_user_id=None,
        moodle_session=None,
        status_code=200,
        message=None,
    ):
        response = self.send_request(
            username=username,
            password=password,
            moodle_user_id=moodle_user_id,
            moodle_session=moodle_session,
        )

        if status_code != 200:
            assert_that(
                response.json,
                has_entries({
                    'code': status_code,
                    'message': message,
                }))
            return

        # В ответе должна быть информация о пользователе
        assert_that(
            response.json,
            has_entries(
                **attrs_to_dict(self.user, 'id', 'firstname', 'lastname')))

        # В сессии должен быть id пользователя
        with self.client.session_transaction() as session:
            assert_that(session, has_entries({
                'user_id': self.user.id,
            }))
コード例 #19
0
 def serialize(self, attributes=None):
     if attributes is None:
         attributes = ('group_id', 'creator_id', 'redirect', 'disabled',
                       'url')
     serialized = attrs_to_dict(self, *attributes)
     return serialized
コード例 #20
0
 def serialize(self, attributes=None):
     if attributes is None:
         attributes = ('id', )
     serialized = attrs_to_dict(self, *attributes)
     return serialized