This was discovered in QA for a previous commit. If a course has over
100 owners, the sync fails, and then we run a partial sync, we can run
into the case where the partial sync tries to add 20 owners but many if
not all or duplicates. If there are >= 81 owners, Microsoft won't
realize this but instead say "there are too many users". Instead of
trusting this message, we should fall back to the batch API -- because
it adds each user individually, it will ignore any that are already in
the group instead of saying there isn't room.
Test plan:
- Have a Microsoft group with >= 82 owners
- From a rails console, get the graph service object and then get a list
of 20 owners in the group.
def all_owners_ids(gs, group_id)
[].tap do |list|
gs.list_group_owners(group_id) do |slice|
list.concat slice.map{|u| u['id']}
end
end
end
group = MicrosoftSync::Group.first
gs = group.syncer_job.steps_object.send:graph_service
owners = all_owners_ids(gs, group.ms_group_id).take(20)
gid = group.ms_group_id
- Remove one of the owners from the group:
one = [owners.last]
gs.remove_group_users_ignore_missing(gid, owners: [owners.last])
- Wait a couple seconds (API is eventually consistent) and check that
the user is no longer in the group:
all_owners_ids(gs, gid).include?(owners.last)
- Add the 20 owners -- 19 of which should already be in the group:
gs.add_users_to_group_ignore_duplicates(gid, owners: owners)
- The function should return a list of the 19 duplicates. You should see
it log that it first tried the 'patch' endpoint and fell back tothe
'post $batch' endpoint.
- Wait a couple seconds and check that the user was added back in.
gs.list_group_owners(gid).map{|g| g['id']}.include?(owners.last)
refs INTEROP-6805
flag=microsoft_group_enrollments_syncing
Change-Id: I4a3dd47edb62b29ba8278182b37894b28604ceda
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276318
Reviewed-by: Sean Scally <sean.scally@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Evan Battaglia <ebattaglia@instructure.com>
Product-Review: Evan Battaglia <ebattaglia@instructure.com>
fixes VICE-2162
flag=none
test plan:
- enable the discussion redesign flag
- enroll a student in a course with a discussion topic
- as that student, make a parent and child post
- the reply/quote buttons should show up correctly
- conclude that user's enrollement
- Enrollment.find_by(user_id: <uid>, course_id: <cid>).conclude
- refresh the page
- the reply/quote buttons should no longer show up
qa risk: low
Change-Id: Ib1bcde8d89be55702bbf8e8668573a69bca8d476
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276441
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Omar Soto-Fortuño <omar.soto@instructure.com>
QA-Review: Omar Soto-Fortuño <omar.soto@instructure.com>
Product-Review: Omar Soto-Fortuño <omar.soto@instructure.com>
Test plan:
- have a course with > 100 owners
- try to enable sync on it
- check copy is updated in the two places
refs INTEROP-6805
flag=microsoft_group_enrollments_syncing
Change-Id: I911c6ca6998918a3a49cbbbb2473566800ea2d60
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276483
Product-Review: Karl Lloyd <karl@instructure.com>
Reviewed-by: Sean Scally <sean.scally@instructure.com>
QA-Review: Evan Battaglia <ebattaglia@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
test plan:
- in a course with a published pace plan,
when a new student is enrolled, a job should be enqueued
to publish the pace plan (in five minutes, by default)
- if more students are enrolled within this five-minute period,
the pace plan republish job should be pushed back
(so we don't duplicate a lot of work when enrollments are
added in a batch)
- pace plan update should also happen if a student enrollment's
start_at changes
- pace plan updates should not happen:
- if pace plans are turned off in the course
- if the course has no pace plan
- if the course pace plan is unpublished
- if a student wish a published a pace plan override has a changed
start_at, her pace plan override should be republished
and not the course pace plan
flag = pace_plans
closes LS-2659
Change-Id: I3e75ca7c63098dafae34a221d0958bb4576ca314
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276435
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Nate Armstrong <narmstrong@instructure.com>
QA-Review: Nate Armstrong <narmstrong@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
closes OUT-4823
flag=improved_outcomes_management
Test plan:
- all tests in index.test.js pass
- jenkins passes
Change-Id: Ia5a9a9049af885379d1ee63fb4d8bcf5a7b7630e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/275988
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Brian Watson <bwatson@instructure.com>
Reviewed-by: Marcus Pompeu <marcus.pompeu@instructure.com>
QA-Review: Brian Watson <bwatson@instructure.com>
Product-Review: Brian Watson <bwatson@instructure.com>
refs VICE-2075
flag=discussions_reporting
test plan:
- Go to a Discussion Entry in the Isolated View.
- Click on the kebab menu on the parent.
- Click on Report and select a type.
- Click on Submit.
- Click again on the kebab menu.
- Should say Reported instead of Report.
qa risk: low
Change-Id: I4b12dc028afb40bc495faf5a6b1936c80a2cc8ae
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276478
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>
refs INTEROP-6805
flag=microsoft_group_enrollments_syncing
Test plan:
- have a course with one owner
- remove an owner and add a different owner. recall that enrollments
have to be in an "active" workflow_state to count.
- run a partial sync (`group.syncer_job.run_synchronously :partial`)
- sync should fail, but it should still add the new owner. Check in the
Microsoft admin console. Both owners will exist in the group.
- run a full sync (`group.syncer_job.run_synchronously`). Check in the
MS admin console. The old owner should now be removed.
- Repeat but run a full sync instead of a partial sync the first time.
Change-Id: I0cce5a50a51f40ed36f5eea928638c4782b31937
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276019
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Michael Ziwisky <mziwisky@instructure.com>
Product-Review: Michael Ziwisky <mziwisky@instructure.com>
Reviewed-by: Michael Ziwisky <mziwisky@instructure.com>
Also fix default special_cases ([] instead of {}) in graph_service/http.rb
The diff http.rb doesn't show nicely here, try:
diff --ignore-space-change \
<(git show HEAD^:lib/microsoft_sync/graph_service_http.rb) \
<(git show HEAD:lib/microsoft_sync/graph_service/http.rb)
refs INTEROP-6805
flag=microsoft_group_enrollments_syncing
Test plan:
- run through a sync, make sure it still works
Change-Id: I12d4339c0c1a50417ed23f9476ca12b1b9f711a4
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/275802
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Michael Ziwisky <mziwisky@instructure.com>
QA-Review: Michael Ziwisky <mziwisky@instructure.com>
Product-Review: Michael Ziwisky <mziwisky@instructure.com>
closes INTEROP-6805
flag=microsoft_group_enrollments_syncing
Test plan:
- note: this is closely based on test plan for last commit
- enable sync for a course
- add 101 teachers that have users in our test tenant. I
made a bunch of test users to use owners you can use. What I did was
generate the list of UPNs with
'echo evantest{001..101}deleteafternov2021@...' and add them to my
course)
- Remember the enrollments have to be all active and the communication
channels 'registered', so I did
`CommunicationChannel.update_all(workflow_state: 'active')`
followed by
`ms_group.course.enrollments.map{|e| e.update workflow_state: 'active'}`
which will add the users to the PartialSyncChanges table.
- run a partial sync (e.g.
`group.syncer_job.run_synchronously :partial`)
- in the course settings check the Microsoft Sync integration, it should
be disabled. Note that it won't show any error because errors are not
shown when the sync is disabled, but trying to enable it will show the
error shown when trying to enable a course with too many enrollments
(added in a previous commit)
- in a console, check that last_error is set on the group
- remove the 'check_for_enrollment_limits' before_action hook in
app/controllers/microsoft_sync/groups_controller.rb
- also remove the 'rescue Errors::OwnersQuotaExceeded' block on
lib/microsoft_sync/syncer_steps.rb:263 so we can be sure we are testing
the step_full_sync_prerequisites code path
- enable the sync again
- run a full sync
- check the course settings page again. Again the sync should be
disabled. And last_error should should have the "too many teachers"
error message
Change-Id: Ied4faf7f997040e224c1cbdcdb7f0c5d24c4e02e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/274953
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Michael Ziwisky <mziwisky@instructure.com>
Product-Review: Michael Ziwisky <mziwisky@instructure.com>
Reviewed-by: Michael Ziwisky <mziwisky@instructure.com>
closes LS-2721
flag = pace_plans
Test plan:
- Enable Pace Plans feature flag and course setting
- Go to Pace Plans in a course with at least one module item
- Make changes to the durations or settings in the pace plan
- Try to navigate to a different part of the course or reload the
page
- Expect to see a browser warning pop-up asking if you're sure you
want to leave
- Dismiss the browser warning
- Make some changes and then click the "Cancel" to reset back to the
last published state
- Navigate or refresh the page
- Expect to NOT see a browser warning when there are no unpublished
changes
Change-Id: Ibcd0fe9db983e892b80ca8866675f0844ed811cd
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276418
Reviewed-by: Isaac Moore <isaac.moore@instructure.com>
QA-Review: Isaac Moore <isaac.moore@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Peyton Craighill <pcraighill@instructure.com>
refs MAT-465
flag=rce_buttons_and_icons
Test Plan:
- Navigate to an RCE instance
- Open the buttons and icons tray
to create a new button
- Verify the color pickers work as before
- Verify the bottom of the tray has an
empty image preview (red line through a box)
with text reading "None Selected"
Change-Id: If45027317902b8be7e529da69c2a51596134f839
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/274679
Product-Review: David Lyons <lyons@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Gary Mei <gmei@instructure.com>
QA-Review: Gary Mei <gmei@instructure.com>
Unskipped missing items test and made it a little more relevant. Also
fixed items to say subject instead of course.
Closes LS-2754
Test Plan: passes Jenkins
Change-Id: Ib9949877007d4c9d1a2edc65fa05a4d9be7f88c5
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276473
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jeff Largent <jeff.largent@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Product-Review: Robin Kuss <rkuss@instructure.com>
app except for app/models, config
all manual. many cases I removed the unused argument entirely, and
updated callers to not send it
there were also a few "override this method and raise an exception so
you don't use it cause rails is changed" methods that were for old
rails versions that I just removed completely
Change-Id: I071a5a8266801427c5c7a157fefe14850495e620
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276446
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
This change adds a new `locked_for_user` property to the Observer Alert
API to indicate whether or not a particular alert's context is "locked"
(e.g., invisible) for the calling observer. This can be set to `true` for
a number of reasons, but most commonly, the deletion of the content or
the conclusion of the course.
closes LS-2668
flag=none
test plan:
- create an observing enrollment for a student enrolled in a course
- using the API, as an observer, create an observer alert threshold for
a high assignment grade for your student (see the bottom of the commit
message for an example request)
- as a teacher, enter a grade for the student in the course above the
value you set in your threshold
- call the `/api/v1/users/self/observer_alerts/<student_id>` endpoint and
verify an alert appears, and `locked_for_user` is false
- set the course end date to the past, and restrict students from viewing
the course after the end date
- call the API again, and verify `locked_for_user` becomes true
- revert your change to the course end date
- call the API again, and verify `locked_for_user` becomes false
- delete the assignment
- call the API again, and verify `locked_for_user` becomes true again
### Example threshold creation request:
```
curl --request POST \
--url http://<canvas URL>/api/v1/users/self/observer_alert_thresholds \
--header 'Authorization: Bearer <your token here>' \
--header 'Content-Type: application/json' \
--data '{
"observer_alert_threshold": {
"alert_type": "assignment_grade_high",
"threshold": "90",
"user_id": <your student's user id>
}
}'
```
Change-Id: Ifc0775c70a0e0cb6bf66c5e60968013a91661eb9
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276187
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Nate Armstrong <narmstrong@instructure.com>
QA-Review: Nate Armstrong <narmstrong@instructure.com>
Product-Review: Isaac Moore <isaac.moore@instructure.com>
fixes LS-2772
flag=pace_plans
test plan:
- Create a course with a module containing a variety of things. Make sure
some are graded assignments like a graded discussion and some are not
graded like a practice quiz or a wiki page.
- Go to the pace plans index and verify that the module items shown only
include assignments from the modules that can be graded.
Change-Id: I32d95c15489f15d68e132f7f012ba2e76d88d76a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276429
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Eric Saupe <eric.saupe@instructure.com>
Copying the VS Code config to these docs
exposes them to open-source users
flag=none
Test Plan:
New documentation is clear and error-free
Change-Id: Iaa35b165677bdaf1b68ad7ce137911a7c345f9ae
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276436
Reviewed-by: Jon Scheiding <jon.scheiding@instructure.com>
QA-Review: Jon Scheiding <jon.scheiding@instructure.com>
Product-Review: Jon Scheiding <jon.scheiding@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
fixes LS-2723
flag=pace_plans
test plan:
- Creating and publishing pace plans for courses, sections, and users
should create all relevant assignment overrides with correct dates
- Pace plans frontend should continue to work as expected
- Pace plans should no longer have the start_date column but should
return a start_date for the relevant context's start_at date. For example,
if the pace plan is for the user then the start_date will be the start_at
date for the user's enrollment. Course section pace plans return the
course_section.start_at. The fallback for all start_at is the course's
start_at date.
Change-Id: Iffce86bd0eca65a4f51db5f88e2b35833b7bc1f1
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276317
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Eric Saupe <eric.saupe@instructure.com>
flag=none
Test Plan:
New documentation is clear and error-free
Change-Id: Ie01dd6247dedc7b72ed84214932359cc14c39f09
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276421
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jon Scheiding <jon.scheiding@instructure.com>
QA-Review: Jon Scheiding <jon.scheiding@instructure.com>
Product-Review: Jon Scheiding <jon.scheiding@instructure.com>
fixes VICE-2100
flag=react_discussions_post
test plan:
- Create a discussion;
- as multiple students create a number of posts
- as a student that has not accessed the discussion
go to the discussion;
- in the discussion search, search for a student name or a term
unique to a discussion post;
- only discussion entries related to the search shold be rendered
qa risk: low
Change-Id: Ibde8fe1a03cc982953c4314b8290f8a13dc13c4c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/275444
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Product-Review: Caleb Guanzon <cguanzon@instructure.com>
Product-Review: Matthew Lemon <mlemon@instructure.com>
Reviewed-by: Matthew Lemon <mlemon@instructure.com>
closes EVAL-1926
flag=none
Test plan:
- Check that the flag appears as a site-admin flag
Change-Id: I095ae73faabf37d12d2ee0e0c0efb8d2701c47e0
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276414
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Eduardo Escobar <eduardo.escobar@instructure.com>
Reviewed-by: Dustin Cowles <dustin.cowles@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
QA-Review: Adrian Packel <apackel@instructure.com>
QA-Review: Kai Bjorkman <kbjorkman@instructure.com>
Product-Review: Syed Hussain <shussain@instructure.com>
The H1 tags for k5dashboard and K5 Course are now aria-hidden if the
user is in observer mode, the H1 to be read by the Screen Readers is
now part of the JSX to be rendered if the observee picker will be
shown
fixes LS-2728
flag = k5_parent_support
Test plan:
1- Go to the k5 dashboard as an observer with some linked students
2- Using VoiceOver navigate to the H1 using Control+Option+Cmd+H,
and expect the focused element be above the student picker
3- As observer, open a course with several linked students enrolled
in that course and repeat step 2
Change-Id: I233c3732246b41b90d59c9ab9ee1490e0bf1b64a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276204
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jackson Howe <jackson.howe@instructure.com>
QA-Review: Jackson Howe <jackson.howe@instructure.com>
Product-Review: Jonathan Guardado <jonathan.guardado@instructure.com>
to use when porting the k5 observer picker into classic canvas.
closes LS-2647
flag = observer_picker
Change-Id: I2db666fe54d31e9493e97d7e31f69a1df7165fbb
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276321
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jeff Largent <jeff.largent@instructure.com>
QA-Review: Jackson Howe <jackson.howe@instructure.com>
Product-Review: Jackson Howe <jackson.howe@instructure.com>
closes EVAL-2043
flag=assignments_2_student
Test plan:
With the FF ON:
1. As a teacher, create an assignment with a rubric
2. As a student:
- go to the assignment and see that the rubric is open by default
- submit an attempt
- start a new attempt and see that the rubric is open by default
3. As a teacher, grade an attempt
4. As a student, go to the attempt and see the rubric is open by
default with the assessments
Change-Id: I48d06e5e711392133e376369987d0bc8ea75cb44
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276163
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Aaron Shafovaloff <ashafovaloff@instructure.com>
Reviewed-by: Kai Bjorkman <kbjorkman@instructure.com>
QA-Review: Kai Bjorkman <kbjorkman@instructure.com>
Product-Review: Syed Hussain <shussain@instructure.com>
refs FOO-2512
flag=none
TEST PLAN:
1) specs pass
2) get system into a state with one
orphaned job that cannot be rescheduled
3) the pool does NOT enter an unresponsive state as it tries to
abort that job over and over
Change-Id: I22d1c3600e3a6471bd6c9a265d90b91616ac52c1
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276384
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>
refs VICE-2075
flag=discussions_reporting
test plan:
- Go to a Discussion Entry in the main topic page.
- Click on the kebab menu.
- Click on Report and select a type.
- Click on Submit.
- Click again on the kebab menu.
- Should say Reported instead of Report.
qa risk: low
Change-Id: I2aae2f9ba45e7f084674c70eed8d5b91117cb77e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276164
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>
Introduces the integration_id value for users into the GraphQL user
type, serving it through user connections similarly to sis_id. This
value is used by some schools to connect with 3rd party tools, so this
addition will ensure full compatibility for tools looking to upgrade
from the REST API to the GraphQL API.
The permissions for this data point mirror the SIS data ("Only included
if the user has permission to view SIS information."), so it is only
displayed for users that have SIS data permissions, just like with the
REST API.
Fixes#1918
flag=none
Test Plan:
- Configure an integration_id value for one or more users.
- Run a GraphQL query (either through cURL, Postman, or GraphiQL) that
includes user nodes, with each of the following setups:
- Admin with SIS permissions
- Admin without SIS permissions
- Instructor with SIS permissions
- Instructor without SIS permissions
- Observe that the correct integration_id appears when running the query
as a user with SIS permissions, and null when run as a user without
permissions.
Example query:
```
query LastActivityQuery {
course(sisId: "UNIV-FRSH101-600-202102") {
sisId,
enrollmentsConnection {
nodes {
user {
sisId,
integrationId
},
lastActivityAt,
updatedAt
}
}
}
}
```
Change-Id: Ifce26e7105cb0b7461da7d4013c91242cd76188e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/271111
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Mysti Lilla <mysti@instructure.com>
QA-Review: Simon Williams <simon@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
so that it defaults to python3
Change-Id: I6de13d3937cb671dac0cd10e9c96dbc82e9bd96c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276320
Reviewed-by: Jacob Burroughs <jburroughs@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
closes OUT-4750
flag=improved_outcomes_management
Test plan:
- Enable Improved Outcomes Management FF
- Go to Account > Outcomes
- Click on Create New Group link in TreeBrowser
- Verify that the background color and hover color of the
expanded Create New Group are white
- Turn on high contrast mode, retest and verify that
results are the same
Change-Id: Ie7b2d81a6c79f74e9fa47ba167e47e9a38839bdc
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276178
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Kyle Rosenbaum <krosenbaum@instructure.com>
QA-Review: Brian Watson <bwatson@instructure.com>
Product-Review: Kyle Rosenbaum <krosenbaum@instructure.com>
Move course notification preference code into shared package so that
it can be used by both the account_notification_settings and
course_notification_settings features.
refs LS-2763
flag = none
Test plan:
- Open /profile/communication and expect to be able to change
preferences for account and courses
- Open /courses/<id>?view=notifications and expect to be able to
change course notification preferences
Change-Id: I092e1dabac092b3768a97cf7bf527ebe0a79e670
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276254
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Nate Armstrong <narmstrong@instructure.com>
QA-Review: Nate Armstrong <narmstrong@instructure.com>
Product-Review: Nate Armstrong <narmstrong@instructure.com>
Also make the planner overrides checkbox read-only for observers.
closes LS-2722
flag = k5_parent_support
Test plan:
- Open up the schedule tab on k5 dashboard as an observer with
several linked students
- Switch between students, expect to see one network request each
time for missing_submissions and expect the observed student's
missing assignments to appear
- As an obsever, expect to see the overrides checkbox reflect the
student's state, but read-only
- Expect the planner to still work for k5 and classic students
Change-Id: Ife22e5361c6c5516506db5c908c05fff0f65bfab
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276061
Reviewed-by: Jeff Largent <jeff.largent@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Product-Review: Peyton Craighill <pcraighill@instructure.com>
fixes LS-2764
flag=pace_plans
test plan:
- Create a pace plan for a course with module items and a student
enrolled
- Publish the course pace plan
- Verify the overrides have the expected dates
- Create a pace plan for the user with a different start date than the
course pace plan
- Publish the student pace plan
- Verify the overrides have changed for the student to the expected dates
- Republish the course pace plan
- Verify the overrides for the student pace plan have not changed
Change-Id: I16c8c04bb72aaccab14f296013eda475e8c2c6e4
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276167
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Nate Armstrong <narmstrong@instructure.com>
QA-Review: Nate Armstrong <narmstrong@instructure.com>
Product-Review: Eric Saupe <eric.saupe@instructure.com>
There's a good chance that parsing the user's typing in the
date or time fields may result in incorrect results, but
it's always been that way and way beyond the scope of this
ticket.
closes LS-2740
flag=none
test plan:
- go to /calendar and create an event
- edit the event and save, expect the event to have the
correct start and end times you assigned
- change which calendar
- change a start or end time
- change the date using the picker
- change the date by typing in the text box
This doesn't really belong in this commit, but it's
bugged me forever that when the help text appears
below the time box, alignment gets all wonky.
- edit the event and put cursor into the start time box
> when the text below the box shows the parsed time,
the time boxes stay in aligned
- edit an assignment
- edit the due date as many different ways you can think of
> expect it to save the correct date and time
Change-Id: Ia86ae6feac1f1e93f1ab9b99213f6018ca672ab8
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276168
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Charley Kline <ckline@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
since we've started taking advantage of some ruby 2.7 only features,
in particular filter_map
Change-Id: Ie5f0e4f94018080c5c8cd2effff1eb0f234ea955
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276268
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Aaron Ogata <aogata@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
refs VICE-2174
flag=discussions_reporting
Test Plan:
- turn discussion reporting ff on
- go to http://localhost:3000/graphiql
- run a query similar to the example below
> should see studentReporting as true
- go to the discussions landing page in the course
you queried against
- click the settings cog in the top right
- change student reporting to be false (unchecked)
- run the query again
- studentReporting should be false
Example Query: (remember to update the _id for the discussion)
query MyQuery {
__typename
legacyNode(_id: "23", type: Discussion) {
... on Discussion {
id
_id
title
permissions {
studentReporting
}
}
}
}
Change-Id: Ibbbae7e546efdcbc52901a38bcf1e606f3881055
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276278
Reviewed-by: Omar Soto-Fortuño <omar.soto@instructure.com>
QA-Review: Omar Soto-Fortuño <omar.soto@instructure.com>
Product-Review: Omar Soto-Fortuño <omar.soto@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Introduces a filter for submissionsConnection that will filter results
based on the submissions table's updated_at column. This mirrors the
functionality of submittedSince and gradedSince, but serves to find
results where the assignment grade has been changed or the submission
was changed (e.g. resubmitted).
closes#1934
flag = none
Test Plan:
- Use a collection of assignment submissions with previous timestamps
for gradedAt, submittedAt, updatedAt
- Update one submission by grading it
- Update a different submission by re-submitting it
- Run a GraphQL query (either through cURL, Postman, or GraphiQL) to
verify that both edited items are included in the results, and nothing
else. Example query:
```
query AssignmentGradesQuery {
course(sisId: "UNIV-FRSH101-600-202103") {
sisId
submissionsConnection(filter: {updatedSince: "2021-08-09T10:47:58-07:00"}) {
nodes {
assignment {
_id
}
grade
user {
sisId
}
updatedAt
submittedAt
gradedAt
enteredScore
}
}
}
}
```
Change-Id: I0917daa80b3ab7d8ba7744960f951948e655dfbe
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276246
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
Reviewed-by: Adrian Packel <apackel@instructure.com>
QA-Review: Spencer Olson <solson@instructure.com>
Product-Review: Syed Hussain <shussain@instructure.com>
fixes LS-2752
flag = none
Test plan:
- Add a link like https://instr-ucture.zoom.us/j/9585021282 (with a
hyphen) to a k5 subject calendar event location or description
- Visit the planner
- Expect to see a join button
Change-Id: Iac43b8bc15eada834bdc71054e3f239d253e4aee
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276272
Reviewed-by: Robin Kuss <rkuss@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Jackson Howe <jackson.howe@instructure.com>