Ejemplo n.º 1
0
        def _gen_backup(self, user, assignment, text, seconds_offset):
            def gen_messages(assignment):
                created = assignment.due_date - datetime.timedelta(
                    seconds=seconds_offset)
                messages = {
                    'file_contents': {
                        'fizz.py': text,
                    },
                    'analytics': {
                        'question': ['fizz'],
                        'time': str(created)
                    }
                }
                return messages

            messages = gen_messages(assignment)
            backup = models.Backup(created=assignment.due_date -
                                   datetime.timedelta(seconds=seconds_offset),
                                   submitter_id=user.id,
                                   assignment_id=assignment.id)
            backup.messages = [
                models.Message(kind=k, contents=m)
                for k, m in messages.items()
            ]
            return backup
Ejemplo n.º 2
0
        def _seed_course(self):
            self.active_user_ids = [self.user1.id, self.user3.id]
            # Setup some submissisions
            message_dict = {
                'file_contents': {
                    'backup.py': '1'
                },
                'analytics': {}
            }
            for i in range(5):
                for user_id in self.active_user_ids:
                    submit = True if i % 2 else False
                    backup = models.Backup(submitter_id=user_id,
                                           assignment=self.assignment,
                                           submit=submit)
                    messages = [
                        models.Message(kind=k, backup=backup, contents=m)
                        for k, m in message_dict.items()
                    ]
                    comment = models.Comment(
                        author=self.user1,
                        backup=backup,
                        filename='backup.py',
                        line=1,
                        message=
                        "# cool story\n<script>document.title = '1337 hax0r'</script>"
                    )

                    models.db.session.add_all(messages)
                    models.db.session.add(backup)
                    models.db.session.add(comment)
            models.db.session.commit()

            # Setup some groups
            models.Group.invite(self.user1, self.user4, self.assignment)
            group = models.Group.lookup(self.user1, self.assignment)
            group.accept(self.user4)

            models.Group.invite(self.user2, self.user3, self.assignment)

            self.oauth_client = models.Client(
                name='Testing Client',
                client_id='test-client',
                client_secret='secret',
                redirect_uris=['http://example.com/'],
                is_confidential=False,
                active=True,
                description='Sample App for testing OAuth',
                default_scopes=['email'],
            )
            models.db.session.add(self.oauth_client)
            models.db.session.commit()
Ejemplo n.º 3
0
def make_backup(user, assignment_id, messages, submit):
    """
    Create backup with message objects.

    :param user: (object) caller
    :param assignment: (int) Assignment ID
    :param messages: Data content of backup/submission
    :param submit: Whether this backup is a submission to be graded
    :return: (Backup) backup
    """
    backup = models.Backup(submitter=user, assignment_id=assignment_id,
                           submit=submit)
    backup.messages = [models.Message(kind=k, contents=m)
                       for k, m in messages.items()]
    models.db.session.add(backup)
    models.db.session.commit()
    return backup
Ejemplo n.º 4
0
        def test_assignment_send_backup_to_ag(self):
            self._login(role="admin")
            self.assignment.autograding_key = "test"  # Autograder will respond with 200
            models.db.session.commit()

            # find a backup
            backup = models.Backup(
                submitter_id=self.user1.id,
                assignment=self.assignment,
            )
            models.db.session.add(backup)
            models.db.session.commit()

            bid = utils.encode_id(backup.id)

            self.page_load(self.get_server_url() + "/admin/grading/" + bid)
            self.driver.find_element_by_id('autograde-button').click()
            self.assertIn("Submitted to the autograder",
                          self.driver.page_source)