def gen_assignment(course): if gen_bool(0.5): display_name = random.choice( ['Hog', 'Hog Contest', 'Maps', 'Ants', 'Scheme']) else: display_name = '{0} {1}'.format( random.choice(['Homework', 'Lab', 'Quiz']), str(random.randrange(15)).zfill(2)) name = course.offering + '/' + display_name.lower().replace(' ', '') last_night = (datetime.datetime.utcnow().replace( hour=0, minute=0, second=0, microsecond=0) - datetime.timedelta(seconds=1)) last_night = ( pytz.timezone("America/Los_Angeles").localize(last_night).astimezone( pytz.utc)) due_date = last_night + datetime.timedelta( days=random.randrange(-100, 100)) lock_date = due_date + datetime.timedelta(days=1) support_online = gen_bool(0.5) return Assignment( name=name, course_id=course.id, display_name=display_name, due_date=due_date, lock_date=lock_date, max_group_size=weighted_choice([(1, 20), (2, 70), (3, 10)]), revisions_allowed=gen_bool(0.3), uploads_enabled=support_online, files={'fizzbuzz.py': original_file} if support_online else None)
def setup_course(self): """Creates: * A course (self.course) * An assignment (self.assignment) in that course * 5 users (self.user1, self.user2, etc.) enrolled as students """ self.course = Course(offering='cal/cs61a/sp16', institution='UC Berkeley', display_name='CS 61A') self.assignment = Assignment(name='cal/cs61a/sp16/proj1', course=self.course, display_name='Hog', due_date=datetime.datetime.now(), lock_date=datetime.datetime.now() + datetime.timedelta(days=1), max_group_size=4) db.session.add(self.assignment) def make_student(n): user = User(email='student{0}@aol.com'.format(n)) participant = Enrollment(user=user, course=self.course) db.session.add(participant) return user self.user1 = make_student(1) self.user2 = make_student(2) self.user3 = make_student(3) self.user4 = make_student(4) self.user5 = make_student(5) db.session.commit()
def test_invite_individual(self): individual_assignment = Assignment(name='cal/cs61a/sp16/lab00', course=self.course, display_name='Lab 0', due_date=datetime.datetime.now(), lock_date=datetime.datetime.now() + datetime.timedelta(days=1), max_group_size=1) db.session.add(individual_assignment) self.assertRaises(BadRequest, Group.invite, self.user1, self.user2, individual_assignment)
def new_assignment(cid): courses, current_course = get_courses(cid) if not Assignment.can(None, current_user, 'create'): flash('Insufficient permissions', 'error') return abort(401) form = forms.AssignmentForm(course=current_course) if form.validate_on_submit(): model = Assignment(course_id=cid, creator_id=current_user.id) form.populate_obj(model) db.session.add(model) db.session.commit() cache.delete_memoized(Assignment.name_to_assign_info) flash("Assignment created successfully.", "success") if form.visible.data: return redirect(url_for(".templates", cid=cid, aid=model.id)) return redirect(url_for(".course_assignments", cid=cid)) return render_template('staff/course/assignment/assignment.new.html', form=form, courses=courses, current_course=current_course)
def setup_course(self): """Creates: * A course (self.course) * 2 assignments (self.assignment) in that course * 5 users (self.user1, self.user2, etc.) enrolled as students * 2 staff members (self.staff1, self.staff2) as TAs * 1 lab assistant (self.lab_assistant1) as lab assistants * 1 Admin ([email protected]) """ self.admin = User(email='*****@*****.**', is_admin=True) db.session.add(self.admin) db.session.commit() self.course = Course(offering='cal/cs61a/sp16', institution='UC Berkeley', display_name='CS 61A') self.assignment = Assignment( name='cal/cs61a/sp16/proj1', creator_id=self.admin.id, course=self.course, display_name='Hog', due_date=dt.datetime.now(), lock_date=dt.datetime.now() + dt.timedelta(days=1), max_group_size=4, autograding_key='test') # AG responds with a 200 if ID = 'test' db.session.add(self.assignment) self.assignment2 = Assignment( name='cal/cs61a/sp16/proj2', creator_id=self.admin.id, course=self.course, display_name='Maps', due_date=dt.datetime.now() + dt.timedelta(days=2), lock_date=dt.datetime.now() + dt.timedelta(days=3), max_group_size=3) db.session.add(self.assignment2) def make_student(n): user = User(email='student{0}@aol.com'.format(n)) participant = Enrollment(user=user, course=self.course) db.session.add(participant) return user def make_staff(n, role=constants.STAFF_ROLE): user = User(email='staff{0}@bitdiddle.net'.format(n)) participant = Enrollment(user=user, course=self.course, role=role) db.session.add(participant) return user def make_lab_assistant(n, role=constants.LAB_ASSISTANT_ROLE): user = User(email='lab_assistant{0}@labassist.net'.format(n)) participant = Enrollment(user=user, course=self.course, role=role) db.session.add(participant) return user self.user1 = make_student(1) self.user2 = make_student(2) self.user3 = make_student(3) self.user4 = make_student(4) self.user5 = make_student(5) self.staff1 = make_staff(1) self.staff2 = make_staff(2) self.lab_assistant1 = make_lab_assistant(1) db.session.commit()