Commit Graph

39803 Commits

Author SHA1 Message Date
Adrian Packel f7e168c77b Submit only one comment at a time in SG
Do not attempt to submit comments in SpeedGrader if a submission request
is already in progress. Although we already disable the "Submit" button
while waiting for a response, navigating between students would still
attempt to record the current comment text as a draft (even if the user
had already explicitly saved it) without checking whether a request was
in progress.

flag=none
fixes TALLY-620

Test plan:

- Have a course with an assignment and some students
- Open SpeedGrader for the assignment

- Ensure the server will take a while to process comment requests
  - To do this, you can make a change on the server to force a reload
    (e.g., add a line to update_submission in gradebooks_controller),
    or get yourself a terrible internet connection if you're not testing
    locally.

- Ensure non-draft comments aren't wrongly saved as drafts:
  - Type some text in the comment box for a student
  - Click "Submit"
  - Immediately start hitting the "j" and/or "k" keys with great vigor
  - This should *not* cause a zillion draft comments to be saved
  - Eventually the actual submission request should finish, and should
    add a non-draft comment for the intended student (and only that
    student)
- Ensure draft comments only get one copy saved:
  - Slow down your server again, as above
  - Type some comment text, but do not submit it
  - Using the arrow buttons at the top, furiously move between students
  - This should *not* cause zillions of draft comments to be saved
  - Eventually, the actual draft comment should be saved for the
    intended student (and only that student)
- Ensure the more civilized behavior below works as expected:
  - Submitting a comment and calmly waiting for the submission to go
    through
  - Typing some comment text, switching students, and waiting for the
    draft comment to be saved without making a ruckus
  - Typing some comment text, closing the page, and then re-opening the
    page with no hullabaloo (the text should have been saved as a draft)

Change-Id: I57e0781333c763ba22842749f0130fe6c21eb319
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237373
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Spencer Olson <solson@instructure.com>
Reviewed-by: Gary Mei <gmei@instructure.com>
Reviewed-by: Jeremy Neander <jneander@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
2020-05-22 15:00:11 +00:00
Steve Shepherd 1c0ac2e274 Add FF for Hide Course Sections from Students
closes: KNO-514
flag=hide_course_sections_from_students

test plan:
1. Go to root account and look for the feature flag for Hide Course Sections from Students.
2. Enable the feature flag
3. follow the test plan here: https://gerrit.instructure.com/c/canvas-lms/+/234974
4. leave the setting checkmarked so sections are hidden from students, then disable the feature flag
5. Verify sections are no longer hidden for the student, since the ff is now disabled, even though the settings was left on when the ff was disabled.

Change-Id: I2bd003df38d1b232550ca623deb819e19b6b408f
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/238231
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
2020-05-22 14:06:32 +00:00
Jenkins 36e9487360 [i18n] Update package translations
Change-Id: I6900445598b5a1bfcdc3f0f528f7e4c411a2b858
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/238240
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
2020-05-22 04:46:55 +00:00
Drake Harper c0e4c24bc1 Add functionality to sort announcements
Test plan:
-announcements with a greater date should be at the top

fixes KNO-470

flag=past_announcements

Change-Id: I27c9809ab800a02fe2dbe9a7c6807f09f9ba3bc7
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/238101
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
2020-05-22 00:40:42 +00:00
Steve Shepherd 07434113ca Add setting to hide students from other sections
Adds a new course setting to make it so students
can't see students from other sections when it is
enabled. Behavior only triggers when there is more than
one section.

test plan:
1. As a teacher, create a course and go to the course settings page
2. Under more options, check the "Hide sections on the People page
   from students" checkbox and then Click Update Course Details.
3. Leave the course as a single section for now and publish it.
4. Add a student to the course, and then log in as the student.
5. Go to the people page and verify you can see the Section column
   on the roster table.
6. Log in as a teacher and add a second section to the course.
7. Add another student and assign them the new section.
8. Log in as either student, and verify on the people page that
   the Section column no longer appears.
9. As a teacher turn off the setting and verify the students can
   see the Section column again.
10. As a teacher, delete the second section.
11. Turn on the setting again and verify the student can still see
    the Section column.

closes: USERS-352
Change-Id: I9a674674424e4d37d23e9df4dea690b1114feb7a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/234974
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
2020-05-21 20:01:41 +00:00
Michael Brewer-Davis 3870ab9ff3 mark conference dirty on user settings change
refs CAL-37
flag=calendar_conferences

Test plan:
- tests pass
- calendar conference updates occur
  when only the conference times are changed

Change-Id: I1a9570b83999b612d9521234f9c1e5ab41a71f74
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/236926
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Augusto Callejas <acallejas@instructure.com>
Reviewed-by: Ken McGrady <kmcgrady@instructure.com>
QA-Review: Steve Shepherd <sshepherd@instructure.com>
Product-Review: Steve Shepherd <sshepherd@instructure.com>
2020-05-21 18:05:28 +00:00
James Williams 40550bdcb8 make submission course_id not null
Change-Id: I1f6445fa5898c6a9a757a7f7e643ada491703757
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/234611
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
2020-05-21 16:50:37 +00:00
Rob Orton e676f78d34 fallback to using default product name
when a pseudonym is not found for an email we don't have the account to
load the product name, this is set to 'Canvas' for most accounts. This
will allow the email to still send instead of error, but might not be
accurate

test plan
 - in console make a user that is unregistered
 - make a unconfirmed communication_channel for the user
 - it should send an email to it

fixes KNO-474
flag=none

Change-Id: I1855993a07a4edd4ba8d523df7efb29d128eef4d
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237933
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Drake Harper <drake.harper@instructure.com>
QA-Review: Drake Harper <drake.harper@instructure.com>
Product-Review: Drake Harper <drake.harper@instructure.com>
2020-05-21 15:24:32 +00:00
Clint Furse 82e495f426 set root_account_id on assignment_student_override create
closes LA-785
flag = none

Test Plan:
- create and override for student
- verify record is created and has correct root_account_id

Change-Id: Idf60a0ff42a75dec5b10d9d6ca9c8d25cf6ffd1f
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237809
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
Product-Review: Clint Furse <cfurse@instructure.com>
2020-05-21 15:23:15 +00:00
Clint Furse bb82d1c943 set root_account_id on assignment_override create
closes LA-784
flag = none

Test Plan:
- verify that an assignment_override can be saved
- verify that the override contains the correctly root_account_id

Change-Id: I20d048d04ae295ec9cd7820598f058f3ff9be21e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237804
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
Product-Review: Clint Furse <cfurse@instructure.com>
2020-05-21 15:22:52 +00:00
Clint Furse d28edd6c89 set root_account_id on assignment_group create
closes LA-783
flag=none

Test Plan:
- verify that we can still create an assignment group
- verify that new groups have the correct root_account_id set

Change-Id: Ibc1314b3eaecf99e46d09583da045513b2cd8314
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237882
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
Product-Review: Clint Furse <cfurse@instructure.com>
2020-05-21 15:22:39 +00:00
Charley Kline 87427c1a35 Never send no children to <Select>
Fixes USERS-580
Refs USERS-515
flag=none

Automation testing revealed a sneak circuit through
<SearchableSelect> whereby it could be forced to render its
InstUI <Select> child with zero children of its own. This is
obviously wrong, but it has the additional problem of causing
<Select> to crash the entire app, so it's even worse than normal.

Just had to add some insulation to prevent that from happening
(it had to do with leaving the "bad" matcher RegExp laying around
after a blur... then when the text box was clicked on again,
<Select> requested to show the options, <SearchableSelect>
complied, but there were none because nothing matched, so boom.

Also added a test for this and for some other new functionality
regarding group handling that wasn't tested before.

Test plan:
* Follow the steps to reproduce in USERS-580
* It should no longer crash, and instead pop up a filtered search
  for whatever was left in the input box

Change-Id: Ia472433a0c969331ac6c7f0020434ae3d94df14d
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237951
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: August Thornton <august@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: August Thornton <august@instructure.com>
2020-05-20 22:23:44 +00:00
Rob Orton 56f97d0f12 make access token for real_user
access tokens cannot be created when masquerading a user on purpose,
because this would allow a user to get the real token and use it when
permissions for the user could change in the future. A commit was made
ee50eec4bd to create the access tokens
used when doing an lti launch on the real_user instead of the user, but
this breaks some tools that are not handling all the masquerade data.
c94b34348a reverted that change to create
them on the user again.

This commit is adding a column to access_token so we can audit usage of
the tokens created from an LTI launch. When a token is created while
masquerading we add the real_user_id to the token and make the token
expire in one hour.

test plan
 - masquerade as a user
 - launch an lti_tool that creates an access token
 - the tool should see the end users token
 - in a console verify the token is set to expire in an hour
 - verify that real_user_id is used on the token
 - the token should expire within an hour

fixes KNO-464
flag=none

Change-Id: I1f8913fc536f4e2c8539551efed69b27fbdb6b1a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/236443
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Davis Hyer <dhyer@instructure.com>
QA-Review: Davis Hyer <dhyer@instructure.com>
Product-Review: Davis Hyer <dhyer@instructure.com>
2020-05-20 22:00:00 +00:00
Jeremy Stanley fc7ee5e5b3 A2: fix non-user context file submission
remove course files, since it doesn't make a lot of sense
to submit those, and the entire page broke when the files tab
was disabled in course nav. fix group-context files, which
were not supported by the graphql backend.

test plan:
 - enable assignments_2_student feature
 - set up an assignment that accepts file submissions
 - disable the files tab in course navigation
 - as a student, go to the assignment page and click
   "more options"
   - you should be able to select a file from your files
     and submit it

 - set up a group in the course
 - as a student, upload a file to the group
 - you should be able to submit a group file via
   "more options"

fixes LA-838

flag = assignments_2_student

Change-Id: Ib1f9e216b8ee9cef59651e1b3e2a50c7ad1ae03e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237762
Reviewed-by: Rob Orton <rob@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Clint Furse <cfurse@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
2020-05-20 21:42:16 +00:00
Jared Crystal ada67d5743 allow decimal point values on quiz index page
fixes QO-77
flag = none

test plan:
 - create Classic/New Quizzes worth 1 point, 2+ points,
   and a decimal point value, such as 1.23
 - on the quizzes index page, all point values should
   display correctly (i.e. 1 pt, 2 pts, 1.23 pts)

Change-Id: I52221bda7c27d92b9ed2f7bc61ff6f83ee7fa9c0
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237896
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Syed Hussain <shussain@instructure.com>
QA-Review: Jacob Burroughs <jburroughs@instructure.com>
Product-Review: Kevin Dougherty <jdougherty@instructure.com>
2020-05-20 20:43:54 +00:00
Jeremy Neander 8d12ab179b spec: remove explicit jest guidance for now
Change-Id: Ia1f1279db44bc8cc38a03a30163c9e3b41ebfa26
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/238044
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
QA-Review: Jeremy Neander <jneander@instructure.com>
Product-Review: Jeremy Neander <jneander@instructure.com>
2020-05-20 19:21:42 +00:00
Drake Harper faceb66056 Create page for displaying past announcements
Test plan:
-“Global Announcements” link is working in the account navigation
-page is populated with dismissed/past/current announcements

Fixes KNO-482

flag=past_announcements

Change-Id: I2b06247816254264a44bdb4b0a634503542851f4
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237606
Reviewed-by: Rob Orton <rob@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
2020-05-20 19:07:43 +00:00
wdransfield 7ade3bae02 Support assignment LTI 1.3 sessionless launches
Closes PLAT-5799
flag=none

Test Plan:
1. Install an LTI 1.3 tool in a root account
   The LTI 1.3 test tool works well for this
   scenario.
2. Create an assignment in a course with
   type "External Tool" pointing to the
   LTI 1.3 tool.
3. Request a sessionless launch for the
   assignment by making a GET request to
   /api/v1/courses/:course_id/external_tools/
   sessionless_launch?launch_type=assessment&
   assignment_id=:assignment_id

   Note that an access token must be send
   in this request.

4. Navigate to the url in the response in a
   browser with no Canvas session and verify
   the assignment tool is launched.

   Note that the link expires in 30 seconds

Change-Id: Iacc01f47ddf0100a64d3729834812d456df4c318
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237802
Reviewed-by: Evan Battaglia <ebattaglia@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Karl Lloyd <karl@instructure.com>
QA-Review: Xander Moffatt <xmoffatt@instructure.com>
2020-05-20 19:00:51 +00:00
Ethan Vizitei 639da32847 build operation for repairing backfill
refs CNVS-48876
flag = none

TEST PLAN:
 1) re-schedule a shard for backfill with repair
 2) failed cells should be 0 afterwards.

Change-Id: I081da9067eaccc61396b733e73fb68c2c06b307b
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/238039
Reviewed-by: Jacob Burroughs <jburroughs@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Ethan Vizitei <evizitei@instructure.com>
Product-Review: Ethan Vizitei <evizitei@instructure.com>
2020-05-20 18:50:11 +00:00
August Thornton 33dee34bf2 spec: new course search filter terms by search string
closes USERS-575

test plan:
 • specs should pass

Change-Id: Ib90397b09e2efdd5579edb41e657c7e10adbef76
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237999
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Charley Kline <ckline@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: August Thornton <august@instructure.com>
2020-05-20 18:31:59 +00:00
James Williams 0b742ad0b8 add external tool placement for submisson type selection
test plan:
* enable the "Submission Type LTI Placement" feature
* add an external tool to a course or account with a
 "submission_type_selection" placement configured
* should be able to create or edit an assignment and
 select the tool directly from the submission type
 drop down
* when selected, it should show a button
 (that currently does nothing but will be used to
 launch the tool for additional configuration)
* should be able to save the assignment with
 the tool selected, and it should stay selected
 when the saved assignment is edited again

flag=submission_type_tool_placement
closes #LA-725

Change-Id: Ic0dd44f91b61f3300c55db7e7b30d9180c7a14e2
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237534
Reviewed-by: Clint Furse <cfurse@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Clint Furse <cfurse@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
2020-05-20 18:12:57 +00:00
Davis Hyer 9dbee860b9 support empty string avatar url's
fixes KNO-490
flag=none

test plan:
  - create a user, set their avatar url to "" via console
    > user.update_attributes(avatar_image_url: "")
  - add the user to a conversation
  - fetch all conversation participants via api
    - easiest way:
      - log into your local as an admin
      - paste into your browser: http://localhost:3000/api/v1/conversations?include[]=participant_avatars
      - no curl/tokens necessary \o/
  - the user's avatar should be set to empty string, not
    "http://localhost:3000"

qa risk: low

Change-Id: I9f766e3f8ac5e5a6ef075b597e8e1f85fad956da
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237863
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Drake Harper <drake.harper@instructure.com>
QA-Review: Drake Harper <drake.harper@instructure.com>
Product-Review: Drake Harper <drake.harper@instructure.com>
2020-05-20 17:24:22 +00:00
Alex Slaughter aea6099d40 cleanup(basic_lti): Normalize Quizzes Next LTI Usage
flag = none

Fixes: QUIZ-7378

NOTE: g/226189 must be deployed to prod first

TEST PLAN:
  - Create Quizzes Next Assignment
  - Create 1 true / false question
  - Take quiz as student
  - Verify grade and submitted_at date are sent back correctly

Change-Id: I52110794bbd3ab316f2dce490869ab447e782ae3
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/226551
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: David Tan <dtan@instructure.com>
Reviewed-by: Jared Crystal <jcrystal@instructure.com>
Product-Review: Kevin Dougherty <jdougherty@instructure.com>
2020-05-19 23:51:15 +00:00
Alex Slaughter 2d11c63b32 cleanup(LTI): Cleanup Unsupported Update Function
flag = none
refs: CAL-23, QUIZ-7628

Test Plan:
  - Specs pass

Change-Id: Ifbfbbd8e8a6b7e70cdbf5f8a15b2c63c7ba3375c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237841
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Aaron Ogata <aogata@instructure.com>
QA-Review: Alex Slaughter <aslaughter@instructure.com>
Product-Review: Alex Slaughter <aslaughter@instructure.com>
2020-05-19 23:47:57 +00:00
Matthew Lemon 1b0fbd4b68 limit global announcements to active enrollments
Only students/staff who have active enrollments in the current term,
should get global announcements.

fixes KNO-399
flag=none

/ ---- ---- \
| Test Plan |
\ ---- ---- /

- In an account create a user and two sub accounts
- In the parent account navigate to Settings > Feature Options and
  enable the `Immediate notifications for global announcements` feature
  flag
- As the user navigate to /profile/communication and update the global
  announcements preference to be immediate
- In both sub accounts create a course and add a student to it, publish
  the course, and as the user accept the enrollment invitation
- In both sub accounts navigate to Settings > Announcements and create
  an announcement
- Navigate to /users/<user_id>/messages and note the existence of the
  two announcements
- In sub account B navigate to the course settings page, update the
  start and end dates to be in the past, check the `Students can only
  participate in the course between these dates` check box, and save the
  changes
- Again in both sub accounts navigate to Settings > Announcements and
  create an announcement
- Navigate back to /users/<user_id>/messages and note that there should
  only be a new message from sub account A

Change-Id: I1f1fc7949d394e39ace73adf3d895f98c1c2fcb3
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237771
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
2020-05-19 21:42:32 +00:00
Matthew Lemon 2fd60b2131 stop sending notifications on non-active channels
fixes KNO-502
flag=none

/ ---- ---- \
| Test Plan |
\ ---- ---- /

- Create a user and add several communication channels to them
- Confirm all the communication channels but one
- Create a course and add the user to it
- Update the users notifications preferences to immediate for all
  preferences and channels
- Create a notification
- As an admin navigate to /users/<user_id>/messages
- Note that there should only be a new message sent to active
  communication channels

Change-Id: Ib5937526e881ea455addb3e4a173bea19e924d34
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237910
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
2020-05-19 21:42:07 +00:00
Ethan Vizitei 4fe236c88c give auditors relations for convenience
refs CNVS-48876
flag = none

TEST PLAN:
 1) try to reset a test student
 2) auditors should not give an FK error

Change-Id: I10aeca96f9d04ebec171eb0216e185b293724452
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/236794
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
2020-05-19 20:25:24 +00:00
Ethan Vizitei 5decb828ec add a serialized fetch strategy
refs CNVS-48876
flag = none

TEST PLAN:
 1) backfill auditors
 2) log show CQL fetchs are max one ID per group
 3) throughput on cassandra ring does not spike as sharply with
higher parallelism

Change-Id: I96a24bf7273f089612ddf97fe4c038ff7cab490b
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237810
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: Ethan Vizitei <evizitei@instructure.com>
Product-Review: Ethan Vizitei <evizitei@instructure.com>
2020-05-19 20:24:51 +00:00
James Williams 992347dbd9 bump rails
test plan:
* double-check that sessions persist as before

closes #CNVS-49218

Change-Id: I75aac6b8c3641e1760f8730cc536cb0cacb03c01
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237748
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
2020-05-19 20:06:52 +00:00
Ken McGrady 2bdf118a84 Allow Non-LTI Conferences to have context info refs CAL-34
flag = calendar_conferences

Conferences created in calendar events are generic for the
conferences page. This change:

* Ties the conference name/schedule date to the calendar event
* Updates it when the calendar event is updated
* Removes LTI Conferences from the Conferences Page

Test Plan:
* Verify Conferences Page loads successfully.
* Add a calendar event with both of the following:
  * Plugin Conference (e.g. Big Blue Button)
  * LTI Conference (e.g. MS Teams)
* Verify on the Conferences Page
  * Plugin Conferences from the calendar event appear
    * They include the correct start date/time.
  * LTI Conference does not appear on the page
* Update the calendar event with different name and start times
* Verify updates propagate to the Conference Event

Change-Id: I7a73d9f626f036f66efaf9cf34d7b9ced26e134e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/236615
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Michael Brewer-Davis <mbd@instructure.com>
QA-Review: Steve Shepherd <sshepherd@instructure.com>
Product-Review: Steve Shepherd <sshepherd@instructure.com>
2020-05-19 18:58:17 +00:00
Gary Mei 3e2308fad6 fix filtering speedgrader by student group
fixes TALLY-877
flag=none

Group memberships can have moderator status set to nil, and if that was
the case, then sometimes filtering SpeedGrader by student group would
result in incorrectly forcing the selected student group to a non-empty
one when it was already non-empty to begin with. This became more
apparent on differentiated assignments assigned to one group, as the
forced setting of another group would mean SpeedGrader registered 0
eligible students to be viewed.

Test Plan
- Create 2 groups.
- Enroll students into both groups.
- Enable "Launch SpeedGrader Filtered by Student Group".
- In a rails console, pick one of the groups and set its group
memberships' moderator state to nil.
  `group.group_memberships.update_all(moderator: nil)`

- Create an assignment, assigned only to that group.
- Filter SpeedGrader by that group.
- Launch SpeedGrader and verify it loads with all the students in that
group.

Change-Id: Ie196b18c3001058227e1456bc856fd17ccdc8d2d
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237273
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Product-Review: Jonathan Fenton <jfenton@instructure.com>
Reviewed-by: Adrian Packel <apackel@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
2020-05-19 17:56:30 +00:00
Charley Kline 781fccc9b1 Allow use of mobile login QR codes to be disabled
Closes USERS-559
flag=none

For some customers with MFA enabled, allowing a mobile login
via a QR code is a security issue since that authentication
will not use MFA.

Since the feature flag for QR login was forced on at the top
level, there is no way for customers to turn it off themselves.

So, let's remove the FF entirely, and instead create an account
setting (default true) for allowing mobile QR login. Then a
customer account admin can turn it off if they choose.

This commit leaves a bit of a hole in that it is still possible
to manually issue a POST request to get a QR code. But that
code is in the instructure_misc_plugin repo so I will have to
take care of that in a different commit once this one merges to
canvas_lms.

Test plan:
* You will need instructure_misc_plugin installed and have
  gone through the steps to set up an account for QR login
  (see the instructions in g/232750 if you have not already
  done this)
* Verify that the "QR for Mobile Login" feature flag is gone
* Go to account settings
* Verify that the new setting "Allow logins to the mobile apps
  via the use of QR codes" appears (it's right under the MFA
  setting since that seemed to be the most relevant place) and
  that it is checked (enabled)
* Verify that mobile QR login works as it always has

* Now uncheck that setting and "Update Settings" way at the bottom

* Now the "QR for Mobile Login" link should no longer appear in
  the account tray
* Try navigating by hand to /profile/qr_mobile_login ... that
  should now 404

Change-Id: Ic513870b00bf1b574bc00d008b4e00a31541bc8a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237658
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Nick Houle <nhoule@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Charley Kline <ckline@instructure.com>
2020-05-19 17:21:03 +00:00
wdransfield cd1a9655f5 Add root_account_id to assignment_groups
Closes PLAT-5555
flag=none

Test Plan
Test Plan:
- Verify migrations run
- Verify a root_account_id can be set on
  an AssignmentGroup record
- Verify AssignmentGroup records always
  live on the same shard as their root
  accounts

Change-Id: Ief704081c8d65b23950bcdb6b3d0d6d3e3bcb7f2
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/236855
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Weston Dransfield <wdransfield@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
Reviewed-by: Clint Furse <cfurse@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
2020-05-19 16:52:45 +00:00
Davis Hyer ff24f02129 add panda unicycle to confetti
fixes KNO-487
flag=none

test plan:
  - ensure the confetti flag for assignments is on
  - visit student view of an assignment
    - /courses/:id/assignments/:id?confetti=true
  - refresh until you see the unicycle
  -- OR --
  - realize this is small and :rubberstamp:

qa risk: low

Change-Id: I6cbb87fa6c62398cd2a3b18f56f5d76e013aac11
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237816
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Matthew Lemon <mlemon@instructure.com>
QA-Review: Matthew Lemon <mlemon@instructure.com>
Product-Review: Matthew Lemon <mlemon@instructure.com>
2020-05-19 16:39:09 +00:00
Ethan Vizitei 578bb1cc34 migrate ALL auditors to partitions
Change-Id: I66f79f6d4fc5d3e33f0e6bc170b023d3ecc45cad
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237825
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jacob Burroughs <jburroughs@instructure.com>
QA-Review: Ethan Vizitei <evizitei@instructure.com>
Product-Review: Ethan Vizitei <evizitei@instructure.com>
2020-05-19 14:34:17 +00:00
Rob Orton 758b072cd9 add date parse helper
refs KNO-447

test plan
 - specs should pass

Change-Id: I192621bb9d5e7e3d7f69fc1deeab8a21822b4bfc
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237718
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Drake Harper <drake.harper@instructure.com>
QA-Review: Drake Harper <drake.harper@instructure.com>
Product-Review: Drake Harper <drake.harper@instructure.com>
2020-05-19 13:55:36 +00:00
Charley Kline 0c21111e77 Make type filter searchable on courses main list
Closes USERS-515
flag=none

This makes the "Filter by term" select box on the main courses
page searchable by typing into the box to narrow down the
choices. Similar functionality is already present in the
corresponding selections in the New Course modal.

Because this selection dropdown includes groups, it necessitated
a complete rewrite of the SearchableSelect component so that it
works a little more like CanvasSelect in handling its children.
It no longer depends on CanvasAsyncSelect.

SearchableSelect was almost completely rewritten from scratch so
I would recommend just reviewing the new module an ignoring the
diff from the old one. Hopefully it is more generally useful now
like CanvasSelect is.

In the course of writing tests for this, I discovered that all
our supported browsers implement Array.prototype.flat(), so it
is safe to use. What does NOT implement it, however is Jest 🤦
so I also implemented them as polyfills in the jest-setup.js
and now everyone can use them in the future.

Test plan:
* Have a bunch of terms
* Go to /accounts/default
* Click on "Filter by term" to bring up the selection dropdown
* It should work just like it used to to filter the courses list
* Now try typing in the box... it should filter the available
  selections in the dropdown while you type
* If no terms match what you're typing, the dropdown should go
  away altogether and the select box itself should get a red
  highlight with red error text
* A11y should be okay

Change-Id: I3da8dd681645f83f858996fe42030ad400eada01
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237585
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Matt Meservey
QA-Review: August Thornton <august@instructure.com>
2020-05-19 01:24:11 +00:00
wdransfield 3dc05d1873 Add root_account_id to grading_standards
Closes PLAT-5545
flag=none

Test Plan:
- Verify migrations run
- Verify a root_account_id can be set on a
  GradingStandard record
- Verify GradingStandard records always live on the same shard
  as their root account

Change-Id: I82f4ec0f897e5116d6d7552816cdd9c83af4e117
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/235206
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Evan Battaglia <ebattaglia@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
QA-Review: Weston Dransfield <wdransfield@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
2020-05-18 22:19:16 +00:00
wdransfield 301df47a40 Add root_account_id to custom_gradebook_column_data
Closes PLAT-5542
flag=none

Test Plan:
- Verify migrations run
- Verify a root_account_id can be set on a
  CustomGradebookColumnDatum record
- Verify CustomGradebookColumnDatum records always live on the same shard
  as their root account

Change-Id: I8f04212c63564ed22f86207553c08b1069065974
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/235222
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Evan Battaglia <ebattaglia@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
QA-Review: Weston Dransfield <wdransfield@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
2020-05-18 22:18:40 +00:00
wdransfield f1601088c5 Add root_account_id to attachment_associations
Closes PLAT-5558
flag=none

Test Plan:
- Verify migrations run
- Verify a root_account_id can be set on a
  AttachmentAssociation record
- Verify AttachmentAssociations always live on the same shard
  as their root account

Change-Id: I4bbb084e0f9bb22bcf484097b018d8f8e529151e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/234751
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Evan Battaglia <ebattaglia@instructure.com>
Reviewed-by: Clint Furse <cfurse@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
QA-Review: Weston Dransfield <wdransfield@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
2020-05-18 22:18:11 +00:00
wdransfield af1d8bc70d Add root_account_id to score_statistics
Closes PLAT-5551
flag=none

Test Plan:
- Verify migrations run
- Verify a root_account_id can be set on a
  ScoreStatistic record
- Verify ScoreStatistic always
  live on the same shard as their root account

Change-Id: I54e677ac008603e859dd169a68d4f7521d13e70e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/235015
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Evan Battaglia <ebattaglia@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
QA-Review: Weston Dransfield <wdransfield@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
2020-05-18 22:17:45 +00:00
wdransfield f399da8db8 Add root_account_id to late_policies
Closes PLAT-5546
flag=none

Test Plan:
- Verify migrations run
- Verify a root_account_id can be set on a
  LatePolicy record
- Verify LatePolicy records always live on the same shard
  as their root account

Change-Id: I135e3312cdb7836b916a509822840a701b8b402e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/235204
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Evan Battaglia <ebattaglia@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
QA-Review: Weston Dransfield <wdransfield@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
2020-05-18 22:17:15 +00:00
wdransfield 99974c994d Add root_account_id to scores
Closes PLAT-5550
flag=none

Test Plan:
- Verify migrations run
- Verify a root_account_id can be set on a
  Scores record
- Verify Scores always
  live on the same shard as their root account

Change-Id: I9db823f3aff6c4f6964151eaeb6f8a9bac5ebba5
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/235017
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Evan Battaglia <ebattaglia@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
QA-Review: Weston Dransfield <wdransfield@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
2020-05-18 22:16:00 +00:00
wdransfield 06e5f05707 Add root account id to discussion_topic_participants
Closes PLAT-5735
flag=none

Test Plan:
- Verify migrations run
- Verify a root_account_id can be set on a
  DiscussionEntry record
- Verify DiscussionEntry records always live on
  the same shard as their root account

Change-Id: Ie1350142e3cb42835e3674e997e96dc9dcc4adf5
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/236291
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Evan Battaglia <ebattaglia@instructure.com>
Reviewed-by: Clint Furse <cfurse@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Weston Dransfield <wdransfield@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
2020-05-18 22:15:27 +00:00
wdransfield 2094464a88 Add root_account_id to submission_comments
Closes PLAT-5553
flag=none

Test Plan:
- Verify migrations run
- Verify a root_account_id can be set on a
  SubmissionComment record
- Verify SubmissionComments always live on the same shard
  as their root account
- Create a SubmissionComment and verify the root_account
  association is populated

Change-Id: I8493191c94c872b1d378fdb231f4cbf17e3f8097
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/235012
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Evan Battaglia <ebattaglia@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
QA-Review: Weston Dransfield <wdransfield@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
2020-05-18 22:14:40 +00:00
Ethan Vizitei 988ae77f14 migrate root_partition auditors data
refs CNVS-48876
flag = none

TEST PLAN:
 1) migrate database
 2) auditors root partitions should be empty
 3) auditors child partitions should have data

Change-Id: I12ef05f882d7cd28261f3d5230de97ce032fd6d7
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237776
Reviewed-by: Jacob Burroughs <jburroughs@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Ethan Vizitei <evizitei@instructure.com>
Product-Review: Ethan Vizitei <evizitei@instructure.com>
2020-05-18 21:52:34 +00:00
Joe Hoag 176d53f887 spec: Add mobile provider state for conversations
spec: Added 'mobile user with conversations' provider state.

closes MBL-14235

Test Plan: Verify that new mobile Pact conversations
api tests pass against the new provider state.

Change-Id: If7daa1348a32896e48c497f06e7c079e534cc036
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237740
Reviewed-by: August Thornton <august@instructure.com>
Product-Review: August Thornton <august@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Joseph Hoag <jhoag@instructure.com>
2020-05-18 21:52:21 +00:00
Pat Renner 0a3c81bded filter out students in LMGB for restricted teachers
closes OUT-3506

flag=limit_section_visibility_in_lmgb

test-plan:
- Create at least two sections in a course
- Enroll one (different) student in each section
- Enroll a teacher into one of those sections and enable the
"limit this user to only see.." option
- Enable the `limit_section_visibility` flag
- Ensure the LMGB feature flag is enabled for the course
- As the teacher, navigate to the LMGB
- Ensure that only one student is visible and the student in the
alternate section is not listed
- Ensure in the section dropdown in the top right that only the
section that the teacher has access to is listed
- Disable the `limit_section_visibility` flag
- Navigate back to the LMGB and confirm that you see both students
and can access the gradebook for each section

Change-Id: I01161007ea6becfc4959b3d862c6e38c1d74de38
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237622
Reviewed-by: Augusto Callejas <acallejas@instructure.com>
Reviewed-by: Michael Brewer-Davis <mbd@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Brian Watson <bwatson@instructure.com>
Product-Review: Jody Sailor
2020-05-18 21:50:44 +00:00
S. Jacob Powell 505d00c7a5 Upload rspec and selenium events to splunk
test plan:
see them on splunk, build passes

fixes: CCI-383

flag = none

Change-Id: I7aa85ad4b3ec767314007276d0fd094c31210904
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237760
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Rex Fleischer <rfleischer@instructure.com>
Reviewed-by: James Butters <jbutters@instructure.com>
QA-Review: Jacob Powell <spowell@instructure.com>
Product-Review: Jacob Powell <spowell@instructure.com>
2020-05-18 21:06:01 +00:00
Ethan Vizitei 77347a1d6c bulk_insert to correct partition
refs CNVS-48876
flag = none

TEST PLAN:
 1) backfill auditors
 2) bulk records should end up in
    correct partitions of auditors tables

Change-Id: I40aaf0587723bab35bc86c695939d529c7a9d624
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237747
Reviewed-by: Jacob Burroughs <jburroughs@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Ethan Vizitei <evizitei@instructure.com>
Product-Review: Ethan Vizitei <evizitei@instructure.com>
2020-05-18 20:36:28 +00:00