def get(self, responseID): grader = grading.Grader() grader.grade_automatic_questions(responseID) grader.grade_supplementary_material(responseID) task_response = models.TaskResponse.query.filter_by( id=responseID).first() course = task_response.task.course courses_where_ta = current_user.get_courses_where_ta() if task_response.student_id != current_user.id and \ course not in current_user.get_courses_where_teacher_or_ta(): return "Permission Denied", 401 if task_response.student_id == current_user.id and \ task_response.task.status != "grades published": return "Task Not Yet Released" formatted_time = task_response.datetime.strftime("%a %b %d %H:%M:%S") response = json.loads(task_response.graded_response) supplementary = json.loads(task_response.graded_supplementary) supplementary_order = json.loads(task_response.supplementary_order) return render_template("grading/response.html", response=response, student=task_response.user, task=task_response.task, task_response=task_response, time=formatted_time, supplementary=supplementary, permissions=current_user.permissions, supplementaryOrder=supplementary_order)
def get(self, courseID): course = models.Course.query.filter_by(id=int(courseID) - 1000).first() if course not in current_user.get_courses_where_teacher_or_ta(): return "You are not the instructor for this course", 401 data = [] for u in course.users: tasks = [] d = {'user': u} for task in course.tasks: print task response = models.TaskResponse.query.filter(models.TaskResponse.task_id == task.id, models.TaskResponse.student_id == u.id).order_by( models.TaskResponse.datetime.desc()).first() r = { 'task': task, 'response': response } tasks.append(r) d['tasks'] = tasks data.append(d) course_tasks = { 'course_tasks': course.tasks } return render_template("courseGrades.html", data=data, course_tasks=course_tasks)
def get(self): if current_user.permissions == 10: data = [] for c in current_user.get_courses_enrolled(): tasks = [] d = { 'course': c, } for task in c.tasks: response = models.TaskResponse.query.filter( models.TaskResponse.student_id==current_user.id, models.TaskResponse.task_id==task.id).order_by( models.TaskResponse.datetime.desc()).first() t = { 'task': task, 'response': response } tasks.append(t) d['tasks'] = tasks data.append(d) return render_template('studentGradebook.html', courses=current_user.get_courses_enrolled(), tasks=data) elif current_user.permissions >= 20: courses = current_user.get_courses_where_teacher_or_ta() return render_template('authorGradebook.html', courses=courses)
def get(self): teaching = current_user.get_courses_where_teacher_or_ta() enrolled = current_user.get_courses_enrolled() return render_template('home.html', courses_enrolled=enrolled, courses_teaching=teaching)
def get(self): teaching = current_user.get_courses_where_teacher_or_ta() enrolled = current_user.get_courses_enrolled() return render_template('home.html', courses_enrolled=enrolled, courses_teaching=teaching)
def get(self, response_id): response = models.TaskResponse.query.filter_by(id=response_id).first() xml_data = json.loads(response.task.xml_data) course = response.task.course if course not in current_user.get_courses_where_teacher_or_ta(): return "Permission Denied", 401 f = tempfile.TemporaryFile() f.write('<?xml version="1.0" encoding="utf-8"?>') f.write('\n<decision_matrix name="ResponseMatrix">') f.write('\n\t<labels>') f.write('\n\t\t<alternatives>') choiceRow = 0 for element in xml_data: if element['row'] == 0 and element['col'] > 0: f.write('\n\t\t\t<alternative>%s</alternative>' % element['text']) f.write('\n\t\t</alternatives>') f.write('\n\t\t<dimensions>') for element in xml_data: if element['col'] == 0 and element['row'] > 0: choiceRow += 1 for element in xml_data: if element['col'] == 0 and element['row'] > 0 and element[ 'row'] < choiceRow: f.write('\n\t\t\t<dimension>%s</dimension>' % element['text']) f.write('\n\t\t</dimensions>') f.write('\n\t</labels>') f.write('\n\t<interactions>') for interaction in json.loads(response.xml_data): for element in xml_data: if element.get('id') == interaction['id']: (alternative, dimension) = self.get_alternative_and_dimension( element, xml_data) if element['row'] == choiceRow: start = float(interaction.get( 'start', 0)) if interaction.get('start') else 0 end = float(interaction.get( 'end', 0)) if interaction.get('end') else 0 message = '\n\t\t<choice alternative="%s" timestamp="%.3f" endtime="%.3f" />' % ( alternative, start / 1000, end / 1000) else: message = '\n\t\t<info dimension="%s" alternative="%s" timestamp="%.3f" endtime="%.3f" />' % ( dimension, alternative, float(interaction['start']) / 1000, float(interaction['end']) / 1000) f.write(message) break f.write('\n\t</interactions>') f.write('\n</decision_matrix>') f.seek(0, os.SEEK_END) size = f.tell() f.seek(0) fn = 'response_%s.xml' % response_id response = flask.send_file(f, as_attachment=True, attachment_filename=fn, add_etags=False) return response
def get(self, courseID): course = models.Course.query.filter_by(id=int(courseID) - 1000).first() author = models.User.query.filter_by(id=course.teacher_id).first() if course in current_user.get_courses_where_teacher_or_ta() or \ course in current_user.get_courses_enrolled() or current_user.permissions >= 100: return render_template("course.html", course=course, author=author) else: return "You do not have access to view this course", 401
def get(self): if current_user.is_authenticated(): courses = current_user.get_courses_enrolled() courses += current_user.get_courses_where_teacher_or_ta() courses = [c.serialize for c in courses] return flask.json.dumps(courses) else: return flask.json.dumps([])
def get(self): if current_user.is_authenticated(): courses = current_user.get_courses_enrolled() courses += current_user.get_courses_where_teacher_or_ta() courses = [c.serialize for c in courses] return flask.json.dumps(courses) else: return flask.json.dumps([])
def get(self, courseID): course = models.Course.query.filter_by(id=int(courseID) - 1000).first() author = models.User.query.filter_by(id=course.teacher_id).first() if course in current_user.get_courses_where_teacher_or_ta() or \ course in current_user.get_courses_enrolled() or current_user.permissions >= 100: return render_template("course.html", course=course, author=author) else: return "You do not have access to view this course", 401
def post(self): data = flask.request.get_json() response_id = data['response_id'].split('?')[0] response = models.TaskResponse.query.filter_by(id=response_id).first() course = response.task.course if course not in current_user.get_courses_where_teacher_or_ta(): return "Permission Denied", 401 grader = grading.Grader() correctness = grader.grade_manual_question(response_id, data['question_id'], data['correct']) return json.dumps(correctness)
def post(self): data = flask.request.get_json() response_id = data['response_id'].split('?')[0] response = models.TaskResponse.query.filter_by(id=response_id).first() course = response.task.course if course not in current_user.get_courses_where_teacher_or_ta(): return "Permission Denied", 401 grader = grading.Grader() correctness = grader.grade_manual_question(response_id, data['question_id'], data['correct']) return json.dumps(correctness)
def post(self): data = flask.request.get_json() response_id = data['response_id'].split('?')[0] response = models.TaskResponse.query.filter_by(id=response_id).first() course = response.task.course if course not in current_user.get_courses_where_teacher_or_ta(): return "Permission Denied", 401 grader = grading.Grader() grader.grade_manual_question(response_id, data['question_id'], data['critical'], category="critical") models.db.session.commit() return ""
def post(self): data = flask.request.get_json() response_id = data['response_id'].split('?')[0] response = models.TaskResponse.query.filter_by(id=response_id).first() course = response.task.course if course not in current_user.get_courses_where_teacher_or_ta(): return "Permission Denied", 401 grader = grading.Grader() grader.grade_manual_question(response_id, data['question_id'], data['critical'], category="critical") models.db.session.commit() return ""
def get(self, response_id): response = models.TaskResponse.query.filter_by(id=response_id).first() xml_data = json.loads(response.task.xml_data) course = response.task.course if course not in current_user.get_courses_where_teacher_or_ta(): return "Permission Denied", 401 f = tempfile.TemporaryFile() f.write('<?xml version="1.0" encoding="utf-8"?>') f.write('\n<decision_matrix name="ResponseMatrix">') f.write('\n\t<labels>') f.write('\n\t\t<alternatives>') choiceRow = 0 for element in xml_data: if element['row'] == 0 and element['col'] > 0: f.write('\n\t\t\t<alternative>%s</alternative>' % element['text']) f.write('\n\t\t</alternatives>') f.write('\n\t\t<dimensions>') for element in xml_data: if element['col'] == 0 and element['row'] > 0: choiceRow += 1 for element in xml_data: if element['col'] == 0 and element['row'] > 0 and element['row'] < choiceRow: f.write('\n\t\t\t<dimension>%s</dimension>' % element['text']) f.write('\n\t\t</dimensions>') f.write('\n\t</labels>') f.write('\n\t<interactions>') for interaction in json.loads(response.xml_data): for element in xml_data: if element.get('id') == interaction['id']: (alternative, dimension) = self.get_alternative_and_dimension(element, xml_data) if element['row'] == choiceRow: start = float(interaction.get('start', 0)) if interaction.get('start') else 0 end = float(interaction.get('end', 0)) if interaction.get('end') else 0 message = '\n\t\t<choice alternative="%s" timestamp="%.3f" endtime="%.3f" />' % (alternative, start/1000, end/1000) else: message = '\n\t\t<info dimension="%s" alternative="%s" timestamp="%.3f" endtime="%.3f" />' % (dimension, alternative, float(interaction['start'])/1000, float(interaction['end'])/1000) f.write(message) break f.write('\n\t</interactions>') f.write('\n</decision_matrix>') f.seek(0, os.SEEK_END) size = f.tell() f.seek(0) fn = 'response_%s.xml' % response_id response = flask.send_file(f, as_attachment=True, attachment_filename=fn, add_etags=False) return response
def get(self, courseID): course = models.Course.query.filter_by(id=int(courseID) - 1000).first() if course not in current_user.get_courses_where_teacher_or_ta(): return "You are not the instructor for this course", 401 data = [] for u in course.users: tasks = [] d = {'user': u} for task in course.tasks: print task response = models.TaskResponse.query.filter( models.TaskResponse.task_id == task.id, models.TaskResponse.student_id == u.id).order_by( models.TaskResponse.datetime.desc()).first() r = {'task': task, 'response': response} tasks.append(r) d['tasks'] = tasks data.append(d) course_tasks = {'course_tasks': course.tasks} return render_template("courseGrades.html", data=data, course_tasks=course_tasks)
def get(self): if current_user.permissions == 10: data = [] for c in current_user.get_courses_enrolled(): tasks = [] d = { 'course': c, } for task in c.tasks: response = models.TaskResponse.query.filter( models.TaskResponse.student_id == current_user.id, models.TaskResponse.task_id == task.id).order_by( models.TaskResponse.datetime.desc()).first() t = {'task': task, 'response': response} tasks.append(t) d['tasks'] = tasks data.append(d) return render_template('studentGradebook.html', courses=current_user.get_courses_enrolled(), tasks=data) elif current_user.permissions >= 20: courses = current_user.get_courses_where_teacher_or_ta() return render_template('authorGradebook.html', courses=courses)
def get(self, responseID): grader = grading.Grader() grader.grade_automatic_questions(responseID) grader.grade_supplementary_material(responseID) task_response = models.TaskResponse.query.filter_by(id=responseID).first() course = task_response.task.course courses_where_ta = current_user.get_courses_where_ta() if task_response.student_id != current_user.id and \ course not in current_user.get_courses_where_teacher_or_ta(): return "Permission Denied", 401 if task_response.student_id == current_user.id and \ task_response.task.status != "grades published": return "Task Not Yet Released" formatted_time = task_response.datetime.strftime("%a %b %d %H:%M:%S") response = json.loads(task_response.graded_response) supplementary = json.loads(task_response.graded_supplementary) supplementary_order = json.loads(task_response.supplementary_order) return render_template("grading/response.html", response=response, student=task_response.user, task=task_response.task, task_response=task_response, time=formatted_time, supplementary=supplementary, permissions=current_user.permissions, supplementaryOrder=supplementary_order)
def get(self): courses = current_user.get_courses_where_teacher_or_ta() courses = [c.serialize for c in courses] return flask.json.dumps(courses)
def get(self): courses = current_user.get_courses_where_teacher_or_ta() courses = [c.serialize for c in courses] return flask.json.dumps(courses)