Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Slip Calculator Jobs for Assignment and Course #1148

Open
wants to merge 11 commits into
base: master
Choose a base branch
from
Open
Prev Previous commit
Next Next commit
add link to calculate slips
  • Loading branch information
epai committed May 2, 2017
commit 9f0fe7582e14b60ce3832e19cdc23a477a90afa0
39 changes: 39 additions & 0 deletions server/controllers/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -974,6 +974,45 @@ def checkpoint_grading(cid, aid):
form=form,
)

@admin.route("/course/<int:cid>/assignments/<int:aid>/slip",
methods=["GET", "POST"])
@is_staff(course_arg='cid')
def slip_calculator(cid, aid):
courses, current_course = get_courses(cid)
assign = Assignment.query.filter_by(id=aid, course_id=cid).one_or_none()
# if not assign or not Assignment.can(assign, current_user, 'grade'):
# flash('Cannot access assignment', 'error')
# return abort(404)

form = forms.SlipCalculatorForm()
# if form.validate_on_submit():
# job = jobs.enqueue_job(
# checkpoint.assign_scores,
# description='Checkpoint Scoring for {}'.format(assign.display_name),
# timeout=600,
# course_id=cid,
# user_id=current_user.id,
# assign_id=assign.id,
# score=form.score.data,
# kind=form.kind.data,
# message=form.message.data,
# deadline=form.deadline.data,
# include_backups=form.include_backups.data)
# return redirect(url_for('.course_job', cid=cid, job_id=job.id))
# else:
# if not form.kind.data:
# form.kind.default = 'checkpoint 1'
# if not form.deadline.data:
# form.deadline.default = utils.local_time_obj(assign.due_date, assign.course)
# form.process()

return render_template(
'staff/jobs/slip_calculator.html',
courses=courses,
current_course=current_course,
assignment=assign,
form=form,
)

##############
# Enrollment #
Expand Down
6 changes: 1 addition & 5 deletions server/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -563,11 +563,7 @@ class SlipCalculatorForm(BaseForm):
timescale = SelectField('Time Scale', default="Days",
choices=[(c, c.title()) for c in TIMESCALES],
validators=[validators.required()],
description=["Select time scale for slip calculation (slip days, hours, minutes)"])
grace_amount = DecimalField('Grace Amount', default=0)
grace_scale = SelectField('Grace Scale', default="Minutes",
choices=[(c, c.title()) for c in TIMESCALES],
description=["Select time scale for grace amount (grace days, hours, minutes"])
description="Time scale for slip calculation.")

##########
# Canvas #
Expand Down
3 changes: 3 additions & 0 deletions server/templates/staff/course/assignment/assignment.html
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,9 @@ <h3 class="box-title">Actions</h3>
<li> <a href="{{ url_for('.create_extension', cid=current_course.id, aid=assignment.id) }}" type="button">
<i class="fa fa-calendar"></i> Grant Extension
</a></li>
<li> <a href="{{ url_for('.slip_calculator', cid=current_course.id, aid=assignment.id) }}" type="button">
<i class="fa fa-calculator"></i> Calculate Slips
</a></li>
<li> <a href="http://autograder.cs61a.org" target="_blank" type="button">
<i class="fa fa-gear"></i> Configure Autograder
</a></li>
Expand Down
42 changes: 42 additions & 0 deletions server/templates/staff/jobs/slip_calculator.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{% extends "staff/base.html" %}
{% import "staff/_formhelpers.html" as forms %}

{% block title %} Calculate Slips for {{ assignment.display_name }} {% endblock %}

{% block main %}
<section class="content-header">
<h1>
Calculate Slips for {{ assignment.display_name }}
<small>{{ current_course.offering }}</small>
</h1>
<ol class="breadcrumb">
<li><a href="{{ url_for(".course", cid=current_course.id) }}">
<i class="fa fa-university"></i> {{ current_course.offering }}
</a></li>
<li><a href="{{ url_for('.course_assignments', cid=current_course.id) }}">
<i class="fa fa-list"></i> Assignments</a>
</li>
<li> <a href="{{ url_for('.assignment', cid=current_course.id, aid=assignment.id) }}"><i class="fa fa-book"></i> {{ assignment.display_name }} </a></li>
<li><a href="{{ url_for(".course_jobs", cid=current_course.id) }}">
<i class="fa fa-list"></i>Jobs
</a></li>
<li class="active"><a href="#">
<i class="fa fa-inbox"></i>Calculate Slips</a>
</li>
</ol>
</section>
<section class="content">
{% include 'alerts.html' %}
<div class="row">
<div class="col-md-12">
<div class="box">
<div class="box-body">
{% call forms.render_form(form, action_text='Calculate Slips') %}
{{ forms.render_field(form.timescale) }}
{% endcall %}
</div>
</div>
</div>
</div>
</section>
{% endblock %}