Пример #1
0
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)
Пример #2
0
    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()
Пример #3
0
    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)
Пример #4
0
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)
Пример #5
0
    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()