def get_assignment(lti=lti): assignment_id = int(request.values.get('assignment_id')) assignment = Assignment.by_id(assignment_id) is_embedded = ('embed' == request.values.get('menu', "select")) # Verify exists check_resource_exists(assignment, "Assignment", assignment_id) # Perform action select_url = get_select_menu_link(assignment.id, assignment.title(), is_embedded, False) return jsonify(success=True, redirect=url_for('assignments.load', assignment_id=assignment.id), id=assignment.id, name=assignment.name, type=assignment.type, instructions=strip_tags(assignment.instructions)[:255], title=assignment.title(), view=url_for('assignments.load', assignment_id=assignment.id, embed=is_embedded), select=select_url, edit=url_for('assignments.load', assignment_id=assignment.id, course_id=assignment.course_id), date_modified=assignment.pretty_date_modified())
def get_assignment(lti=lti): ''' Returns metadata about the assignment. ''' # TODO: Security hole, evil instructors could remove assignments outside of their course assignment = Assignment.by_id(assignment_id) return jsonify(success=True, url=assignment.url, name=assignment.name, body= strip_tags(assignment.body)[:255], on_run=assignment.on_run, title= assignment.title(), answer=assignment.answer, type=assignment.type, visibility=assignment.visibility, disabled=assignment.disabled, mode=assignment.mode, version=assignment.version, id=assignment.id, course_id=assignment.course_id, date_modified = assignment.date_modified.strftime(" %I:%M%p on %a %d, %b %Y").replace(" 0", " "))
def new_assignment(course_id, lti=lti): name = request.values.get('name', None) or None level = request.values.get('level', None) or None menu = request.values.get('menu', "select") #TODO: change "normal" type to "blockpy" type = request.values.get('type', "normal") assignment = Assignment.new(owner_id=g.user.id, course_id=course_id, type=type, name=name, level=level) launch_type = 'lti_launch_url' if menu != 'embed' else 'iframe' endpoint = 'assignments.load' return jsonify(success=True, redirect=url_for('assignments.load', assignment_id=assignment.id), id= assignment.id, name= assignment.name, type= type, body= strip_tags(assignment.body)[:255], title= assignment.title(), view = url_for('assignments.load', assignment_id=assignment.id, embed= menu == 'embed'), select = url_quote(url_for(endpoint, assignment_id=assignment.id, _external=True, embed= menu == 'embed'))+"&return_type="+launch_type+"&title="+url_quote(assignment.title())+"&text=BlockPy%20Exercise&width=100%25&height=600", edit= url_for('assignments.load', assignment_id=assignment.id, course_id=assignment.course_id), date_modified = assignment.date_modified.strftime(" %I:%M%p on %a %d, %b %Y").replace(" 0", " "))
def new_assignment(lti=lti): # Get arguments course_id = int(request.values.get('course_id')) name = request.values.get('name', None) or None url = request.values.get('url', None) or None level = request.values.get('level', None) or None is_embedded = ('embed' == request.values.get('menu', "select")) assignment_type = request.values.get('type', "blockpy") # Verify permissions require_course_instructor(g.user, course_id) # Perform action assignment = Assignment.new(owner_id=g.user.id, course_id=course_id, url=url, type=assignment_type, name=name, level=level) select_url = get_select_menu_link(assignment.id, assignment.title(), is_embedded, False) return jsonify(success=True, redirect=url_for('assignments.load', assignment_id=assignment.id), id=assignment.id, url=url, name=assignment.name, type=assignment_type, instructions=strip_tags(assignment.instructions)[:255], title=assignment.title(), view=url_for('assignments.load', assignment_id=assignment.id, embed=is_embedded), select=select_url, edit=url_for('assignments.load', assignment_id=assignment.id, course_id=assignment.course_id), date_modified=assignment.pretty_date_modified())