示例#1
0
def assignment_delete(assignment_pk):
    assignment = Assignment.get(pk=assignment_pk)
    if request.method == 'GET':
        return render_template('assignment_delete.html', assignment=assignment)
    if request.method == 'POST':
        assignment.delete()
        return redirect(url_for('assignments'))
示例#2
0
def assignment_delete(assignment_pk):
    assignment = Assignment.get(pk=assignment_pk)
    if request.method == 'GET':
        return render_template('assignment_delete.html', assignment=assignment)
    if request.method == 'POST':
        assignment.delete()
        return redirect(url_for('assignments'))
示例#3
0
def public_gradebook():
    students = Student.all(order='alias')
    assignments = [a for a in Assignment.all() if a.is_public]
    for student in students:
        # Set the grades following the order specified by assignment_pks
        grades = student.get_grades()

        grades_by_assignment_pk = dict([(g.assignment_pk, g) for g in grades])

        student.points_by_assignment_pk = {}
        for assignment in assignments:
            grade = grades_by_assignment_pk.get(assignment.pk)
            if grade:
                grade.assignment = assignment
            points = grade.points if grade else 0
            student.points_by_assignment_pk[assignment.pk] = points
        student.grades = grades
        student.has_comments = any((grade.comment for grade in grades))

    now = datetime.now()
    return render_template(
        "public_gradebook.html",
        assignments=assignments,
        students=students,
        now=now
    )
示例#4
0
def assignment_create():
    if request.method == 'GET':
        return render_template('assignment_create.html')
    elif request.method == 'POST':
        assignment = Assignment(
            name=request.form['name'],
            description=request.form['description'],
            #comment=request.form['comment'],#ThiscausesanHTTP400whenavaluewasn'tsubmittedintheform(becauseofaKeyErrorontheMultiDict).Howstupid!
            due_date=request.form['due_date'],
            points=request.form['points'],
            is_public=request.form.get('is_public', False, bool))
        assignment.save()
        if "create_and_add" in request.form:
            return render_template('assignment_create.html')
        elif "create" in request.form:
            return redirect(
                url_for('assignment_view', assignment_pk=assignment.pk))
示例#5
0
def assignment_create():
    if request.method == 'GET':
        return render_template('assignment_create.html')
    elif request.method == 'POST':
        assignment = Assignment(
            name=request.form['name'],
            description=request.form['description'],
            #comment=request.form['comment'],#ThiscausesanHTTP400whenavaluewasn'tsubmittedintheform(becauseofaKeyErrorontheMultiDict).Howstupid!
            due_date=request.form['due_date'],
            points=request.form['points'],
            is_public=request.form.get('is_public', False, bool)
        )
        assignment.save()
        if "create_and_add" in request.form:
            return render_template('assignment_create.html')
        elif "create" in request.form:
            return redirect(
                url_for('assignment_view', assignment_pk=assignment.pk)
            )
示例#6
0
def assignment_view(assignment_pk):
    assignment = Assignment.get(pk=assignment_pk)
    students = Student.all()
    grades = assignment.get_grades()
    g_by_student_pk = dict([(g.student_pk, g) for g in grades])
    for s in students:
        s.grade = g_by_student_pk.get(s.pk)
    return render_template(
        'assignment_view.html', assignment=assignment, students=students
    )
示例#7
0
def assignment_view(assignment_pk):
    assignment = Assignment.get(pk=assignment_pk)
    students = Student.all()
    grades = assignment.get_grades()
    g_by_student_pk = dict([(g.student_pk, g) for g in grades])
    for s in students:
        s.grade = g_by_student_pk.get(s.pk)
    return render_template('assignment_view.html',
                           assignment=assignment,
                           students=students)
示例#8
0
def gradebook():
    students = Student.all()
    assignments = Assignment.all()
    assignment_pks = [a.pk for a in assignments]
    for student in students:
        # Set the grades following the order specified by assignment_pks
        grades = student.get_grades()
        by_assignment_pk = dict([(g.assignment_pk, g) for g in grades])
        student.grades = [by_assignment_pk.get(pk) for pk in assignment_pks]
    return render_template("gradebook.html",
                           assignments=assignments,
                           students=students)
示例#9
0
def assignment_update(assignment_pk):
    assignment = Assignment.get(pk=assignment_pk)
    if request.method == 'GET':
        return render_template('assignment_update.html', assignment=assignment)
    elif request.method == 'POST':
        assignment.name = request.form['name']
        assignment.description = request.form['description']
        assignment.comment = request.form['comment']
        assignment.due_date = request.form['due_date']
        assignment.points = request.form['points']
        assignment.is_public = request.form.get('is_public', False, bool)
        assignment.save()
        return redirect(url_for('assignment_view', assignment_pk=assignment.pk))
示例#10
0
def assignment_grades_update(assignment_pk):
    assignment = Assignment.get(pk=assignment_pk)
    students = Student.all()
    grades = assignment.get_grades()
    # We decorate the student's with their grades.
    # Ideally, this would be done with a select_related type thing in the
    # model. At the SQL level. TODO
    g_by_student_pk = dict([(grade.student_pk, grade) for grade in grades])
    for s in students:
        s.grade = g_by_student_pk.get(s.pk)

    if request.method == 'GET':
        return render_template(
            "assignment_grades_update.html",
            assignment=assignment,
            students=students
        )

    # TODO: This POSt method seems cumbersome. Can it be fixed?
    if request.method == 'POST':
        for student in students:
            # These keys are first generated in the template as input tag
            # name attributes.
            points_key = "student_{0}_points".format(student.pk)
            comment_key = "student_{0}_comment".format(student.pk)
            try:
                points = request.form[points_key].strip()
                comment = request.form[comment_key].strip()
            except KeyError:
                # This will prevent a 400 status code from being returned if we
                # try to get data from the form about a student that didn't
                # exist when the form was created.
                continue
            try:
                points = int(points.strip())
            except ValueError:
                points = None
            comment = comment.strip()

            if student.grade is None:
                student.grade = Grade(
                    student_pk=student.pk,
                    assignment_pk=assignment.pk,
                    points=points,
                    comment=comment
                )
            else:
                student.grade.points = points
                student.grade.comment = comment
            student.grade.save()
        return redirect(url_for('assignment_view', assignment_pk=assignment_pk))
示例#11
0
def gradebook():
    students = Student.all()
    assignments = Assignment.all()
    assignment_pks = [a.pk for a in assignments]
    for student in students:
        # Set the grades following the order specified by assignment_pks
        grades = student.get_grades()
        by_assignment_pk = dict([(g.assignment_pk, g) for g in grades])
        student.grades = [by_assignment_pk.get(pk) for pk in assignment_pks]
    return render_template(
        "gradebook.html",
        assignments=assignments,
        students=students
    )
示例#12
0
def assignment_update(assignment_pk):
    assignment = Assignment.get(pk=assignment_pk)
    if request.method == 'GET':
        return render_template('assignment_update.html', assignment=assignment)
    elif request.method == 'POST':
        assignment.name = request.form['name']
        assignment.description = request.form['description']
        assignment.comment = request.form['comment']
        assignment.due_date = request.form['due_date']
        assignment.points = request.form['points']
        assignment.is_public = request.form.get('is_public', False, bool)
        assignment.save()
        return redirect(url_for('assignment_view',
                                assignment_pk=assignment.pk))
示例#13
0
  def save( self ):
    # get the assignment values from the ui
    index = self.view.get_index()
    name = self.view.get_name()
    due = float(self.view.get_due())
    max = float(self.view.get_max())
    rcv = float(self.view.get_received())
    grade = Grade(max,rcv)
    notes = self.view.get_notes()

    # store the new values in the assignment variable
    assignment = Assignment(-1,self.criteria,index,name,due,grade,notes)

    # save the changes into the db
    BGModelController.add_assignment( assignment )
示例#14
0
def assignment_grades_update(assignment_pk):
    assignment = Assignment.get(pk=assignment_pk)
    students = Student.all()
    grades = assignment.get_grades()
    # We decorate the student's with their grades.
    # Ideally, this would be done with a select_related type thing in the
    # model. At the SQL level. TODO
    g_by_student_pk = dict([(grade.student_pk, grade) for grade in grades])
    for s in students:
        s.grade = g_by_student_pk.get(s.pk)

    if request.method == 'GET':
        return render_template("assignment_grades_update.html",
                               assignment=assignment,
                               students=students)

    # TODO: This POSt method seems cumbersome. Can it be fixed?
    if request.method == 'POST':
        for student in students:
            # These keys are first generated in the template as input tag
            # name attributes.
            points_key = "student_{0}_points".format(student.pk)
            comment_key = "student_{0}_comment".format(student.pk)
            try:
                points = request.form[points_key].strip()
                comment = request.form[comment_key].strip()
            except KeyError:
                # This will prevent a 400 status code from being returned if we
                # try to get data from the form about a student that didn't
                # exist when the form was created.
                continue
            try:
                points = int(points.strip())
            except ValueError:
                points = None
            comment = comment.strip()

            if student.grade is None:
                student.grade = Grade(student_pk=student.pk,
                                      assignment_pk=assignment.pk,
                                      points=points,
                                      comment=comment)
            else:
                student.grade.points = points
                student.grade.comment = comment
            student.grade.save()
        return redirect(url_for('assignment_view',
                                assignment_pk=assignment_pk))
示例#15
0
文件: seed.py 项目: Slamb69/Quirify
def load_assignments():
    """Load assignments from assignment.txt into database."""

    print "Assignments"

    for i, row in enumerate(open("data/assignment.txt")):
        row = row.rstrip()

        cs_id, pi_id = row.split(", ")

        assignment = Assignment(cs_id=cs_id, pi_id=pi_id)

        # Add to the session.
        db.session.add(assignment)

    # Commit the session/data to the dbase.
    db.session.commit()
示例#16
0
def add_assign():
    """Add assignment to database."""

    task = request.form.get("task")
    tech = request.form.get("tech")
    equip = request.form.get("equip")
    details = request.form.get("details")

    if task and tech and equip:

        task_ob = Task.query.get(task)
        equip_ob = Equipment.query.get(equip)

        name = task_ob.name + " (" + equip_ob.name + ")"
        tbd_stat = AssignStatus.query.filter_by(name="To Be Done").first()

        new_assign = Assignment(user_id=g.user_id,
                                assignstat_id=tbd_stat.assignstat_id,
                                name=name,
                                date=datetime.now(),
                                details=details)

        add_to_database(new_assign)

        new_assigntask = AssignmentTask(task_id=task,
                                        assignment_id=new_assign.assignment_id)

        new_assigntech = AssignmentTechnician(
            tech_id=tech, assignment_id=new_assign.assignment_id)

        new_assignequip = AssignmentEquipment(
            equip_id=equip, assignment_id=new_assign.assignment_id)

        add_to_database(new_assigntask)
        add_to_database(new_assigntech)
        add_to_database(new_assignequip)

        flash("Assignment successfully created.", "success")

    else:
        flash(
            "Make sure you have enough resources before creating a new assignment.",
            "warning")

    return redirect(request.referrer)
示例#17
0
def create_assignment():
    header = request.values.get('header')
    tag = request.values.get('keywords')
    day = request.values.get('day')

    if not current_user.is_admin():
        return jsonify({
            'success':
            False,
            'errorMessage':
            'User is not authorized to create assignment.'
        })

    if not header and not tag and not day:
        return jsonify({'success': False, 'errorMessage': 'Missing Params.'})
    assign = Assignment.create(header, tag, day)

    if assign:
        return jsonify({'success': True, 'Message': 'Assignment created.'})
示例#18
0
def public_gradebook():
    students = Student.all(order='alias')
    assignments = [a for a in Assignment.all() if a.is_public]
    for student in students:
        # Set the grades following the order specified by assignment_pks
        grades = student.get_grades()

        grades_by_assignment_pk = dict([(g.assignment_pk, g) for g in grades])

        student.points_by_assignment_pk = {}
        for assignment in assignments:
            grade = grades_by_assignment_pk.get(assignment.pk)
            if grade:
                grade.assignment = assignment
            points = grade.points if grade else 0
            student.points_by_assignment_pk[assignment.pk] = points
        student.grades = grades
        student.has_comments = any((grade.comment for grade in grades))

    now = datetime.now()
    return render_template("public_gradebook.html",
                           assignments=assignments,
                           students=students,
                           now=now)
示例#19
0
def assignments():
    assignments = Assignment.all()
    return render_template('assignment_list.html', assignments=assignments)
示例#20
0
def assignments():
    assignments = Assignment.all()
    return render_template('assignment_list.html', assignments=assignments)