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'))
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 )
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))
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) )
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 )
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)
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)
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))
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))
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 )
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 )
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))
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()
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)
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.'})
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)
def assignments(): assignments = Assignment.all() return render_template('assignment_list.html', assignments=assignments)