Exemplo n.º 1
0
    def make_seed_submission(assignment, submitter, final=False):
        with open('app/seed/hog_modified.py') as fp:
            messages = {}
            messages['file_contents'] = {
                'hog.py': fp.read(),
                'hogq.scm': 'Blank Stuff',
                'submit': final
            }

        g = models.User(email=["*****@*****.**"], is_admin=True)
        g.put()

        score = models.Score(score=88, tag='test', grader=g.key)
        score.put()

        messages = [
            models.Message(kind=kind, contents=contents)
            for kind, contents in messages.items()
        ]

        score = models.Score(score=10)

        score.put()

        backup = models.Backup(messages=messages,
                               assignment=assignment.key,
                               submitter=submitter.key,
                               client_time=random_date())

        backup.put()

        return models.Submission(backup=backup.key, score=[score])
Exemplo n.º 2
0
    def make_seed_scheme_submission(assignment, submitter, final=False):
        with open('app/seed/scheme.py') as sc, \
             open('app/seed/scheme_reader.py') as sr, \
             open('app/seed/tests.scm') as tests, \
             open('app/seed/questions.scm') as quest:
            messages = {}
            messages['file_contents'] = {
                'scheme.py': sc.read(),
                'scheme_reader.py': sr.read(),
                'tests.scm': tests.read(),
                'questsions.scm': quest.read(),
                'submit': final
            }

        messages = [
            models.Message(kind=kind, contents=contents)
            for kind, contents in messages.items()
        ]
        backup = models.Backup(messages=messages,
                               assignment=assignment.key,
                               submitter=submitter.key,
                               client_time=random_date())

        backup.put()

        return models.Submission(backup=backup.key)
Exemplo n.º 3
0
    def test_scores_forassign_w_fs_wo_scores(self):
        """Tests that fs scores are loaded"""
        assign = models.Assignment().put()
        user = models.User(email=['*****@*****.**']).put()
        backup = models.Backup(submitter=user, assignment=assign).put()
        subm = models.Submission(backup=backup).put()
        models.FinalSubmission(submitter=user,
                               assignment=assign,
                               submission=subm).put()

        user = user.get()
        self.assertNotEqual(user.get_final_submission(assign), None)
        self.assertFalse(user.scores_for_assignment(assign.get())[1])
Exemplo n.º 4
0
    def test_backup_index(self):
        """Tests permissions for backup"""
        admin = models.User(email=['*****@*****.**']).put().get()
        course = make_fake_course(admin)
        models.Participant.add_role(admin.key, course.key,
                                    constants.STAFF_ROLE)

        index = Need('index')
        assignment = make_fake_assignment(course, admin)
        backup = models.Backup(submitter=admin.key,
                               assignment=assignment.key).put().get()
        query = models.Backup.query()
        self.assertNotEqual(False,
                            models.Backup._can(admin, index, backup, query))
Exemplo n.º 5
0
    def test_get_final_wo_final(self):
        """"""
        admin = models.User(email=['*****@*****.**']).put().get()
        student = models.User(email=['*****@*****.**']).put().get()
        course = make_fake_course(admin)
        assignment = make_fake_assignment(course, admin)
        assignment.revision = True
        assignment.put().get()

        group = make_fake_group(assignment, admin, student).put()

        backup = models.Backup(submitter=student.key,
                               assignment=assignment.key).put()
        submission = models.Submission(backup=backup).put()

        self.assertEqual(submission.get().mark_as_final().get().group, group)
Exemplo n.º 6
0
    def test_get_final(self):
        """Test get_final"""
        admin = models.User(email=['*****@*****.**']).put().get()
        student = models.User(email=['*****@*****.**']).put().get()
        course = make_fake_course(admin)
        assignment = make_fake_assignment(course, admin).put().get()

        backup = models.Backup(submitter=student.key,
                               assignment=assignment.key).put()
        submission = models.Submission(backup=backup).put()
        fsubm = models.FinalSubmission(submitter=student.key,
                                       assignment=assignment.key,
                                       group=make_fake_group(
                                           assignment, admin, student).key,
                                       submission=submission).put().get()
        self.assertEqual(fsubm, submission.get().get_final())
Exemplo n.º 7
0
    def test_no_resubmit_other_user(self):
        user_obj, user_obj2 = self.get_user_pair()
        calls = [0]

        def resubmit(*args):
            calls[0] += 1

        self.mock(models.Submission, 'resubmit', resubmit)

        backup = models.Backup()
        backup.submitter = user_obj.key
        backup.put()
        subm = models.Submission(backup=backup.key)
        subm.put()

        self.merge_user(user_obj, user_obj2)
        self.assertEqual(calls[0], 0)
Exemplo n.º 8
0
def make_fake_backup(assignment, user):
    rval = models.Backup(submitter=user.key, assignment=assignment.key)
    rval.put()
    return rval
Exemplo n.º 9
0
    def setUp(self):
        super(FinalSubmissionTest, self).setUp()

        self.courses = {
            "first":
            models.Course(institution="UC Awesome",
                          display_name="First Course",
                          instructor=[self.accounts['admin'].key]),
            "second":
            models.Course(institution="UC Awesome",
                          display_name="Second Course",
                          instructor=[self.accounts['admin'].key]),
        }

        for course in self.courses.values():
            course.put()

        for student in ["student0", "student1", "student2"]:
            models.Participant.add_role(self.accounts[student],
                                        self.courses['first'],
                                        constants.STUDENT_ROLE)

        self.assignments = {
            "first":
            models.Assignment(name="first",
                              points=3,
                              creator=self.accounts["admin"].key,
                              course=self.courses['first'].key,
                              display_name="first display",
                              templates="{}",
                              max_group_size=3,
                              due_date=NOW + datetime.timedelta(days=1)),
        }
        for assign in self.assignments.values():
            assign.put()
        self.assign = self.assignments["first"]

        self.backups = {
            "first":
            models.Backup(
                submitter=self.accounts["student0"].key,
                assignment=self.assignments["first"].key,
                messages=[
                    models.Message(kind='file_contents',
                                   contents={"trends.py": ""})
                ],
            ),
            "second":
            models.Backup(
                submitter=self.accounts["student1"].key,
                assignment=self.assignments["first"].key,
                messages=[
                    models.Message(kind='file_contents',
                                   contents={"trends.py": ""})
                ],
            ),
            "third":
            models.Backup(
                submitter=self.accounts["student2"].key,
                assignment=self.assignments["first"].key,
                messages=[
                    models.Message(kind='file_contents',
                                   contents={"trends.py": ""})
                ],
            ),
        }

        for backup in self.backups.values():
            backup.put()
Exemplo n.º 10
0
 def get_basic_instance(self, mutate=True):
     rval = models.Backup(submitter=self._submitter.key,
                          assignment=self._assign.key)
     return rval
Exemplo n.º 11
0
    def setUp(self):  #pylint: disable=invalid-name
        super(BaseUnitTest, self).setUp()
        self.accounts = self.get_accounts()
        for user in self.accounts.values():
            user.put()

        self.courses = {
            "first":
            models.Course(institution="UC Awesome a",
                          instructor=[self.accounts['admin'].key]),
            "second":
            models.Course(institution="UC Awesome b",
                          instructor=[self.accounts['admin'].key]),
        }

        for course in self.courses.values():
            course.put()

        self.enroll("student0", "first", STUDENT_ROLE)
        self.enroll("student1", "first", STUDENT_ROLE)
        self.enroll("student2", "second", STUDENT_ROLE)
        self.enroll("staff", "first", STAFF_ROLE)

        self.assignments = {
            "first":
            models.Assignment(name="first",
                              points=3,
                              creator=self.accounts["admin"].key,
                              course=self.courses['first'].key,
                              display_name="first display",
                              templates="{}",
                              max_group_size=3,
                              due_date=datetime.datetime.now()),
            "second":
            models.Assignment(name="second",
                              points=3,
                              creator=self.accounts["admin"].key,
                              course=self.courses['second'].key,
                              display_name="second display",
                              templates="{}",
                              max_group_size=3,
                              due_date=datetime.datetime.now()),
            "empty":
            models.Assignment(name="empty",
                              points=3,
                              creator=self.accounts["admin"].key,
                              course=self.courses['first'].key,
                              display_name="second display",
                              templates="{}",
                              max_group_size=4,
                              due_date=datetime.datetime.now()),
        }
        for assign in self.assignments.values():
            assign.put()

        self.backups = {
            "first":
            models.Backup(
                submitter=self.accounts["student0"].key,
                assignment=self.assignments["first"].key,
            ),
            "second":
            models.Backup(
                submitter=self.accounts["student1"].key,
                assignment=self.assignments["first"].key,
            ),
            "third":
            models.Backup(
                submitter=self.accounts["student2"].key,
                assignment=self.assignments["second"].key,
            ),
        }
        for backup in self.backups.values():
            backup.put()

        self.submissions = {
            "first": models.Submission(backup=self.backups["first"].key),
            "second": models.Submission(backup=self.backups["second"].key),
            "third": models.Submission(backup=self.backups["third"].key),
        }
        for submission in self.submissions.values():
            submission.put()

        self.groups = {
            'group1':
            models.Group(member=[
                self.accounts['student0'].key, self.accounts['student1'].key
            ],
                         assignment=self.assignments['first'].key)
        }

        self.groups['group1'].put()

        group_backup = models.Backup(
            submitter=self.accounts['student0'].key,
            assignment=self.assignments['first'].key,
        )

        group_backup.put()
        self.backups['group'] = group_backup

        group_submission = models.Submission(backup=group_backup.key)

        group_submission.put()
        self.submissions['group'] = group_submission

        self.queues = {
            "first":
            models.Queue(
                assignment=self.assignments["first"].key,
                assigned_staff=[self.accounts["staff"].key],
            ),
        }
        for queue in self.queues.values():
            queue.put()

        self.diffs = {"first": models.Diff()}
        for diff in self.diffs.values():
            diff.put()

        self.comments = {
            "first":
            models.Comment(author=self.accounts['student0'].key,
                           diff=self.diffs["first"].key,
                           message="First comment"),
        }
        for comment in self.comments.values():
            comment.put()

        self.user = None