def setUpAssignments(self): today = timezone.now() last_week = today - datetime.timedelta(weeks=1) yesterday = today - datetime.timedelta(days=1) tomorrow = today + datetime.timedelta(days=1) next_week = today + datetime.timedelta(weeks=1) self.openAssignment = Assignment( title='Open assignment', course=self.course, download='http://example.org/assignments/1/download', gradingScheme=self.passFailGrading, publish_at=last_week, soft_deadline=tomorrow, hard_deadline=next_week, has_attachment=False, ) self.openAssignment.save() self.softDeadlinePassedAssignment = Assignment( title='Soft deadline passed assignment', course=self.course, download='http://example.org/assignments/2/download', gradingScheme=self.passFailGrading, publish_at=last_week, soft_deadline=yesterday, hard_deadline=tomorrow, has_attachment=False, ) self.softDeadlinePassedAssignment.save() self.hardDeadlinePassedAssignment = Assignment( title='Hard deadline passed assignment', course=self.course, download='http://example.org/assignments/3/download', gradingScheme=self.passFailGrading, publish_at=last_week, soft_deadline=yesterday, hard_deadline=yesterday, has_attachment=False, ) self.hardDeadlinePassedAssignment.save() self.unpublishedAssignment = Assignment( title='Unpublished assignment', course=self.course, download='http://example.org/assignments/4/download', gradingScheme=self.passFailGrading, publish_at=tomorrow, soft_deadline=next_week, hard_deadline=next_week, has_attachment=False, ) self.unpublishedAssignment.save()
def create_uploaded_desc_assignment(course, grading_scheme): ''' Published: Yes Soft deadline: Not passed Hard deadline: Not passed -> visible Grading: Yes File attachment: No Validation: No Group work: Yes Upload for description: No ''' assign = Assignment( title=uccrap + 'Open assignment with uploaded description file', course=course, download=None, description=create_description_file(), gradingScheme=grading_scheme, publish_at=last_week, soft_deadline=tomorrow, hard_deadline=next_week, has_attachment=False, max_authors=3 ) assign.save() return assign
def create_open_assignment(course, grading_scheme, authors=3): ''' Published: Yes Soft deadline: Not passed Hard deadline: Not passed -> visible Grading: Yes File attachment: No Validation: No Group work: <depends on authors parameter> Upload for description: No ''' assign = Assignment( title=uccrap + 'Open assignment', course=course, download='http://example.org/assignments/1/download' + uccrap, gradingScheme=grading_scheme, publish_at=last_week, soft_deadline=tomorrow, hard_deadline=next_week, has_attachment=False, max_authors=authors ) assign.save() return assign
def create_validated_assignment(course, grading_scheme, casedir, validation_script, fulltest_script=None): ''' Create new assignment with validation scripts. ''' # Move test files to current MEDIA_ROOT, # otherwise Django security complains os.system('cp {0}/* {1}'.format(rootdir + casedir, settings.MEDIA_ROOT)) vs = open(settings.MEDIA_ROOT + validation_script, 'rb') if fulltest_script: fs = open(settings.MEDIA_ROOT + fulltest_script, 'rb') else: fs = None assign = Assignment( title=uccrap + 'Validated assignment', course=course, download='http://example.org/assignments/1/download' + uccrap, gradingScheme=grading_scheme, publish_at=last_week, soft_deadline=tomorrow, hard_deadline=next_week, has_attachment=True, validity_script_download=True, attachment_test_validity=DjangoFile(vs), attachment_test_full=DjangoFile(fs), max_authors=3 ) assign.save() return assign
def create_hard_passed_assignment(course, grading_scheme): ''' Published: Yes Soft deadline: Passed Hard deadline: Passed -> not visible Grading: Yes File attachment: No Validation: No Group work: Yes Upload for description: No ''' assign = Assignment( title=uccrap + 'Hard deadline passed assignment', course=course, download='http://example.org/assignments/2/download' + uccrap, gradingScheme=grading_scheme, publish_at=last_week, soft_deadline=yesterday, hard_deadline=yesterday, has_attachment=False, max_authors=3 ) assign.save() return assign
def create_no_grading_assignment(course): ''' Published: Yes Soft deadline: Not passed Hard deadline: Not passed -> visible Grading: No File attachment: No Validation: No Group work: Yes Upload for description: No ''' assign = Assignment( title=uccrap + 'No grading assignment', course=course, download='http://example.org/assignments/1/download' + uccrap, gradingScheme=None, publish_at=last_week, soft_deadline=tomorrow, hard_deadline=next_week, has_attachment=False, max_authors=3 ) assign.save() return assign
def handle(self, *args, **options): # create demo users users = {} for name in ['demo_student', 'demo_tutor', 'demo_owner']: user = User.objects.filter(username=name).delete() user = User.objects.create_user(username=name, email='*****@*****.**', password=name) UserProfile(user=user).save() users[name] = user # create demo grading passGrade = Grading(title='passed', means_passed=True) passGrade.save() failGrade = Grading(title='failed', means_passed=False) failGrade.save() passFailGrading = GradingScheme( title='Pass/Fail Grading Scheme (Demo)') passFailGrading.save() passFailGrading.gradings.add(passGrade) passFailGrading.gradings.add(failGrade) passFailGrading.save() # create demo course course = Course( title='Demo Course', active=True, owner=users['demo_owner'], max_authors=3, ) course.save() course.tutors.add(users['demo_tutor']) course.participants.add(users['demo_student'].profile) # create demo assignment today = timezone.now() last_week = today - datetime.timedelta(weeks=1) tomorrow = today + datetime.timedelta(days=1) next_week = today + datetime.timedelta(weeks=1) ass = Assignment(title='Demo Assignment 1', course=course, download='http://example.org/assignments1.pdf', gradingScheme=passFailGrading, publish_at=last_week, soft_deadline=tomorrow, hard_deadline=next_week, has_attachment=False) ass.save() # create demo submission Submission(assignment=ass, submitter=users['demo_student'], notes="This is a demo submission.", state=Submission.SUBMITTED_TESTED).save()
def setUpAssignments(self): from django.core.files import File as DjangoFile today = timezone.now() last_week = today - datetime.timedelta(weeks=1) yesterday = today - datetime.timedelta(days=1) tomorrow = today + datetime.timedelta(days=1) next_week = today + datetime.timedelta(weeks=1) # List of all assignments being assigned to the "self.course" course self.allAssignments = [] self.openAssignment = Assignment( title='Open assignment', course=self.course, download='http://example.org/assignments/1/download', gradingScheme=self.passFailGrading, publish_at=last_week, soft_deadline=tomorrow, hard_deadline=next_week, has_attachment=False) self.openAssignment.save() self.allAssignments.append(self.openAssignment) self.anotherAssignment = Assignment( title='Another open assignment', course=self.anotherCourse, download='http://example.org/assignments/1/download', gradingScheme=self.passFailGrading, publish_at=last_week, soft_deadline=tomorrow, hard_deadline=next_week, has_attachment=False) self.anotherAssignment.save() self.fileAssignment = Assignment( title='File assignment', course=self.course, download='http://example.org/assignments/1/download', gradingScheme=self.passFailGrading, publish_at=last_week, soft_deadline=tomorrow, hard_deadline=next_week, has_attachment=True) self.fileAssignment.save() self.allAssignments.append(self.fileAssignment) self.validatedAssignment = Assignment( title='Validated assignment', course=self.course, download='http://example.org/assignments/1/download', gradingScheme=self.passFailGrading, publish_at=last_week, soft_deadline=tomorrow, hard_deadline=next_week, has_attachment=True, validity_script_download=True, attachment_test_validity=DjangoFile( open(rootdir + '/opensubmit/tests/validators/working.zip')), attachment_test_full=DjangoFile( open(rootdir + '/opensubmit/tests/validators/working.zip'))) self.validatedAssignment.save() self.allAssignments.append(self.validatedAssignment) self.softDeadlinePassedAssignment = Assignment( title='Soft deadline passed assignment', course=self.course, download='http://example.org/assignments/2/download', gradingScheme=self.passFailGrading, publish_at=last_week, soft_deadline=yesterday, hard_deadline=tomorrow, has_attachment=False, ) self.softDeadlinePassedAssignment.save() self.allAssignments.append(self.softDeadlinePassedAssignment) self.hardDeadlinePassedAssignment = Assignment( title='Hard deadline passed assignment', course=self.course, download='http://example.org/assignments/3/download', gradingScheme=self.passFailGrading, publish_at=last_week, soft_deadline=yesterday, hard_deadline=yesterday, has_attachment=False, ) self.hardDeadlinePassedAssignment.save() self.allAssignments.append(self.hardDeadlinePassedAssignment) self.unpublishedAssignment = Assignment( title='Unpublished assignment', course=self.course, download='http://example.org/assignments/4/download', gradingScheme=self.passFailGrading, publish_at=tomorrow, soft_deadline=next_week, hard_deadline=next_week, has_attachment=False, ) self.unpublishedAssignment.save() self.allAssignments.append(self.unpublishedAssignment)
def setUpAssignments(self): today = timezone.now() last_week = today - datetime.timedelta(weeks=1) yesterday = today - datetime.timedelta(days=1) tomorrow = today + datetime.timedelta(days=1) next_week = today + datetime.timedelta(weeks=1) # List of all assignments being assigned to the "self.course" course self.allAssignments = [] self.openAssignment = Assignment( title=uccrap + 'Open assignment', course=self.course, download=u'http://example.org/assignments/1/download' + uccrap, gradingScheme=self.passFailGrading, publish_at=last_week, soft_deadline=tomorrow, hard_deadline=next_week, has_attachment=False) self.openAssignment.save() self.allAssignments.append(self.openAssignment) self.anotherAssignment = Assignment( title=uccrap + 'Another open assignment', course=self.anotherCourse, download=u'http://example.org/assignments/1/download' + uccrap, gradingScheme=self.passFailGrading, publish_at=last_week, soft_deadline=tomorrow, hard_deadline=next_week, has_attachment=False) self.anotherAssignment.save() self.fileAssignment = Assignment( title=uccrap + 'File assignment', course=self.course, download=u'http://example.org/assignments/1/download' + uccrap, gradingScheme=self.passFailGrading, publish_at=last_week, soft_deadline=tomorrow, hard_deadline=next_week, has_attachment=True) self.fileAssignment.save() self.allAssignments.append(self.fileAssignment) # Move test files to current MEDIA_ROOT, otherwise Django security complains working_zip = settings.MEDIA_ROOT + "working.zip" supportfiles_zip = settings.MEDIA_ROOT + "supportfiles.zip" single_file = settings.MEDIA_ROOT + "validator.py" shutil.copyfile(rootdir + '/opensubmit/tests/validators/working.zip', working_zip) shutil.copyfile( rootdir + '/opensubmit/tests/validators/supportfiles.zip', supportfiles_zip) shutil.copyfile(rootdir + '/opensubmit/tests/validators/validator.py', single_file) self.validatedAssignment = Assignment( title=uccrap + 'Validated assignment', course=self.course, download=u'http://example.org/assignments/1/download' + uccrap, gradingScheme=self.passFailGrading, publish_at=last_week, soft_deadline=tomorrow, hard_deadline=next_week, has_attachment=True, validity_script_download=True, attachment_test_validity=DjangoFile(open(working_zip)), attachment_test_full=DjangoFile(open(working_zip))) self.validatedAssignment.save() self.allAssignments.append(self.validatedAssignment) self.singleFileValidatorAssignment = Assignment( title=uccrap + 'Validated assignment with single file validator', course=self.course, download=u'http://example.org/assignments/1/download' + uccrap, gradingScheme=self.passFailGrading, publish_at=last_week, soft_deadline=tomorrow, hard_deadline=next_week, has_attachment=True, validity_script_download=True, attachment_test_validity=DjangoFile(open(single_file)), attachment_test_full=DjangoFile(open(single_file))) self.singleFileValidatorAssignment.save() self.allAssignments.append(self.singleFileValidatorAssignment) self.validatedWithSupportFilesAssignment = Assignment( title=uccrap + 'Validated assignment with support files', course=self.course, download=u'http://example.org/assignments/1/download' + uccrap, gradingScheme=self.passFailGrading, publish_at=last_week, soft_deadline=tomorrow, hard_deadline=next_week, has_attachment=True, validity_script_download=True, attachment_test_validity=DjangoFile(open(working_zip)), attachment_test_full=DjangoFile(open(working_zip)), attachment_test_support=DjangoFile(open(supportfiles_zip))) self.validatedWithSupportFilesAssignment.save() self.allAssignments.append(self.validatedWithSupportFilesAssignment) self.softDeadlinePassedAssignment = Assignment( title=uccrap + 'Soft deadline passed assignment', course=self.course, download=u'http://example.org/assignments/2/download' + uccrap, gradingScheme=self.passFailGrading, publish_at=last_week, soft_deadline=yesterday, hard_deadline=tomorrow, has_attachment=False, ) self.softDeadlinePassedAssignment.save() self.allAssignments.append(self.softDeadlinePassedAssignment) self.hardDeadlinePassedAssignment = Assignment( title=uccrap + 'Hard deadline passed assignment', course=self.course, download=u'http://example.org/assignments/3/download' + uccrap, gradingScheme=self.passFailGrading, publish_at=last_week, soft_deadline=yesterday, hard_deadline=yesterday, has_attachment=False, ) self.hardDeadlinePassedAssignment.save() self.allAssignments.append(self.hardDeadlinePassedAssignment) self.unpublishedAssignment = Assignment( title=uccrap + 'Unpublished assignment', course=self.course, download=u'http://example.org/assignments/4/download' + uccrap, gradingScheme=self.passFailGrading, publish_at=tomorrow, soft_deadline=next_week, hard_deadline=next_week, has_attachment=False, ) self.unpublishedAssignment.save() self.allAssignments.append(self.unpublishedAssignment)
def handle(self, *args, **options): print("Adding demo data ...") # create demo users users = {} for name in ['demo_student', 'demo_cheater', 'demo_tutor', 'demo_owner']: user = User.objects.filter(username=name).delete() user = User.objects.create_user(username=name, email='*****@*****.**', password=name, first_name=name, last_name=name) users[name] = user # create demo grading Grading.objects.filter(title='passed (demo)').delete() passGrade = Grading(title='passed (demo)', means_passed=True) passGrade.save() Grading.objects.filter(title='failed (demo)').delete() failGrade = Grading(title='failed (demo)', means_passed=False) failGrade.save() GradingScheme.objects.filter( title='Pass/Fail Grading Scheme (Demo)').delete() passFailGrading = GradingScheme( title='Pass/Fail Grading Scheme (Demo)') passFailGrading.save() passFailGrading.gradings.add(passGrade) passFailGrading.gradings.add(failGrade) passFailGrading.save() # create demo course Course.objects.filter(title='Demo Course').delete() course = Course( title='Demo Course', active=True, owner=users['demo_owner'], homepage="http://www.open-submit.org" ) course.save() course.tutors.add(users['demo_tutor']) course.participants.add(users['demo_student'].profile) course.participants.add(users['demo_cheater'].profile) today = timezone.now() last_week = today - datetime.timedelta(weeks=1) tomorrow = today + datetime.timedelta(days=1) next_week = today + datetime.timedelta(weeks=1) # create demo assignment ass1 = Assignment( title='Demo A1: Graded group work with deadline', course=course, download='http://example.org/assignments1.pdf', gradingScheme=passFailGrading, publish_at=last_week, soft_deadline=tomorrow, hard_deadline=next_week, has_attachment=True, max_authors=3 ) ass1.save() # create demo assignment without grading ass2 = Assignment( title='Demo A2: Non-graded group work with deadline', course=course, download='http://example.org/assignments2.pdf', gradingScheme=None, publish_at=last_week, soft_deadline=tomorrow, hard_deadline=next_week, has_attachment=True, max_authors=3 ) ass2.save() # create demo assignment without deadlines ass3 = Assignment( title='Demo A3: Graded group work without deadline, only notes', course=course, download='http://example.org/assignments1.pdf', gradingScheme=passFailGrading, publish_at=last_week, soft_deadline=None, hard_deadline=None, has_attachment=False, max_authors=3 ) ass3.save() # create demo assignment without deadlines ass4 = Assignment( title='Demo A4: Graded group work with deadline being over', course=course, download='http://example.org/assignments1.pdf', gradingScheme=passFailGrading, publish_at=last_week, soft_deadline=last_week, hard_deadline=last_week, has_attachment=False, max_authors=3 ) ass4.save() # create demo submission Submission( assignment=ass1, submitter=users['demo_student'], notes="Demo submission for A1.", state=Submission.SUBMITTED_TESTED, file_upload=createSubmissionFile() ).save() # create cheater submission in course 1 Submission( assignment=ass1, submitter=users['demo_cheater'], notes="Demo duplicate submission for A1.", state=Submission.SUBMITTED_TESTED, file_upload=createSubmissionFile() ).save()