-
Notifications
You must be signed in to change notification settings - Fork 227
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
Autolab API V1 #850
Merged
Autolab API V1 #850
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- protect applications index page with admin privilege - only allow authorization_code grants - use refresh tokens
only drops the student. CUD never deleted
Conflicts: Gemfile.lock app/controllers/assessment/autograde.rb
devanshk
approved these changes
Apr 18, 2018
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We've done lots of testing on this branch and it all checks out. Code quality's really good too, approving this.
devanshk
added a commit
that referenced
this pull request
May 19, 2018
* Remove disabled fields in create course user datum * Add error flash if the user has javascript disabled warning them that some features may not be available. * Add snippet to application view to make sure the alert is visible across the whole site. * fix link and remove duplicate favicon file (#908) * Major improvements to forms. This should make forms look more uniform and have expected behaviors across all forms. * Finish implementation of better forms. * change from UB repo to original repo (#938) * workaround for null constraints in migrations that throw an error in SQLLite * updated schema to match new migrations * added missing dropped parameter to autogenerated course_user_datum * Add feedback to embedded quiz form. Fix margin on autocomplete forms. * Fix setup script regarding database and school templates (#928) * revert to mysql, and properly comment unused section * correct order of config initilization * swap the initialization order of grading_deadline and end_at (#893) * account for DST by offsetting difference in utc_offset (#939) * reorder commands to go to page before drawing box (#944) * create assessment config files and load them (#929) * Merging Updates to Annotations (#945) * Remove disabled fields in create course user datum (#877) * removes a check that stops annotations with the same submission and problem number from being added * removed annotation updates that expect there to be a single annotation for each submission and problem * Untangled gradebook and annotations, so gradebook isn't affected by annotation scores and scores can take any value. * Begun rollout of our Slack and updated logo * Updated main url * Fixed Add-To-Slack btn * fixed annotation deletion also deleting score bug and added a note for instructors * reverted db migration changes * Added point deductions on annotations * Problem and Score box now shows after update annotation * Problem field shows in editAnnotation * Worked on properly updating scores * removes a check that stops annotations with the same submission and problem number from being added * removed annotation updates that expect there to be a single annotation for each submission and problem * Untangled gradebook and annotations, so gradebook isn't affected by annotation scores and scores can take any value. * Begun rollout of our Slack and updated logo * Updated main url * Fixed Add-To-Slack btn * fixed annotation deletion also deleting score bug and added a note for instructors * Added point deductions on annotations * reverted db migration changes * Problem and Score box now shows after update annotation * Problem field shows in editAnnotation * Worked on properly updating scores * Changed highlight color for lines > 80ch * Code highlights now include all characters * Added feature to minimize code annotations * Changed minimize button to material-icon 'remove' in code anns. * Annotations are now minimized by default * Removed debugging print statements * Removed more print statements * Fixed no-click error, added checks for scores/gen probs * removes a check that stops annotations with the same submission and problem number from being added * removed annotation updates that expect there to be a single annotation for each submission and problem * Untangled gradebook and annotations, so gradebook isn't affected by annotation scores and scores can take any value. * Begun rollout of our Slack and updated logo * Updated main url * Fixed Add-To-Slack btn * fixed annotation deletion also deleting score bug and added a note for instructors * Added point deductions on annotations * reverted db migration changes * Problem and Score box now shows after update annotation * Problem field shows in editAnnotation * Worked on properly updating scores * Untangled gradebook and annotations, so gradebook isn't affected by annotation scores and scores can take any value. * Begun rollout of our Slack and updated logo * Updated main url * Fixed Add-To-Slack btn * fixed annotation deletion also deleting score bug and added a note for instructors * reverted db migration changes * Added point deductions on annotations * Worked on properly updating scores * Changed highlight color for lines > 80ch * Code highlights now include all characters * Added feature to minimize code annotations * Changed minimize button to material-icon 'remove' in code anns. * Annotations are now minimized by default * Removed debugging print statements * Removed more print statements * Fixed no-click error, added checks for scores/gen probs * Removed minimize button in PDF anns * Replaced submit button that was deleted during rebase * shows colspec error messages if ill-formed (#943) * decoupled annotations and gradebook again (#947) * decoupled annotations and gradebook again * brought back head :no_content * move annotation box in front of pdf pages * Devansh v2.1.0 patches (#950) * bolded notice that annotations and gradebook are decoupled * added annotation collapse and expand buttons * Log and notify when handin exceptions occur (#878) Integrating a few of cg2v's improvements: When exceptions occur processing handins or autograde output, send the exception to ExceptionNotifier and the course log. Otherwise, the only notification in some cases goes to the student, who gets a bland "submission failed" flash that they probably ignore. * set_course should return after rendering 404 (#838) Integrating one of cg2v's improvements: After set_course renders the 404 page inline, it needs to immediately return since any future exception will try to redirect or render triggering a double render error * Added automatic setting of the timezone based on the browsers timezone (#954) * add error checking when saving attachment * add errmsg for visiting unreleased assessment * add logging ahd handling for attachments controller * added error handling for groups controller methods * Fixes for aud controller. * Proper success flash styling * remove unneeded transition on form labels * add missing table header on schedulers page * add error & success when destroying a scheduler. * Add autograding error handling. Also, make the gradesheet redirect properly * Extensions needed success flashes * added error handling all across assessments controller * fixed rescues * added error handling in scoreboards controller * add error message when set_score fails * streamline attribute updating and error checking for scores * add success flashes in attachments also use COURSE_LOGGER instead of ASSESSMENT_LOGGER * add error handling and messages in cud controller * fix redirections for sudo * fix redirection in authorize_user_for_course * Autolab API V1 (#850) * add doorkeeper to gemfile * install and configure doorkeeper * update database for doorkeeper * add v1 base api controller * add first version of courses api controller * Finalize doorkeeper configuration: - protect applications index page with admin privilege - only allow authorization_code grants - use refresh tokens * implement api error handling * extend course index method with optional state param * limit course attributes in response * implement cud and course check for api routes * add user auth_level to response * implement assessment index endpoint * implement user info endpoint * add has_autograder field to assessment response * Implement submissions index endpoint * implement assessment problems endpoint * fix type issue * add custom 404 handler that returns json * implement submission feedback endpoint * prepare submission endpoint * refactor handin helpers into separate helper * refactor autograde helpers into separate helper * switch to using more expressive error_codes/hashes * fix return values * set response to json always * remove symbolize_keys hack * initial testing framework * add course index test * add user info endpoint test * add assessments test * add failure cases to course test * rename helpers to core * move batch submission logic into autograde core * add explanation for sendJob param * minor syntax error fix * make explicit autogradeSubmissions may raise errors * handle errors from autogradeSubmissions * give autogradeSubmissions a correct name * update comment for handin handler function * rename wrapper functions and add docs * implement submit endpoint to allow submission over api * implement assessment writeup endpoint * use respond_with_hash in submit endpoint * implement assessment handout endpoint * configure scopes with doorkeeper * set scope requirements for each action * add rack-attack to gemfile * initial rack-attack config * throttle using user id instead of ip * import doorkeeper views * modify authorized applications page * modify authorization page * update rspec tests to include scopes * add nonexistent course test * make tests DRY with shared_context * add assessment#submit endpoint tests * handle cases where file param missing from submission * More descriptive error messages for unexpected errors * add roundtrip test for submission over api * install webmock * implement device flow routes * implement rate limiting for device_flow routes * create db tables * add manage applications link to manage_autolab page * remove non-null requirements on user id and resolved_at columns * create activerecord model for device_flow_requests * implement device_flow_init * implement device_flow_authorize * add field for access_code in device_flow table * fix private method calling issue * device_flow issues access_code instead of token * implement device_flow activation pages and endpoints * implement tests for device_flow api endpoints * add column to record submitter application in submissions table * update roundtrip test to test for submitted_by_app_id attribute * store submitter app id during submission * update submissions api controller to filter by submitter app_id * implement mock for tango open * rack-attack handle access_token not found * fix activation page form bug * add instructor and admin scopes * add api-related links to user account page * implement course#create route * implement tests for course#create route * fix getting message from error * set assessment dates to make sure they can be submitted to in test cases * create logger * finish tango_mock * use tango_mock in roundtrip test * use tango_mock in assessment controller test * extract vars used for handin-related tests into separate context * run api tests in travis * remove request_stubs after each test case * allow all unstubbed network requests * only count released asmts in test * streamline responses on success * add verification uri to device_flow_init response * do not return handout and writeup with each assessment * do not return visible_at with each assessment * return error json for rate-limited responses * create assessment#show path, and refactor assessment#index * don't return error when handout or writeup non-existent * add version number to footer * streamline privilege checking combine user privilege checking and client scope checking into one method * add course_user_data index route * add tests for course_user_data index route * implement cud create route * add tests for cud create route * update cud test cases to use correct http method * implement cud update route * add tests for cud update route * implement cud destroy route only drops the student. CUD never deleted * add tests for cud destroy route * implement cud show route * add tests for cud show route * streamline data setting in cud routes * add grade_policy to cud response * modify error description for invalid scope * allow periods in cud email param * turn off browser autocomplete on the activation form * fix activation page not returning after redirect * update new authorization page icon * set loggers in api_base * handle disabled course * clarify autograding failure message * allow specifying start and end dates for course create * better error messages for course create * make course create route consistent with CRUD * fix rate limit error response * Statistics fix for excluding excused students. (#981) * Statistics hotfix for excluding students. * removed byebug_history and added to gitignoe * remove facebook scripts loading on every page of autolab. (#973) * fix regrade error handling (#986) API v1 hotfix (fix regrade functions) * TangoClient retry on certain network errors (#985) * retry http ops in tango_client * sleep between retries * Add a way to visually run scheduler. This is nice to see if it makes errors and such. Fixes #956 (#982) * Annotation Viewing Fixes (#960) * only shows annotation when the grading deadline has passed or user is an instructor * comments are important * exact job email matching (#958) * fix type on gradebook. This puts the proper has or have. Fixes #962. (#964) * Added error handling to multiple controllers (#966) * Added error-checking to annotations_controller * Added error-handling to problems_controller * Added error checking to courses_controller.rb * Added error handling to submissions_controller * Removed unnecessary error handling, fixed typos * Removed unnecessary error handling in problems_controller * Removed trivial error handling in courses_controller * Removed trivial error checking in annotations_controller * removed a few extraneous error handlers * updated version number to 2.2.0 * nil + error hotfix from assessments_controller error handling * null constraint workaround for sql * cleaned up an extraneous error reporter
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Introduces API endpoints to Autolab.
Exposed Endpoints (/api/v1/...)
GET user
GET courses
(optional param: state = current/completed/upcoming/disabled)
GET courses/:course_name/assessments
GET courses/:course_name/assessments/:assessment_name/handout
GET courses/:course_name/assessments/:assessment_name/writeup
POST courses/:course_name/assessments/submit
GET courses/:course_name/assessments/:assessment_name/submissions
GET courses/:course_name/assessments/:assessment_name/submissions/:submission_version/feedback
(required param: problem = <valid problem name>)
User Authentication: OAuth2
Implements the Authorization Code Grant workflow of OAuth2 using the Doorkeeper Gem. Basic steps:
Scopes (permissions) defined:
Rate Limiting
Implements user-based throttling using the Rack-Attack Gem.
Current settings:
TODO
Stylize application granting screen (currently it's just text and two buttons).Write a round-trip test of submitting a file and getting a grade.Add logging.