Commit Graph

5264 Commits

Author SHA1 Message Date
James Williams f0f5932e0e add counts to sis batch with small refactored imports
test plan:
* turn on the sis import refactor feature flag
* importing a small sis import (default 50 rows or less)
 should show the number of successfully imported rows
 for each type on the sis import page

closes #CORE-1634

Change-Id: Ifdbe98c8bc9252552e7280d3df0764503a388396
Reviewed-on: https://gerrit.instructure.com/157791
Tested-by: Jenkins
Reviewed-by: Rob Orton <rob@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
2018-07-19 13:48:56 +00:00
Gary Mei e1a58a0239 fix gradebook import of moderated assignments
Uploading a csv with moderated assignments would fail because
the attributes that would be checked weren't previously loaded in.

fixes GRADE-1374

Test Plan
- Create a moderated assignment.
- Export the gradebook.
- Modify the grade for the moderated assignment.
- If you are the final grader, uploading should work.
- If you are not the final grader, uploading should have no effect.

Change-Id: If0cef730e3b22cd9b049a9c44133cb7a389a6e85
Reviewed-on: https://gerrit.instructure.com/157526
Tested-by: Jenkins
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Reviewed-by: Adrian Packel <apackel@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: Sidharth Oberoi <soberoi@instructure.com>
2018-07-17 15:54:06 +00:00
Gary Mei 24dbd0ac46 make select_final_grade work for existing accounts
Existing accounts default :moderate_grades permissions to false for
TAs, but the new :select_final_grade replacement permission defaults
to true. In the case that no role overrides exist for accounts, we
add a role override to make :select_final_grade false as well. If a
role override exists (for any role), we mirror the existing one.

closes GRADE-1228

Test Plan
 - Don't run migrations yet.
 - Open the Permissions page as an admin.
 - Create a role that descends from Ta role.

 - In a rails console, run RoleOverride.destroy_all
 - Run migrations.
 - Verify that 'Select final grade for moderation' is turned off for
   TAs and any custom roles descended from TAs.
 - Verify that roles that had 'Moderate grades' enabled (such as
   Teacher) continue to have 'Select final grade...' enabled as well.

 - Roll back migrations with `rails db:rollback STEP=1` *STEP might
   be greater than 1. In my case, there were CSS related migrations
   that needed to be rolled back first.
 - In a rails console, run RoleOverride.destroy_all

 - Refresh the Permissions page.
 - Turn on 'Moderate grades' for one of the Ta roles.
 - Run migrations.
 - Verify that 'Select final grade...' is turned on for the role that
   just had 'Moderate grades' turned on, but the other Ta role that
   didn't have 'Moderate grades' turned on has 'Select final grade..'
   turned off.

 - tl;dr 'Select final grade...' should mirror 'Moderate grades'.

Change-Id: Ie575da205bdbe3f5d9110b3b4e99c7f88644c86a
Reviewed-on: https://gerrit.instructure.com/156131
Reviewed-by: Adrian Packel <apackel@instructure.com>
Tested-by: Jenkins
Reviewed-by: Spencer Olson <solson@instructure.com>
QA-Review: Spencer Olson <solson@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
2018-07-13 16:37:04 +00:00
Keith Garner 350bcb6632 add anonymous instructor annotations support to submission api
fixes GRADE-1368

test plan:
 - Have a course with a student, teacher, and an assignment configured
   for anonymous instructor annotations
 - From a mobile app leave annotations as the teacher
 - View the submission as a student, confirm that annotations are
   anonymized

Change-Id: Iee6e21136f6f7456d088aa9bdc118a94f8be2f38
Reviewed-on: https://gerrit.instructure.com/157157
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Tested-by: Jenkins
Reviewed-by: Spencer Olson <solson@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
Reviewed-by: Adrian Packel <apackel@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
QA-Review: Keith T. Garner <kgarner@instructure.com>
2018-07-12 23:23:34 +00:00
Han Ngo 27d24538d6 Run Key Rotation Script as a Periodic Job in Canvas
Closes PLAT-3508 & PLAT-3509

Test Plan:
- Verify the key rotate correctly (set current to past, future
to current, and the new key to future) in both cases: when there
is no existing key AND when there is key already in Consul
- Verify the script will be running every month
- Verify the keys got rotated using Imperium gem version '0.4.0'

Change-Id: I630f230b3cd1c515ebb266b532901b4260622173
Reviewed-on: https://gerrit.instructure.com/154529
Reviewed-by: Stewie aka Nicholas Stewart <nstewart@instructure.com>
QA-Review: Nathan Mills <nathanm@instructure.com>
Product-Review: Nathan Mills <nathanm@instructure.com>
Tested-by: Jenkins
2018-07-12 19:57:40 +00:00
Ed Schiebel a8a5490534 Have planner deal with media comments.
When we detect a media comment, replace the default "This is a media
comment." with "You have media feedback."

closes: ADMIN-1090

test plan:
  - course with assignment, student submits answer, teacher grades and
    leaves a comment
  > expect student's planner item to show the first line of the comment
  - teacher adds a media comment
  > expect student's planner item to say "You have media feedback."
    you may have to setup nororious. See
    https://instructure.atlassian.net/wiki/spaces/ENG/pages/45645850/Setting+Up+Notorious
    for instructions.  You may also have to fiddle with browser settings
    to get permission to use the mic and/or camera.

Change-Id: Idb688be7e50e66cec0ac52ef6338a3f4cdfe01f9
Reviewed-on: https://gerrit.instructure.com/155791
Tested-by: Jenkins
Reviewed-by: Jon Willesen <jonw+gerrit@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Christi Wruck
2018-07-12 18:37:07 +00:00
Xander Moffatt 7a4b731cdb reference instfs_uuid from instfs direct upload
refs RECNVS-521

* previously instfs file upload returned only the
instfs uuid as `uuid`
* instfs file upload now returns canvas capture
data, which includes the canvas uuid
* instfs uuid has been renamed to `instfs_uuid`

test plan:
* specs

Change-Id: I1f77f3dd1952fbd275ae67c399ff04ef6533785b
Reviewed-on: https://gerrit.instructure.com/157118
Reviewed-by: Michael Jasper <mjasper@instructure.com>
Tested-by: Jenkins
Product-Review: Xander Moffatt <xmoffatt@instructure.com>
QA-Review: Xander Moffatt <xmoffatt@instructure.com>
2018-07-12 16:13:06 +00:00
Matt Sessions f2b9488d29 Fix alerts to only generate when observer is enrolled
Refs MBL-10851

Test Plan:
 - Create a student and 2 courses and enroll the student in both
 - Create a user and make them an observer in only one course for
   the student
 - Setup thresholds for assignment_grade, course_grade, and
   assignment_missing
 - Go to the course the observer is not in and grade the student
   above/below the assignment_grade threshold
 - This should also trigger the course_grade threshold
 - Go to the course and create an assignment that is due in a minute
   or two
 - Wait at least 5 minutes
 - No assignment_missing alert should be created

Change-Id: If05db61a198ada8c2cfce9049d595fb633483882
Reviewed-on: https://gerrit.instructure.com/156852
Tested-by: Jenkins
QA-Review: Kausty Saxena <ksaxena@instructure.com>
Reviewed-by: Layne Moseley <lmoseley@instructure.com>
Product-Review: Matthew Sessions <msessions@instructure.com>
2018-07-12 15:38:29 +00:00
Han Yan 274ac9f2a0 allow non-siteadmins to fetch audit_info for a content_migration
refs QUIZ-4921

test plan:
- in local Canvas, register a course, and import a CC package
- as siteadmin, go to /api/v1/course/<course_id>/content_migrations
  it should list the content_migrations for the course
- pick id for a content_migration and fetch
  /api/v1/course/<course_id>/content_migrations/<content_migration_id>
  you should be able to see `audit_info` section
- add a teacher to the course
- login as the teacher, and fetch
  /api/v1/course/<course_id>/content_migrations/<content_migration_id>
  the teacher should NOT see `audit_info` section
- as the same teacher, fetch
  /api/v1/course/<course_id>/content_migrations/<content_migration_id>?include[]=audit_info
  the teacher can see `audit_info` section

Change-Id: I1086eb92986bb9788d643123014c73556c1540d4
Reviewed-on: https://gerrit.instructure.com/157024
Tested-by: Jenkins
Reviewed-by: Dan Minkevitch <dan@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Product-Review: John Corrigan <jcorrigan@instructure.com>
2018-07-11 22:44:34 +00:00
Michael Guymon c7a0ba68d6 Add Delayed Job homework submission for url uploads.
Add a Delayed Job Worker that reuses the
Services::SubmitHomeworkService to submit the url uploads after
copying the url from the source. Sends an email for success or failure
of the job. This will be used when InstFS is not enabled.

Based on work from GOOF-435 for the InstFS to support reliable
url uploads.

fixes: GOOF-461, GOOF-462

Test Plan:

* Disable InstFS
* Submit an assignment from Google/Office
* Get an alert with info about submission
* Job enqueued to process the upload.
* When job finishes, the assignment will be submitted.

Change-Id: I63d0f5f9b5dd01cc53bcfffe6f8d952cd6e2c078
Reviewed-on: https://gerrit.instructure.com/155104
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Josh Orr <jgorr@instructure.com>
Tested-by: Jenkins
QA-Review: Tyler Belnap <tyler@instructure.com>
Product-Review: Jesse Poulos <jpoulos@instructure.com>
2018-07-11 20:59:40 +00:00
Augusto Callejas dd867b5c6d Allow excluding users with no results
closes OUT-1859

test plan:
  - in a course, create about 10 outcomes and 10 student users
  - create an assignment, aligned to an outcome
  - submit to the assignment with two student users
  - assess the rubrics for each submission in speed grader
  - load LMGB, confirm that all students and outcomes appear,
    with the results of the two students
  - using a tool like Postman, perform an API call with an
    access to the following endpoint:

    http://canvas.docker/api/v1/courses/<course id>/outcome_rollups

  - confirm that a rollup appears for each student, and only scores
    appear for students whose assignments were assessed
  - append "?exclude[]=missing_user_rollups" to the request above
    and resubmit
  - confirm that only rollups with scores appears (should be two)
  - append "&include[]=outcomes" to the request above and resubmit
  - confirm that under the "linked" section, that "outcomes" contains
    all outcomes in the course

Change-Id: I399715093943455659ed5a05c39befca8dc2e801
Reviewed-on: https://gerrit.instructure.com/156247
QA-Review: Dariusz Dzien <ddzien@instructure.com>
Tested-by: Jenkins
Reviewed-by: Neil Gupta <ngupta@instructure.com>
Reviewed-by: Frank Murphy <fmurphy@instructure.com>
Product-Review: Michael Brewer-Davis <mbd@instructure.com>
2018-07-11 19:20:58 +00:00
Gary Mei 5a3437c251 fix semicolons as delimiters in gradebook importer
fixes GRADE-1324

Test Plan
 - Have DelayedJobs running.
 - Create a course with one teacher and at least one student.
 - Create an assignment for that course.
 - Go to the User settings of the teacher and turn on the option to
   use semicolons in Gradebook Export.
 - Go to the Gradebook as the teacher and export the Gradebook.
 - Open the csv file and change the grade a bit.
 - Verify that the csv did indeed use semicolons rather than commas.
 - Import that csv file back into the Gradebook.
 - Verify that the import worked successfully.
 - Turn off the option for using semicolons and instead use commas.
 - Verify that export/import works with commas using the same above
   steps.

Change-Id: I42870aeb3ff4064f3db39ed1b67681e2acc4ed8e
Reviewed-on: https://gerrit.instructure.com/156648
Tested-by: Jenkins
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
QA-Review: Adrian Packel <apackel@instructure.com>
Product-Review: Sidharth Oberoi <soberoi@instructure.com>
2018-07-10 21:13:27 +00:00
Augusto Callejas c47fb7a26f Exclude outcome results from muted asgmts/quizzes
closes OUT-2304

performance:
Indices are used throughout the scoped query.

Shard.current.id => 1773

base query:
LearningOutcomeResult.active.where(context_code:'course_1079845',user_id:3306819,learning_outcome_id:1397026)

without scope:
----------------------------------------------------------------------------------------------------------------------------------
 Nested Loop  (cost=4.86..8.20 rows=1 width=268)
   ->  Bitmap Heap Scan on learning_outcome_results  (cost=4.42..5.54 rows=1 width=268)
         Recheck Cond: ((user_id = 3306819) AND (learning_outcome_id = 1397026))
         Filter: ((context_code)::text = 'course_1079845'::text)
         ->  BitmapAnd  (cost=4.42..4.42 rows=1 width=0)
               ->  Bitmap Index Scan on index_learning_outcome_results_association  (cost=0.00..1.73 rows=27 width=0)
                     Index Cond: (user_id = 3306819)
               ->  Bitmap Index Scan on index_learning_outcome_results_on_learning_outcome_id  (cost=0.00..2.44 rows=123 width=0)
                     Index Cond: (learning_outcome_id = 1397026)
   ->  Index Scan using content_tags_pkey on content_tags  (cost=0.43..2.66 rows=1 width=8)
         Index Cond: (id = learning_outcome_results.content_tag_id)
         Filter: ((workflow_state)::text <> 'deleted'::text)

with scope (`exclude_muted_associations`):
----------------------------------------------------------------------------------------------------------------------------------------------------------
 Nested Loop Left Join  (cost=6.99..20.54 rows=1 width=268)
   Join Filter: ((learning_outcome_results.association_type)::text = 'Assignment'::text)
   Filter: (((ra.muted IS NULL) AND (qa.muted IS NULL) AND (sa.muted IS NULL)) OR (ra.muted IS FALSE) OR (qa.muted IS FALSE) OR (sa.muted IS FALSE))
   ->  Nested Loop Left Join  (cost=6.56..17.88 rows=1 width=270)
         ->  Nested Loop Left Join  (cost=6.13..15.72 rows=1 width=277)
               Join Filter: ((learning_outcome_results.association_type)::text = 'Quizzes::Quiz'::text)
               ->  Nested Loop Left Join  (cost=5.71..13.06 rows=1 width=269)
                     Join Filter: (((rassoc.association_type)::text = 'Assignment'::text) AND ((rassoc.purpose)::text = 'grading'::text))
                     ->  Nested Loop Left Join  (cost=5.28..10.85 rows=1 width=293)
                           Join Filter: ((learning_outcome_results.association_type)::text = 'RubricAssociation'::text)
                           ->  Nested Loop  (cost=4.86..8.20 rows=1 width=268)
                                 ->  Bitmap Heap Scan on learning_outcome_results  (cost=4.42..5.54 rows=1 width=268)
                                       Recheck Cond: ((user_id = 3306819) AND (learning_outcome_id = 1397026))
                                       Filter: ((context_code)::text = 'course_1079845'::text)
                                       ->  BitmapAnd  (cost=4.42..4.42 rows=1 width=0)
                                             ->  Bitmap Index Scan on index_learning_outcome_results_association  (cost=0.00..1.73 rows=27 width=0)
                                                   Index Cond: (user_id = 3306819)
                                             ->  Bitmap Index Scan on index_learning_outcome_results_on_learning_outcome_id  (cost=0.00..2.44 rows=123 width=0)
                                                   Index Cond: (learning_outcome_id = 1397026)
                                 ->  Index Scan using content_tags_pkey on content_tags  (cost=0.43..2.66 rows=1 width=8)
                                       Index Cond: (id = learning_outcome_results.content_tag_id)
                                       Filter: ((workflow_state)::text <> 'deleted'::text)
                           ->  Index Scan using rubric_associations_pkey on rubric_associations rassoc  (cost=0.42..2.64 rows=1 width=33)
                                 Index Cond: (id = learning_outcome_results.association_id)
                     ->  Index Scan using assignments_pkey on assignments ra  (cost=0.43..2.19 rows=1 width=9)
                           Index Cond: (id = rassoc.association_id)
               ->  Index Scan using quizzes_pkey on quizzes  (cost=0.43..2.65 rows=1 width=16)
                     Index Cond: (id = learning_outcome_results.association_id)
         ->  Index Scan using assignments_pkey on assignments qa  (cost=0.43..2.15 rows=1 width=9)
               Index Cond: (id = quizzes.assignment_id)
   ->  Index Scan using assignments_pkey on assignments sa  (cost=0.43..2.65 rows=1 width=9)
         Index Cond: (id = learning_outcome_results.association_id)

test plan:
  - create two course-level outcomes
  - create an assignment with a single question, and align the 1st outcome via a rubric
  - create a quiz bank with a single auto-gradeable question (e.g. true/false), and
    align the 2nd outcome to it
  - create a quiz that pulls the single question from the quiz bank above
  - as a student, submit to the assignment and the quiz
  - as a teacher, assess the assignment, providing a score to the rubric
  - as a teacher, confirm:
    * both outcomes have results in the LMGB
    * both outcomes have results in the sLMGB
  - as a student, confirm:
    * both outcomes have results in the sLMGB
  - as a teacher, mute the assignment in the gradebook:
    https://community.canvaslms.com/docs/DOC-12961-4152724339
  - as a teacher, confirm:
    * both outcomes have results in the LMGB
    * both outcomes have results in the sLMGB
  - as a student, confirm:
    * only the outcome associated with the quiz bank has results in the sLMGB
  - as a teacher, mute the quiz in the gradebook
  - as a teacher, confirm:
    * both outcomes have results in the LMGB
    * both outcomes have results in the sLMGB
  - as a student, confirm:
    * no outcomes should have results in the sLMGB
  - as a teacher, unmute the assignment in the gradebook
  - as a teacher, confirm:
    * both outcomes have results in the LMGB
    * both outcomes have results in the sLMGB
  - as a student, confirm:
    * only the outcome associated with the assignment has results in the sLMGB

Change-Id: I0ea05eedd29383501cc9306bcedcfa67aee4cd67
Reviewed-on: https://gerrit.instructure.com/155210
Tested-by: Jenkins
Reviewed-by: Neil Gupta <ngupta@instructure.com>
Product-Review: Neil Gupta <ngupta@instructure.com>
QA-Review: Neil Gupta <ngupta@instructure.com>
2018-07-10 20:18:30 +00:00
Nick Houle 8cdf400ba7 Implement Inst-fs capture callback for url uploads.
Adds an alert when the student submits stating that the upload is
processing and an email will be sent.

THe FilesController#api_capture called by InstFS, when the upload
processing is finished, uses Services::SubmitHomeworkService#submit
to submit the assignment.

Update the JS to prevent the browser from submitting the url upload
assignment twice. Passes the submit_assignment parameter to provide
backwards compatibilty, so the old JS can still double submit.

fixes: GOOF-449, GOOF-450, GOOF-435

Test Plan:
* Submit a file from the Google Drive, will see a pop up.
* Check the xhr for the request, the submit_assignment param will be true
* InstFS callback will cause the assignment to be submitted.

Change-Id: I5f49b8ef642fe5913bf0c2f282de8d697dcf1ce1
Reviewed-on: https://gerrit.instructure.com/154757
Reviewed-by: Nick Houle <nhoule@instructure.com>
QA-Review: Tyler Belnap <tyler@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: Jesse Poulos <jpoulos@instructure.com>
Tested-by: Jenkins
Reviewed-by: Josh Orr <jgorr@instructure.com>
2018-07-10 19:56:27 +00:00
Ryan Kuang 6e2d127d8d Add custom columns to gradebook imports/exports
When exporting a gradebook,
the csv should include custom columns listed at the final columns.

fixes GRADE-1275

Test Plan (Exporting)
 -Create a course
 -Use the public api to add custom columns, 1 read only and 2 writable
  (POST /api/v1/courses/:course_id/custom_gradebook_columns)
 -Use the public api to add data into those custom columns
  (PUT /api/v1/courses/:course_id/custom_gradebook_columns/:id/data/:user_id)
 -Navigate to the gradebook for the course and inspect the columns
 -Export to csv
 -Check if the csv has the proper columns as the gradebook, the read only column
  should not have changed, while the writable columns should display the changes

Test Plan (Importing)
 -Follow the steps above to export to csv
 -Change any data in an assignment column
 -Make sure the column changed is not (read only)
 -Save the csv and upload into gradebook
 -Check if the assignment changes appear in the gradebook

Change-Id: I36a7d53af7b86ffcb6cdfbc4f78effcb0df9a3fe
Reviewed-on: https://gerrit.instructure.com/155027
Tested-by: Jenkins
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
QA-Review: Keith T. Garner <kgarner@instructure.com>
Product-Review: Matt Goodwin <mattg@instructure.com>
2018-07-10 17:36:50 +00:00
Spencer Olson c5ee434ff5 make anonymous grading checks consider muted status
Unmuting an anonymous assignment will now cause that assignment to show
in the UI as though it is not anonymous. In addition, posting grades for
a moderated anonymous assignment will now cause that assignment to show
in the UI as though it is not anonymous.

closes GRADE-1310
closes GRADE-1313

Test Plan:
1. Verify unmuting an anonymous assignment causes that assignment to no
   longer be anonymized in the UI. You can do this by spot checking
   gradebook (old/new/individual) and SpeedGrader. In addition,
   re-muting an unmuted anonymous assignment should cause the assignment
   to become anonymized in the UI.
2. Verify posting grades for a moderated, anonymous assignment causes
   that assignment to no longer be anonymized in the UI (even if the
   assignment is muted).

Change-Id: I113c61b4e7fa0eb8909448d8ba7cffb22600e17c
Reviewed-on: https://gerrit.instructure.com/156151
Reviewed-by: Gary Mei <gmei@instructure.com>
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Tested-by: Jenkins
Product-Review: Sidharth Oberoi <soberoi@instructure.com>
2018-07-10 16:24:26 +00:00
Augusto Callejas 9c73b7e21b Add median aggregate rollups
closes OUT-2144

test plan:
  - create a course-level outcome with default rubric criterion
  - create an assignment that is aligned to that outcome
  - create two sections in a course (in Settings)
  - create 6 student users, split evenly between the two sections
  - masquerade as each student and submit to the assignment
  - in speedgrader, assess the rubrics with the following scores:
    1st section students: 5, 3, 0
    2nd section students: 4, 2, 1
  - perform an authenticated API call using a tool like Postman
    to fetch the average aggregate score:
    > /api/v1/courses/<course id>/outcome_rollups?aggregate=course
  - confirm the average score is 2.5
  - perform the same call again, but fetch the median aggregate score:
    > /api/v1/courses/<course id>/outcome_rollups?aggregate=course&aggregate_stat=median
  - confirm the median score is 2.5
  - determine the "section_id" values for each of the two sections above
    by running this in a Rails console:
    > CourseSection.last(2).map(&:id)
  - append "&section=<section id>" to the average aggregate score call
    above, and confirm the average scores:
    1st section: 2.67
    2nd section: 2.33
  - append ""&section=<section id>" to the median aggregate score call
    above, and confirm the median scores:
    1st section: 3
    2nd section: 2

Change-Id: I5701fd3edc1ff423caf4735406ee1bc3b5b1b011
Reviewed-on: https://gerrit.instructure.com/156486
Reviewed-by: Frank Murphy <fmurphy@instructure.com>
Tested-by: Jenkins
Reviewed-by: Matt Berns <mberns@instructure.com>
QA-Review: Dariusz Dzien <ddzien@instructure.com>
Product-Review: Augusto Callejas <acallejas@instructure.com>
2018-07-09 23:06:02 +00:00
Aaron Kc Hsu 19d2b39219 Remove discussions ff and clean out old ann and disc code
fixes COMMS-995 COMMS-996

Test Plan
* Make sure discussion and announcement pages don't white page
* Make sure the edit pages and other pages in flow works
* Test well.... reallly welll

Change-Id: I1f4e6ececddba8e81aca595287e59ee75fce3fa0
Reviewed-on: https://gerrit.instructure.com/155878
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: KC Naegle <knaegle@instructure.com>
Product-Review: Steven Burnett <sburnett@instructure.com>
2018-07-09 22:59:02 +00:00
Sara Chadwick b61422a144 Fix API call when changing due date for overriden assignments
Fixes COMMS-1240

Test plan:
- Create an assignment with an override for a specific section, and
  nothing for "everyone else"
- Perform an API call to change the overall date (ask Sara for deetz)
- Check that there is now an "everyone else" override, with the new
  due date that was specified
- Verify that there were no side-effects
- Verify that other, related calls haven't been messed up

Test plan:

Change-Id: I56451e03392b4ded47b5d7047ad8363045daf1c9
Reviewed-on: https://gerrit.instructure.com/156425
Tested-by: Jenkins
Reviewed-by: Venk Natarajan <vnatarajan@instructure.com>
Product-Review: Steven Burnett <sburnett@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
2018-07-09 21:35:41 +00:00
Jeremy Stanley 1c7851a82d copy start/end dates in blueprint migrations
test plan:
 - for an initial sync of a blueprint course to an associated
   course, the following should be copied:
   * start date
   * end date
   * restrict enrollments to course dates setting
 - for subsequent syncs, the above should be included if
   "Include Course Settings" is checked

fixes ADMIN-1107

Change-Id: I402a40ce690f19fdcc06e33399dbf2e3af07926c
Reviewed-on: https://gerrit.instructure.com/156421
Tested-by: Jenkins
Reviewed-by: James Williams  <jamesw@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
2018-07-09 19:52:21 +00:00
Augusto Callejas 466088fc8a Use default ratings and points
closes OUT-2218

test plan:
  - in a new course, import the CSV file attached to the JIRA ticket
  - align the newly created outcome to an assignment
  - submit to the assignment
  - confirm that a score appears in the LMGB
  - confirm that a score appears in the sLMGB

Change-Id: I5d013b2e74369a23c9922059734c86d0328dea08
Reviewed-on: https://gerrit.instructure.com/155468
Reviewed-by: Frank Murphy <fmurphy@instructure.com>
Tested-by: Jenkins
QA-Review: Dariusz Dzien <ddzien@instructure.com>
Product-Review: Sidharth Oberoi <soberoi@instructure.com>
2018-07-05 21:04:54 +00:00
James Williams 50b4e51ac0 cache mathman results generating mathml
test plan:
* with mathman configured and
 "Use MathMan to convert LaTeX to MathML?"
 enabled, mathml conversion for equations
 in rich content should work as before

closes #CORE-1551

Change-Id: Ib632ee6ea4186cabc782748727e1c67e82f30e10
Reviewed-on: https://gerrit.instructure.com/155808
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
2018-07-03 19:22:08 +00:00
Cody Cutrer 4014a971e0 allow 5 minutes of future clock skew when verifying JWTs
fixes CORE-1439

Change-Id: Ia3ed12dd79cee475bedd0879323eacf3a0325476
Reviewed-on: https://gerrit.instructure.com/155617
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
2018-06-29 18:33:10 +00:00
Sara Chadwick fc16a5fb90 Change Activity Stream API to contain missing attributes
Fixes COMMS-1139

Test Plan:
- Send a new conversation to your main user
- Using https://lti-tool-provider-example.herokuapp.com/xml_builder,
  create a new collaboration. Set the collaboration section to
  content_item_selection_request
- Go to http://localhost:3000/api/v1/users/self/activity_stream and
  verify that the message for the collaboration object is the collab's
  description.
- Also verify that the title of the conversation object is the subject

Change-Id: If1fecd634ecf3e3af89055b5e0f958c83f419d27
Reviewed-on: https://gerrit.instructure.com/155673
Tested-by: Jenkins
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Sara Chadwick <schadwick@instructure.com>
2018-06-29 17:07:21 +00:00
Simon Williams 87a5b6032f allow creating developer keys that only work against test clusters
Some production installations have a beta or test environment that is
refreshed with data from production, and is used as a place to test
integrations or new features. In that case, you may want to create
a developer key that only works against this test instance, which has
traditionally meant making the following tradeoff:
- Create the key in the test instance directly, which means it will be
  removed the next time the data is refreshed
- Create the key in production, which means the key works against the
  production instance as well

This new functionality allows the best of both worlds: create the key in
production for persistance, but only allow it to function against a test
cluster.

To enable test cluster functionality, you need a plugin that overrides
`ApplicationController.test_cluster?` to return appropriately for the
environment.

To see the functionality, you need to set:
  `Setting.set("dev_key_test_cluster_checks_enabled", true)`

closes PLAT-3392
[ci no-db-snapshot]

test plan:
- First ensure that all existing developer key functionality works and
no new functionality appears without any action taken
- Then set Setting.set("dev_key_test_cluster_checks_enabled", true), you
should see the new option available in the new dev key UI
- Create a key with and without the new option checked. Access tokens
from the key without it check should still work normally. Tokens from
the key with it checked should not work
- Now manually override `ApplicationController.test_cluster?` to be
true.
- Tokens from both keys should now work

Change-Id: I5bbb46782d19c26a7b703834aaa507b0cb10039a
Reviewed-on: https://gerrit.instructure.com/153035
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Weston Dransfield <wdransfield@instructure.com>
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
Product-Review: Karl Lloyd <karl@instructure.com>
2018-06-29 15:50:08 +00:00
gbeckmann 93d93163d2 Make Quizzes.Next Import Feature Flag Hidden
Make the feature flag hidden rather than allowed while additional
work is completed on the feature.

Fixes QUIZ-4872

Test Plan:
Feature Flag is still visible to Site Admins, but no longer visible
to Account Admins in either Beta or Prod.

Change-Id: I11c8c8a80e98ad720aff082bcedbf02e25b91f22
Reviewed-on: https://gerrit.instructure.com/155720
Tested-by: Jenkins
Reviewed-by: Dariusz Dzien <ddzien@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
QA-Review: KC Naegle <knaegle@instructure.com>
Product-Review: Gentry Beckmann <gbeckmann@instructure.com>
2018-06-29 00:39:14 +00:00
gbeckmann 4d3dc28d7d Revert "Remove import_quizzes_next feature flag"
This reverts commit a664cdb0b2.

Fixes QUIZ-4871

Change-Id: I7bb26a6cf03f4442f384bd40d4ed612b060012bb
Reviewed-on: https://gerrit.instructure.com/155719
Tested-by: Jenkins
QA-Review: Robin Kuss <rkuss@instructure.com>
Reviewed-by: Han Yan <hyan@instructure.com>
Product-Review: Gentry Beckmann <gbeckmann@instructure.com>
2018-06-29 00:39:08 +00:00
Mysti Sadler a6bf7c4386 Preload information for discussion topics for planner
closes ADMIN-1155
refs ADMIN-1031

Test plan
- Set up some discussion topics
- Load /api/v1/planner/items for those topics
  and ensure you don't have to load
  discussion_topic_participants for each one

Change-Id: I92aea7516bea0ec2b1e7406470c6d0f545b0123f
Reviewed-on: https://gerrit.instructure.com/154274
Tested-by: Jenkins
Reviewed-by: Carl Kibler <ckibler@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Mysti Sadler <mysti@instructure.com>
2018-06-28 19:40:15 +00:00
Michael Guymon 4905ae6237 Increase the job priority for url uploads.
Student homework submissions from the Google Drive LTI are
failing when the Delay Job queue is backed up. The browser sends two
requests for the submission. The first request clones the url and the
second submits the file for the assignment. If the first request takes a
long time, the student will close their browser, prevent the second
request from happening and stopping the submission.

This increases the priority of url submissions to high, so they will be
priortized by the Delayed Job workers.

refs: GOOF-434

Test Plan: Submit an online homework submission from Google or Office.
The Delayed Job record created will have a priority of zero (lower is
better).

Change-Id: I72d583b22c83a8e058497ba6d965fd992bf05ffd
Reviewed-on: https://gerrit.instructure.com/153745
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins
QA-Review: Mark McDermott <mmcdermott@instructure.com>
Product-Review: Jesse Poulos <jpoulos@instructure.com>
2018-06-28 19:19:31 +00:00
Han Ngo f9a75654a1 Warm fix broken API Token Scopes file
Fixes PLAT-3550

Test Plan:
- Verify there is no 'API Token Scopes' under OAuth2
- Verify there is only one link 'API Token Scopes' under Resources
- Verify there is no code left related to generating the 'API Token
Scopes' table under OAuth2

Change-Id: Ib00a4aeec102eafc22169ac5322b581fef797a0b
Reviewed-on: https://gerrit.instructure.com/155247
Tested-by: Jenkins
Reviewed-by: Weston Dransfield <wdransfield@instructure.com>
QA-Review: Weston Dransfield <wdransfield@instructure.com>
Product-Review: Jesse Poulos <jpoulos@instructure.com>
2018-06-27 17:38:28 +00:00
Matt Sessions 11d6856cba Change alert titles to match correct wording
Refs MBL-10742

Test Plan:
 - Create a threshold for each type for an observer-student
   pairing
 - Generate an alert for each threshold type
 - The title should match the ticket
 - Threshold Types:
   - course_grade_low
   - course_grade_high
   - assignment_grade_low
   - assignment_grade_high
   - assignment_missing
   - course_announcement
   - institution_announcement
 - For assignment grade thresholds have multiple
   assignments that have different display grade as
   types and ensure it puts the correct grade in the
   alert title

Change-Id: Ia971e707c8da73b09066c5f23a742fe60a64be8f
Reviewed-on: https://gerrit.instructure.com/155341
Tested-by: Jenkins
Reviewed-by: Layne Moseley <lmoseley@instructure.com>
QA-Review: Layne Moseley <lmoseley@instructure.com>
Product-Review: Matthew Sessions <msessions@instructure.com>
2018-06-27 14:01:04 +00:00
Gary Mei c6135e38aa hide concluded students in speedgrader
This changes SpeedGrader to be consistent with Gradebook in showing
or hiding concluded students in a soft concluded course. Concluded
students will show or be hidden depending on if "Show Concluded
enrollments" is checked or not.

closes GRADE-1204 and GRADE-585

Test Plan

 Setup
 - Have a course with at least 2 students.
 - Create an assignment.
 - Conclude 1 student.
 - Go to the course settings and change the course dates to start and
   end before the current day.
 - Under the course dates, check the box for
   "Users can only participate in the course between these dates"

 Testing SpeedGrader
 - Navigate to the Gradebook.
 - Uncheck the option to show concluded students, if it's checked.
 - Open SpeedGrader for the assignment.
 - Verify that the concluded student does not show.
 - Navigate to the Gradebook.
 - Check the option to show concluded students.
 - Open SpeedGrader for the assignment.
 - Verify that the concluded student does show.

 Testing Exports
 - Navigate to the Gradebook.
 - Uncheck the option to show concluded students, if it's checked.
 - Export the Gradebook.
 - Verify that the concluded student does not appear in the export.
 - Navigate to the Gradebook.
 - Check the option to show concluded students.
 - Export the Gradebook.
 - Verify that the concluded student does appear in the export.

Change-Id: Id237086263e47405c03e0ae4af20195fa4d8ca35
Reviewed-on: https://gerrit.instructure.com/155111
Tested-by: Jenkins
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
Reviewed-by: Adrian Packel <apackel@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
2018-06-27 04:54:31 +00:00
Anju Reddy 2c8dfe64f3 spec: Automatically tag with branch name when pact is published
Change-Id: Ia53a6f82d2bb62ddf8938170d19cb3dbb3282170
Reviewed-on: https://gerrit.instructure.com/155297
Tested-by: Jenkins
Reviewed-by: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Reviewed-by: Tucker McKnight <tmcknight@instructure.com>
Product-Review: Anju Reddy <areddy@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
2018-06-26 20:14:58 +00:00
James Williams 59cec7ca20 use parallel importer ids in refactored sis importer
using ids from now on will speed up the job deserialization
(and the code should still work with existing jobs too)

also fix a problem with error handling when the error
 is just a string

Change-Id: I6315e523c6f02050ac3d09b67e693ca616636502
Reviewed-on: https://gerrit.instructure.com/154812
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
QA-Review: James Williams  <jamesw@instructure.com>
2018-06-26 14:27:00 +00:00
Nate Armstrong dd0c3c8cda Add missing observer alert json fields
* Adds html_url for assignment_missing alerts
* Always includes action_date field

Refs MBL-10730

Test plan:
* Create an assignment_missing alert for an observer
* View alerts via api `/api/v1/users/self/observer_alerts/:userID`
* Verify that action_date field is present
* Verify that html_url field is present

Change-Id: I1276d6467b392ffaa9f919440ec7635ebd925895
Reviewed-on: https://gerrit.instructure.com/155092
Reviewed-by: Matthew Sessions <msessions@instructure.com>
Product-Review: Matthew Sessions <msessions@instructure.com>
QA-Review: Matthew Sessions <msessions@instructure.com>
Tested-by: Jenkins
2018-06-25 20:59:15 +00:00
Cody Cutrer 234e572993 remove AccountAuthorizationConfig shim
Change-Id: I668d4f87e186bfbe5bb0fed9ce9a29f56b0ea2ba
Reviewed-on: https://gerrit.instructure.com/148370
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
2018-06-25 20:45:50 +00:00
Gary Mei d39a795518 fix empty rows in new gradebook for soft conclude
Soft concluded courses with hard concluded students were returning
ids for those hard concluded students while the frontend was only
expecting ids for non-hard concluded students. This was causing extra
rows to be present in the gradebook, which cascaded into grades not
showing up. This changes gradebook_user_ids to be in line with what
Gradebook.coffee is expecting.

fixes GRADE-1096

Test Plan
 - Create a course.
 - Turn on New Gradebook for the course.
 - Enroll at least two students.
 - Create an assignment.
 - Grade both students.
 - Conclude one student's enrollment.
 - Go to the course settings and change the course dates to start and
   end before the current day.
 - Under the course dates, check the box for
   "Users can only participate in the course between these dates"
 - Go back to the Gradebook.
 - Verify that there are no empty rows and only the students that are
   not concluded are present.
 - Set the grid to show concluded enrollments.
 - Verify that the concluded enrollments now appear.

Change-Id: I21ffa7ee52c07947710ff8ec68159fcfe96b0ec8
Reviewed-on: https://gerrit.instructure.com/154679
Reviewed-by: Spencer Olson <solson@instructure.com>
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
Tested-by: Jenkins
QA-Review: Derek Bender <djbender@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
2018-06-25 20:44:16 +00:00
Jeremy Stanley 39bdab8baa make planner items link to submission if present
test plan:
 - enable planner
 - have assignments and graded discussions
 - ensure these link to the assignment or discussion
   on a student's planner
 - ensure after the student submits and/or the teacher
   grades the item, the planner links to the submission
   page where the student can see feedback

fixes ADMIN-179

Change-Id: I4bbe2f11c8c95899b6fda6d0935dc9bc48a66d39
Reviewed-on: https://gerrit.instructure.com/154256
Tested-by: Jenkins
Reviewed-by: Dan Minkevitch <dan@instructure.com>
QA-Review: Ed Schiebel <eschiebel@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
2018-06-25 20:41:35 +00:00
Steve Kacsmark a664cdb0b2 Remove import_quizzes_next feature flag
closes QUIZ-4547

Test Plan:
 - Enable Quizzes.Next in Canvas
 - Enable Quizzes next for the course.
 - Browse to Courses -> Settings -> Import Course Content
   (/courses/<course_id>/content_migrations)
 - For Content Types 'Common Cartridge 1.x package' and 'QTI.zip file'
 - Import to Quizzes.Next Checkbox and help should be shown, and enabled

 - Disable Quizzes next for the course.
 - Browse to Courses -> Settings -> Import Course Content
   (/courses/<course_id>/content_migrations)
 - For Content Types 'Common Cartridge 1.x package' and 'QTI.zip file'
 - Import to Quizzes.Next Checkbox and help should be shown, but disabled

 - Disable Quizzes next in Canvas
 - Browse to Courses -> Settings -> Import Course Content
   (/courses/<course_id>/content_migrations)
 - For Content Types 'Common Cartridge 1.x package' and 'QTI.zip file'
 - Ensure the Import to Quizzes.Next Checkbox and help are not shown.

Change-Id: Ie04f94684c682db81dac721c7bb11b3d153e7e29
Reviewed-on: https://gerrit.instructure.com/154769
Tested-by: Jenkins
Reviewed-by: Jared Crystal <jcrystal@instructure.com>
QA-Review: David Tan <dtan@instructure.com>
Product-Review: Kevin Dougherty <jdougherty@instructure.com>
2018-06-25 18:47:13 +00:00
James Williams 88e9276054 don't load pact tasks without test group bundled
Change-Id: I0262c02e289eb8476a01c136ea5a291e91173cf9
Reviewed-on: https://gerrit.instructure.com/155009
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Reviewed-by: Ryan Shaw <ryan@instructure.com>
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
QA-Review: James Williams  <jamesw@instructure.com>
Tested-by: James Williams  <jamesw@instructure.com>
2018-06-25 14:02:31 +00:00
Derek Bender 6725c76d8f tweak speed grader comment visiblity
closes: GRADE-1266

Test Plan:

enroll two students and two TAs and the teacher is the final grader (it
shouldn't matter if the final grader is a TA or a teacher, in fact feel
free to rotate them for more possibilities). If you're short on time the
following could be done on one assignment and for each test case toggle the
settings on and off, but then it would be difficult to quickly pull of the
correct configuration, if problems arise.

The titles of each feature are how they are found in the Assignment form.
This can cause some confusion due to some rules being enabling or disabling
a phrase with a 'not' present so be careful!

/------------+---------------------------+-----------+-----------------------+---------------------+-----------------------\
| assignment | anonymous (graders cannot | moderated | graders can view      | graders cannot view | final grader can view |
|            | view student names)       | grading   | each other's comments | each other's names  | other grader names    |
+------------+---------------------------+-----------+-----------------------+---------------------+-----------------------+
| I (basic)  |                           |           |                       |                     |                       |
+------------+---------------------------+-----------+-----------------------+---------------------+-----------------------+
| II         |                           | on        | on                    |                     | on                    |
+------------+---------------------------+-----------+-----------------------+---------------------+-----------------------+
| III        |                           | on        | on                    |                     |                       |
+------------+---------------------------+-----------+-----------------------+---------------------+-----------------------+
| IV         |                           | on        |                       |                     |                       |
+------------+---------------------------+-----------+-----------------------+---------------------+-----------------------+
| V          | on                        | on        | on                    | on                  | on                    |
+------------+---------------------------+-----------+-----------------------+---------------------+-----------------------+
| VI         | on                        | on        | on                    | on                  |                       |
+------------+---------------------------+-----------+-----------------------+---------------------+-----------------------+
| VII        | on                        | on        | on                    |                     |                       |
+------------+---------------------------+-----------+-----------------------+---------------------+-----------------------+
| VIII       | on                        | on        |                       |                     |                       |
+------------+---------------------------+-----------+-----------------------+---------------------+-----------------------+
| IX         | on                        |           |                       |                     |                       |
+------------+---------------------------+-----------+-----------------------+---------------------+-----------------------+
Note: if a cell is empty, it means `off`,

For assignments with Moderated Grading enabled the `Number of graders` will
always be `2` (the final grader makes three enrollments we'll use for
Speed Grader)

for each assignment do the following:
have the first student (Student A) submit their homework
- As the first TA (TA1), create a published comment and draft comment on
  Student A's submission
- As the second TA (TA2), create a published comment and draft comment on
  Student A's submission
- As the final grader (the teacher), create a published comment and draft
  comment on Student A's submission

For the follow instructions, negatives are presented in uppercase (`CANNOT`)
for enhanced clarity. Ensure for each grader (unless final grader is
specified) in each assignment referenced via the parens:

(I)
  1. can view student names
  2. can view each other's comments
(II)
  1. can view student names
  2. can view each other's comments
  3. final graders can view other graders' names
(III)
  1. can view student names
  2. can view each other's comments
  3. final grader CANNOT view other graders' names
(IV)
  1. can view student names
  2. CANNOT view each other's comments
  3. final grader can view each others' comments
(V)
  1. CANNOT view student names
  2. can view each other's comments
  3. CANNOT view each other's names
  4. final grader view other graders' names
(VI)
  1. CANNOT view student names
  2. can view each other's comments
  3. CANNOT each other's names
  4. final grader CANNOT view other graders' names
(VII)
  1. CANNOT view student names
  2. can view each other's comments
  3. can view each other's names
  4. final grader CANNOT view other graders' names
(VIII)
  1. CANNOT view student names
  2. CANNOT each other's comments
  3. final grader can view each others' comments
(IX)
  1. CANNOT view student names

Change-Id: I3e9a8787f04cf03a38ea651aa85b3eaa98f41f9c
Reviewed-on: https://gerrit.instructure.com/154391
Tested-by: Jenkins
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
QA-Review: Indira Pai <ipai@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
2018-06-24 20:37:22 +00:00
Jeremy Stanley 0ba33e8b38 fix user-context content migrations
test plan:
 - in user files (not course files),
   - upload a zip file and select "Expand it"
   - it should complete without having to reload the page

fixes ADMIN-1180

Change-Id: I9fbb52a1fa50f55ac294bc6df3057b7e4084fda6
Reviewed-on: https://gerrit.instructure.com/154982
Reviewed-by: Han Yan <hyan@instructure.com>
Reviewed-by: Steve Kacsmark <skacsmark@instructure.com>
Reviewed-by: Robert Lamb <rlamb@instructure.com>
Product-Review: Robert Lamb <rlamb@instructure.com>
QA-Review: Robert Lamb <rlamb@instructure.com>
Tested-by: Jenkins
2018-06-23 16:45:20 +00:00
Michael Brewer-Davis 3e313cec5f allow non-scoring rubric flag
Change-Id: I1cf542d23d39820bfade8458b2a6cfb4e4e33ebf
Reviewed-on: https://gerrit.instructure.com/154824
Tested-by: Jenkins
Reviewed-by: Augusto Callejas <acallejas@instructure.com>
Product-Review: Michael Brewer-Davis <mbd@instructure.com>
QA-Review: Michael Brewer-Davis <mbd@instructure.com>
2018-06-22 17:49:33 +00:00
Cody Cutrer 57a8cd956e this method got renamed
Change-Id: Ib26b053d9d6c408fc90c7e5a3c1bb73c1f88efcd
Reviewed-on: https://gerrit.instructure.com/154781
Reviewed-by: Simon Williams <simon@instructure.com>
Tested-by: Jenkins
Product-Review: James Williams  <jamesw@instructure.com>
QA-Review: James Williams  <jamesw@instructure.com>
2018-06-22 14:05:03 +00:00
Adrian Packel 4af8b55867 Switch old anonymous grading flag over, again
For any accounts/courses with the old Anonymous Grading flag still
enabled, enable anonymous grading for the assignments in those
accounts/courses and move them over to the new Anonymous Marking flag.
For any accounts with the old flag merely allowed, switch it to off.

refs GRADE-957

Test plan:

Setup:
- Have an account (A1) with the Anonymous Grading (course-level) flag
  set to ALLOW
  - Have a course within A1 (C1) with the same flag set to ON
- Have an account (A2) with the Anonymous Grading (course-level) flag
  set to ON (this can be a sub-account of A1)
  - Have a course within A2 (C2)
- Create at least one assignment in each course
- Ensure the courses and assignments have been published (i.e., the
  courses have a workflow_state of 'available' and the assignments
  have a workflow_state of 'published')

Testing:
- Run the migration
- A1, C1 and A2 should no longer have entries for the old feature flag
  if you call the feature_flag method in the console:

  > account_or_course.feature_flag(:anonymous_grading) # should be nil

- They should also have the new Anonymous Marking flag set to ON
- All assignments in C1 and C2 should now be anonymously-graded

Change-Id: Id1c7325775eda0cbfe89cd5342a1d594c7565b5a
Reviewed-on: https://gerrit.instructure.com/153683
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
2018-06-21 17:33:38 +00:00
Michael Brewer-Davis 8fa3360f89 do not include hidden results in rollups
closes OUT-1846

Test plan:
- create an outcome
- create two assignments with rubrics including
  the outcome
- set one of the rubrics to "Don't post results to LMGB"
- assess a student using both rubrics with different scores
- visit the LMGB
- verify that only the non-hidden score is reflected
  in the LMGB
- visit the student LMGB
- verify that only the non-hidden alignment is shown
  in the student lmgb
- visit
    http://canvas.docker/api/v1/courses/COURSE_ID/outcome_results?user_ids[]=USER_ID&outcome_ids[]=OUTCOME_ID
  (replacing COURSE_ID, USER_ID and OUTCOME_ID)
- verify that hidden alignment is not shown
- add
    &include_hidden=true
  to the above URL
- verify that hidden alignment is now shown

Change-Id: Ie08c63f32686ffc42394e926c22eac773799d616
Reviewed-on: https://gerrit.instructure.com/154464
Tested-by: Jenkins
Reviewed-by: Frank Murphy <fmurphy@instructure.com>
Reviewed-by: Augusto Callejas <acallejas@instructure.com>
QA-Review: Augusto Callejas <acallejas@instructure.com>
Product-Review: Sidharth Oberoi <soberoi@instructure.com>
2018-06-21 16:39:27 +00:00
Steven Burnett a6ed1036c1 remove development feature flag on permissions UI
fixes a ticket

Test Plan:
- Test pass
- no development FF on permissions feature flag

Change-Id: Ife6cb890fd576e16b438213ca715988bb2e19614
Reviewed-on: https://gerrit.instructure.com/154687
Reviewed-by: Venk Natarajan <vnatarajan@instructure.com>
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Jenkins
Product-Review: Steven Burnett <sburnett@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
2018-06-21 16:15:59 +00:00
Cody Cutrer ce9fcf595f run counts reports in parallel
refs CORE-1505

also, don't build the overview report anymore (which requires summing up
all of the parts)

Change-Id: Icb4c317e65237cb4ea9a800d7742f36ebac79022
Reviewed-on: https://gerrit.instructure.com/154342
Tested-by: Jenkins
Reviewed-by: James Williams  <jamesw@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
2018-06-21 14:44:22 +00:00
Keith Garner e12263fcee skip grade calc when creating assignment in gradebook upload
This adds a calculate_grades parameter to the assignment creation api
that defaults to true. When set to false, after an assignment is
created the DueDateCacher will run but not force a grade calculation
for the course. The gradebook upload process is the first user of this
parameter to avoid a race condition between the creation of the
assignment during a gradebook upload and the subsequent grade
calculation after the submissions are updated with scores.

fixes GRADE-1229

test plan:
 - Create a course with some assignments and some students
 - Export the gradebook
 - In the CSV add a new assignment and grade the students for that new
   assignment
 - Import the gradebook
 - After import is completed check the canvas logs and confirm that
   the grade calculator doesn't run after the call to the assignment
   api but does run after the call to submission bulk update

Change-Id: Ibf52a119e3ad34b95786b6e171f585431111feb8
Reviewed-on: https://gerrit.instructure.com/154077
Tested-by: Jenkins
Reviewed-by: Gary Mei <gmei@instructure.com>
Reviewed-by: Jeremy Neander <jneander@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
2018-06-21 13:51:05 +00:00
Simon Williams 896de23669 stub ApplicationController.test_cluster?
Change-Id: I8c079ca5ed232191f957d090d34def3ac617cafa
Reviewed-on: https://gerrit.instructure.com/153034
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins
Product-Review: Simon Williams <simon@instructure.com>
QA-Review: Simon Williams <simon@instructure.com>
2018-06-20 19:38:31 +00:00