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
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()
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
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)