Commit Graph

688 Commits

Author SHA1 Message Date
Cody Cutrer 180267af84 include outer scope conditions in User.name_like query
fixes CORE-616

it's still not super fast, but at least it's usable

Change-Id: I55b6626b0c4f8d6c32f3466468d72bdcb5e87a3d
Reviewed-on: https://gerrit.instructure.com/132225
Tested-by: Jenkins
Reviewed-by: James Williams  <jamesw@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
2017-11-08 18:24:08 +00:00
Steven Burnett 26b1886cf1 allow practice quizzes that have been graded
fixes ADMIN-102

Test Plan:
- Create a practice quiz
- Take a practice quiz
- Go to planner
- Notice it shows

Change-Id: I42d20ebf33f50678a40a012bdac4be2f8e92b1f5
Reviewed-on: https://gerrit.instructure.com/132022
Tested-by: Jenkins
Reviewed-by: Dan Minkevitch <dan@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Steven Burnett <sburnett@instructure.com>
2017-11-08 16:56:23 +00:00
Rob Orton 4439471b53 show group menu in main nav for cross shard groups
we already show all groups in the menu, just not
the menu

fixes CNVS-39650

test plan
 - have a cross shard group
 - you should be able to get to it from global nav

Change-Id: I2806cd78ec7079abb8967c09fe33a2eb82efd5df
Reviewed-on: https://gerrit.instructure.com/128467
Tested-by: Jenkins
Reviewed-by: James Williams  <jamesw@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
2017-10-06 22:26:00 +00:00
Jeremy Neander 0979bc48f5 improve management of gradebook versions
refs GRADE-218

QA Notes:

The `version`, `new_gradebook`, and `new_gradebook_development`
parameters are available in development only. Using these will
override the related preference, feature flag, and ENV variable
for the loading of Gradebook. They will not change the values
persisted for these settings.

Using `version` will override whichever user-preferred version of
Gradebook has been previously saved and instead load the version
of Gradebook corresponding to the `version` parameter.

Uses of the `version` parameter:
--------------------------------------------
| default    | default gradebook           |
| 2          | default gradebook           |
| individual | individual gradebook        |
| srgb       | individual gradebook        |
| < absent > | uses user-preferred version |
--------------------------------------------

Using `new_gradebook` will override the New Gradebook feature
flag, loading Gradebook as though the Feature Flag is set to the
value provided with the `new_gradebook` parameter.

Uses of the `new_gradebook` parameter:
---------------------------------------
| true       | New Gradebook enabled  |
| false      | New Gradebook disabled |
| < absent > | uses feature flag      |
---------------------------------------

Using `new_gradebook_development` will override the
GRADEBOOK_DEVELOPMENT ENV variable, loading Gradebook as though
the variable is set to the value provided with the
`new_gradebook_development` parameter.

Uses of the `new_gradebook_development` parameter:
---------------------------------------------------
| true       | New Gradebook Development enabled  |
| false      | New Gradebook Development disabled |
| < absent > | uses env variable                  |
---------------------------------------------------

test plan:
A. disable New Gradebook in non-development
  1. visit Gradebook and select Individual Gradebook
  2. ensure SRGB loads
  3. select Default Gradebook
  4. ensure Default Gradebook loads
  5. ensure the version parameter has no effect
  6. ensure the new_gradebook parameter has no effect
  7. ensure the new_gradebook_development parameter has no effect
B. disable New Gradebook in development
  1. visit Gradebook and select Individual Gradebook
  2. ensure SRGB loads
  3. select Default Gradebook
  4. ensure Default Gradebook loads
  5. ensure the version parameter takes effect
  6. ensure the new_gradebook parameter takes effect
  7. ensure the new_gradebook_development parameter takes effect
C. enable New Gradebook in non-development
  1. visit Gradebook and select Individual Gradebook
  2. ensure "New" SRGB loads
  3. select Default Gradebook
  4. ensure "New" Default Gradebook loads
  5. ensure the version parameter has no effect
  6. ensure the new_gradebook parameter has no effect
  7. ensure the new_gradebook_development parameter has no effect
D. enable New Gradebook in development
  1. visit Gradebook and select Individual Gradebook
  2. ensure "New" SRGB loads
  3. select Default Gradebook
  4. ensure "New" Default Gradebook loads
  5. ensure the version parameter takes effect
  6. ensure the new_gradebook parameter takes effect
  7. ensure the new_gradebook_development parameter takes effect

Change-Id: I9088e9a66e2213b12eac95fa93b15f7253e0b9dd
Reviewed-on: https://gerrit.instructure.com/105658
Tested-by: Jenkins
Reviewed-by: Spencer Olson <solson@instructure.com>
Reviewed-by: Neil Gupta <ngupta@instructure.com>
QA-Review: Spencer Olson <solson@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
2017-09-25 15:12:53 +00:00
James Williams ad5d5709a1 improve assignments_needing_moderation query
move the need_grading_info subquery on submissions
into the main query so we can restrict it to the
submissions that have provisional grades

test plan:
* the to-do list should behave the same as before
for graders for moderated grading assignments

closes #GRADE-272

Change-Id: I9fb83636ac058393e393874867f5f57ad8128955
Reviewed-on: https://gerrit.instructure.com/126246
Tested-by: Jenkins
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Indira Pai <ipai@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
2017-09-19 19:14:54 +00:00
Cody Cutrer de29fe9e31 eliminate duplicate rows in provisioning reports due to pseudonyms
fixes CNVS-38846

this also fixes the group memberships report for multi-shard users

test plan:
 * add multiple pseudonyms to a user
 * enroll that user in a course
 * do a provisioning report
 * that user should only have one row per enrollment

Change-Id: Iba2077e52a86182cf79ab83e918125ba7e08fc42
Reviewed-on: https://gerrit.instructure.com/124086
Tested-by: Jenkins
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
2017-09-08 21:40:46 +00:00
James Williams 076fe5a41b fix adminable_accounts and pagination
Change-Id: If5179f631f482e3f8dfcb3ad2fba807c5f070b4b
Reviewed-on: https://gerrit.instructure.com/124940
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
QA-Review: James Williams  <jamesw@instructure.com>
2017-09-05 22:55:45 +00:00
James Williams 09c770502f use in_region_associated_shards in some more places
refs #CNVS-38980

Change-Id: I8da10dca766ff0317c9a035b09dd1a0df41a84e6
Reviewed-on: https://gerrit.instructure.com/124882
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
QA-Review: James Williams  <jamesw@instructure.com>
2017-09-05 15:56:49 +00:00
Jeremy Stanley 9b225c2ac7 check date on submission comments for recent feedback
test plan: submissions more than four weeks old that have comments
that are also more than four weeks old should not appear in a
user's "Recent Feedback".

if you don't have such data available in your sandbox, you
should be able to fake it via the Rails console with something
like this (with a suitable submission object):

 submission.update_attributes(:created_at => 1.year.ago, :updated_at => 1.year.ago)
 submission.submission_comments.update_all(:created_at => 1.year.ago)

fixes CNVS-38820

Change-Id: Iabaa206bbf3c520201748de5adbfbda6c25ac7a6
Reviewed-on: https://gerrit.instructure.com/124552
Tested-by: Jenkins
Reviewed-by: Venk Natarajan <vnatarajan@instructure.com>
Reviewed-by: James Williams  <jamesw@instructure.com>
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
2017-09-01 21:27:11 +00:00
Mysti Sadler fd6495fd87 Add new_activity tag to planner item json
refs FALCOR-544
refs FALCOR-539

Test plan
- Create some grading items and some discussions/announcements
- Ensure they are not showing up with the new_activity flag
- in the API yet
- Ensure they do not show new_activity for submissions
- Grade or add feedback to the grading items
- Reply to the discussion/announcements
- Ensure that the api now does show new_activity

Change-Id: I8cf448c3296c21057aba9a9006b8efd8044986bd
Reviewed-on: https://gerrit.instructure.com/120658
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: David Mirabile <dmirabile-c@instructure.com>
Product-Review: Christi Wruck
2017-08-08 20:18:12 +00:00
James Williams 5dc376bfae prevent multiple listing in todo for moderated assignment
test plan:
* have multiple students submitted to a moderated grading
 assignment
* review one of the submissions
* the assignment should only appear once in the todo list

closes #CNVS-38312

Change-Id: Id5e2864aed0b2d2bec5718aa09c43239f58fba58
Reviewed-on: https://gerrit.instructure.com/119961
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
2017-08-03 12:24:07 +00:00
Rob Orton e63627c74c add workflow_state to account_users
fixes CNVS-38231

test plan
 - delete an admin
 - admin should be gone from every where
 - admin should not have permissions to do stuff

Change-Id: I56c90a12b2be879c5d646c1ab6980693ff161673
Reviewed-on: https://gerrit.instructure.com/119220
Reviewed-by: Tyler Pickett <tpickett@instructure.com>
Tested-by: Rob Orton <rob@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
2017-08-01 18:31:37 +00:00
James Williams a354602ea8 rails 5.1: bunch of other specs
Change-Id: Ic6e4f64874021639f5e8950e2fe42f714ae31250
Reviewed-on: https://gerrit.instructure.com/120225
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
QA-Review: James Williams  <jamesw@instructure.com>
2017-07-27 12:35:30 +00:00
James Williams 4ba94cb171 rails 5.1: lib specs
Change-Id: Ieef3d3447cfa2b22c9c9f6662688a40ae48a726c
Reviewed-on: https://gerrit.instructure.com/119730
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
QA-Review: James Williams  <jamesw@instructure.com>
2017-07-20 17:26:51 +00:00
Brad Horrocks 01faca033c fix for moderated grading in DocViewer
Replace crocodoc_ids with moderated_grading_ids
Both canvadocs and crocodoc can use the ids now

refs RD-4238
Test Plan:
With a course that has one teacher, 2 TAs, and a student
- Create an assignment, check the moderated grading check box
- as the student submit the assignment
- as a TA, pull up the submission in speed grader, annotate and grade it
- as the Other TA, open the submission in speed grader
- make sure you cant see the first TAs comments

Change-Id: I886af3e21f9276866ea4be8d5de6574b32e5f122
Reviewed-on: https://gerrit.instructure.com/117360
Tested-by: Jenkins
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
Product-Review: Caleb Guanzon <cguanzon@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
2017-07-18 22:13:39 +00:00
Dan Minkevitch ade5c5ce6d Remove missing assignments from submitted status
Fixes FALCOR-510

Test Plan:
* With "Student Planner" enabled
* As a student
* With a missing assignment without a submission
* And the assignment has been graded
* GET /api/v1/planner/items
* The assignment in the response should have a `submissions`
  object with `submitted` being `false`, but `missing` and
  `graded` being `true`

Change-Id: I008270a8a32024fd279673dd3519cfcbb2c8bb92
Reviewed-on: https://gerrit.instructure.com/119271
Reviewed-by: James Williams  <jamesw@instructure.com>
Tested-by: Jenkins
QA-Review: Dan Sasaki <dsasaki@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
2017-07-17 21:17:50 +00:00
James Williams b00b414102 don't autochange sortable_name if sent in api update
test plan:
* have a user with a name and a matching sortable name
 e.g. "First Last" and "Last, First"
* as an account admin, edit the user's name
 but leave the sortable name unchanged
* it should keep the previous sortable name

closes #CNVS-38209

Change-Id: I982c24ff16b9d3faf195858080bf1fe002640649
Reviewed-on: https://gerrit.instructure.com/119024
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
2017-07-17 20:06:53 +00:00
Shahbaz Javeed a58081810a add secondary sorting by sortable_name for user_ids
closes CNVS-37707

test plan:
* Create a course with at least four students, two of whom
  have the same name (we'll call them the twins)
* Create two assignments, each with a maximum score of 10
* Go to Gradezilla

* Sort the gradebook by Student Name from A-Z
* As a teacher hit the user_ids API endpoint
  (GET /courses/:course_id/gradebook/user_ids)
* Verify that user_ids are returned in an order where the
  corresponding user names are in ascending alphabetical
  order
* Verify that the twins' user_ids appear next to each
  other and are in increasing order by user_id

* Sort the gradebook by Student Name from Z-A
* As a teacher hit the user_ids API endpoint
  (GET /courses/:course_id/gradebook/user_ids)
* Verify that user_ids are returned in an order where the
  corresponding user names are in descending alphabetical
  order
* Verify that the twins' user_ids appear next to each
  other and are in decreasing order by user_id

* Ensure all students have submissions for the first
  assignment
* Assign grades to the students in assignment #1
  and ensure both twins get the same grade
* Sort the gradebook by the grade in assignment #1
  (Low to High)
* As a teacher hit the user_ids API endpoint
  (GET /courses/:course_id/gradebook/user_ids)
* Verify that user_ids are returned in an order where the
  corresponding user grades are in ascending order of name
* Verify that the twins' user_ids appear next to each
  other and are in increasing order by user_id

* Sort the gradebook by the grade in assignment #1
  (High to Low)
* As a teacher hit the user_ids API endpoint
  (GET /courses/:course_id/gradebook/user_ids)
* Verify that user_ids are returned in an order where the
  corresponding user grades are in descending order
* Verify that the twins' user_ids appear next to each
  other and are in decreasing order by user_id

* Update assignment #1 to ensure three students have
  due dates in the past, thus making their submissions late
* Sort the gradebook by "Late"
* As a teacher hit the user_ids API endpoint
  (GET /courses/:course_id/gradebook/user_ids)
* Verify the first 3 user_ids are for users with late
  submissions for that assignment and are in ascending
  order of name
* Verify the last (fourth) user_id is for the student
  whose submission was on time
* Verify that the twins' user_ids appear next to each
  other and are in increasing order by user_id

* Update assignment #1 to ensure only one student
  has a due date in the past, thus making only one student
  have a late submission.
* Sort the gradebook by "Late"
* As a teacher hit the user_ids API endpoint
  (GET /courses/:course_id/gradebook/user_ids)
* Verify the first 3 user_ids are for users with timely
  submissions for that assignment and are in ascending
  order of name
* Verify the last (fourth) user_id is for the student
  whose submission was on time
* Verify that the twins' user_ids appear next to each
  other and are in increasing order by user_id

* Update assignment #2 to have a due date in the past
* Ensure only one student (not one of the twins) has
  submitted their work for assignment #2
* Sort the gradebook by "Missing"
* As a teacher hit the user_ids API endpoint
  (GET /courses/:course_id/gradebook/user_ids)
* Verify the first 3 user_ids are for users with missing
  submissions for that assignment and are in ascending
  order of name
* Verify the last (fourth) user_id is for the student
  who submitted their work
* Verify that the twins' user_ids appear next to each
  other and are in increasing order by user_id

* Ensure both the twins now submit their work for
  assignment #2.  This should leave just one student who
  is missing a submission for assignment #2
* Sort the gradebook by "Missing"
* As a teacher hit the user_ids API endpoint
  (GET /courses/:course_id/gradebook/user_ids)
* Verify the first user_id is for the student who still
  has not submitted their work
* Verify the last 3 user_ids are for users with missing
  submissions for that assignment and are in ascending
  order of name
* Verify that the twins' user_ids appear next to each
  other and are in increasing order by user_id

Change-Id: Id91e02fc7dc475177d1f8c09cc75015916375576
Reviewed-on: https://gerrit.instructure.com/117227
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
Tested-by: Jenkins
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
2017-07-11 22:07:00 +00:00
James Williams edd8b9c986 add better sorting and shard awareness to planner index
make sure we're returning scopes on the right shard
and not prematurely executing them

also make sure that the pagination for planner items
actually behaves as expected when sorting dates

test plan:
* test all the things

closes #FALCOR-444

Change-Id: Iaa8a340de20b1bb2464d53ab6a3ba76843def822
Reviewed-on: https://gerrit.instructure.com/118141
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Reviewed-by: Dan Minkevitch <dan@instructure.com>
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: Pert Eilers <peilers@instructure.com>
2017-07-11 21:27:16 +00:00
Neil Gupta 695e57836c apply deductions when a missing policy changes
fixes CNVS-36866

test plan:
* Create a course with a student
* Create an assignment with a past due date
* Add a missing policy on the course
* The student's score for the missing submission should reflect your
  policy

Change-Id: I005cd64945e882c1ca9ebfc8cb70360640f24876
Reviewed-on: https://gerrit.instructure.com/113601
Tested-by: Jenkins
Reviewed-by: Matt Taylor <mtaylor@instructure.com>
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
2017-07-10 22:44:39 +00:00
Aaron Kc Hsu 7ce9873d9a Fix Students without current active courses do not see List View
This is for the dashboard options

closes FALCOR-445

Test Plan
* Play around with the students who have courses and no courses
* Make sure teachers don't show up
* Students who have no active courses but originally have course show

Change-Id: I4d8926c8c0d883808eadc2a5ae71a166d9addae8
Reviewed-on: https://gerrit.instructure.com/117557
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Dan Sasaki <dsasaki@instructure.com>
Product-Review: Aaron Kc Hsu <ahsu@instructure.com>
2017-07-05 17:16:14 +00:00
brian kirkby 2320e6453f remove 'copy_authorized_content' as superfluous
fixes CNVS-30926

test plan:
- edit a course wiki page
- add a text url in the course wiki page that uses the 'courses' > 'files'
  relative path (like http://web.canvaslms.docker/courses/2/files/1) making
  sure the course specified is a different course number than the course you
  are currently in
- save the wiki page
- verify that the relative file path did not change the course_id to the
  current course

Change-Id: I0fd48cf081978abdb8f8690b0521bb340b558180
Reviewed-on: https://gerrit.instructure.com/116194
Reviewed-by: James Williams  <jamesw@instructure.com>
Product-Review: brian kirkby <bkirkby@instructure.com>
Tested-by: Jenkins
QA-Review: Tucker McKnight <tmcknight@instructure.com>
2017-07-05 15:43:00 +00:00
Neil Gupta 33a0f62210 don't create placeholder submissions for unassigned students
Fixes CNVS-37395

Test plan:
* Create a course with 2 students
* Create an assignment with a due date for everyone
* Create a differentiated assignment with a due date for only 1 student
* In rails console:
  * Run `DueDateCacher.for_course(course_id)
  * Make sure `Submission.count` is 3
  * Make sure the first assignment has 2 placeholder submissions
  * Make sure the second assignment only has one placeholder submission

Change-Id: I5c8084d4fb0138f65e4c117dcc97638cf8d4f49d
Reviewed-on: https://gerrit.instructure.com/114573
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
Product-Review: Neil Gupta <ngupta@instructure.com>
QA-Review: Neil Gupta <ngupta@instructure.com>
2017-06-27 20:33:35 +00:00
Cody Cutrer 75c7538888 drop rails 4.2
also, allow rails 5.1

Change-Id: If480c2a2c01a7578552dc70f4bdcf3a46df40e7b
Reviewed-on: https://gerrit.instructure.com/115654
Tested-by: Jenkins
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Reviewed-by: Tyler Pickett <tpickett@instructure.com>
2017-06-27 15:29:51 +00:00
Dan Minkevitch a91a33e3f4 Add PlannerItem API filtering for concluded/favorites
Fixes FALCOR-379
Closes FALCOR-368

Test Plan:
* As a student
* In a course with "Student Planner" enabled
* GET /api/v1/planner/items
* The response should not include unfavorited or concluded
  course objects
* GET /api/v1/planner/items?include[]=concluded,unfavorited
* The response should include all course objects, including
  from concluded and unfavorited courses

Change-Id: Ie56848441ecd2b74e930a4c0be1bc12290e08d8c
Reviewed-on: https://gerrit.instructure.com/116358
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
2017-06-21 14:03:47 +00:00
Dan Minkevitch 8f40c14268 BookmarkedCollection for Planner API
Closes FALCOR-325
Fixes FALCOR-361

Test Plan
Date Range Testing:
* With "Student Planner" enabled
* As a student
* Make a GET request to /api/v1/planner/items
  with ?start_date=YYYY-MM-DD&end_date=YYYY-MM-DD&filter=new_activity
* The response should only contain results with new activity
  between those time ranges (test with dates and dates with times)

Pagination Testing:
* With "Student Planner" enabled
* As a student
* Make a GET request to /api/v1/planner/items
  with some combination of start_date, end_date, and filter
* Include a a `per_page` param
* The response should only contain only `per_page` number of
  results
* The response should contain a `Link` header with links to the
  current, next, and previous pages (you should see a URL with
  a `page=bookmark:[bunch of characters]`)
* Copy the `page` param from the `Link` header for the next
  page of results
* Make a request with the newly copied `page=bookmark:[stuff]`
  parameter added to the request
* You should get the next page of results in the response
* The previous and next URLs in the `Link` response header should
  return the previous and next page of results

Regression Testing:
* Full regression test of "New Student Planner"

Change-Id: Ie6352aec71f5de3c60981aaeee65119cc43ed6f7
Reviewed-on: https://gerrit.instructure.com/114848
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
2017-06-20 20:14:20 +00:00
Dan Minkevitch 743bdfee29 Add "new_activity" filter and "submitted" key
Closes FALCOR-332

Test Plan:
* As a student
* In a course with the new Student Planner enabled
* With assignments that have submissions
  with comments/feedback, as well as unread
  discussion topics
* GET /api/v1/planner/items?filter=new_activity
* It should respond with only those items that have
  unread/unviewed activity
* Additionally, the `submitted` key in the `submissions` object
  should be `true` for items with submissions

Change-Id: I776ef9113e6c29f9958c8a22ff86227daf88239c
Reviewed-on: https://gerrit.instructure.com/114730
Tested-by: Jenkins
Reviewed-by: Mysti Sadler <mysti@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
2017-06-14 17:01:25 +00:00
Dan Minkevitch 1363a3ada5 Allow including of locked items in planner
Closes FALCOR-340

Test Plan:
* As a student
* In a course with "Student Planner" enabled
* With assignments, topics, quizzes, and other items
  that have either a lock date in the past or an unlock
  date in the future (ie. they are locked for the student)
* GET /api/v1/planner/items
* The locked items should appear in the response

Change-Id: I91c7b333f43ef3cf771c10535cd103cfaa381bc0
Reviewed-on: https://gerrit.instructure.com/114832
Tested-by: Jenkins
Reviewed-by: Mysti Sadler <mysti@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
2017-06-12 20:17:27 +00:00
Dan Minkevitch 596cb8035a Include ungraded & excused assignments in planner
Also shows concluded course assignments

Closes FALCOR-328

Test Plan:
* As a student
* In a course with the new Student Planner enabled
* With assignments that have excused submissions
  with and without grades
* GET /api/v1/planner/items
* The response should contain a `submissions` key
  that contains an object with `excused: true`
* Conclude the course
* GET /api/v1/planner/items
* The response should be the same as previously requested

Change-Id: I5e6ce25590fe8e32e113662499170936a52a0797
Reviewed-on: https://gerrit.instructure.com/114633
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Reviewed-by: Mysti Sadler <mysti@instructure.com>
QA-Review: Dan Sasaki <dsasaki@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
2017-06-08 21:57:16 +00:00
Dan Minkevitch 565f371fde Add submission status & activity to PlannerItem API
Closes FALCOR-297

Test Plan:
* As a student
* In a course with the new Student Planner enabled
* With assignments with various submission states
  such as missing, late, graded, excused, etc
* GET /api/v1/planner/items
* The response should contain a "submissions" key
  whose value is reflected by the current status of the
  assignment, if it can be submitted, or `false` otherwise

Change-Id: I5c6703f930d7c5c13c77fdea8e01c6e31946ce43
Reviewed-on: https://gerrit.instructure.com/114007
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
2017-06-07 17:44:38 +00:00
Mysti Sadler ae55289217 Ensure wiki pages created in groups can show up in the API
fixes FALCOR-311

Test plan
- Create some wiki pages inside of a course and account
- level group
- Add todo dates for them
- Ensure they show up in the /api/v1/planner/items API

Change-Id: I391c4149c435120670b25cd1b0a68b9cc047e5f8
Reviewed-on: https://gerrit.instructure.com/113624
Tested-by: Jenkins
Reviewed-by: Dan Minkevitch <dan@instructure.com>
QA-Review: Dan Sasaki <dsasaki@instructure.com>
Product-Review: Mysti Sadler <mysti@instructure.com>
2017-06-02 18:32:48 +00:00
Steven Burnett c6d6a9ceae add ungraded discussion topics to planner
fixes FALCOR-262

Test Plan:
- Hit the planner_items root route
- Notice it now gives you ungraded discussion
  topics

Change-Id: I8c543a154a16b9eaaf29dad03b59038e65065bad
Reviewed-on: https://gerrit.instructure.com/113000
Reviewed-by: Mysti Sadler <mysti@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Steven Burnett <sburnett@instructure.com>
2017-05-30 22:01:46 +00:00
Mysti Sadler a0e29fd75d Wiki Pages for student planner
closes FALCOR-260

Test plan
- Set up some Wiki Pages with to do dates
- Call API /api/v1/planner/items as a student
- Ensure pages are shown if the student should
- see them
- Ensure the student doesn't see pages they shouldn't
- (ie, conditional release, or missing todo dates)

Change-Id: I6cf45e1c19f5a8314912814d9b0263857ce5edb5
Reviewed-on: https://gerrit.instructure.com/112482
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Dan Sasaki <dsasaki@instructure.com>
Product-Review: Mysti Sadler <mysti@instructure.com>
2017-05-26 21:31:37 +00:00
Dan Minkevitch a04b0db6e9 Add date range, pagination, and submitted assignments
Closes FALCOR-183
Closes FALCOR-185
Closes FALCOR-257

Test Plan:
* With new planner enabled
* As a student
* With assignments that have submissions
* Hit the `api/v1/planner/items` endpoint
* See that the submitted assignments are included
  in the response
* Hit `api/v1/planner/items?due_after=YYYY-MM-DD`,
  `api/v1/planner/items?due_before=YYYY-MM-DD`, &
  `api/v1/planner/items?due_before=YYYY-MM-DD&due_after=YYYY-MM-DD`,
  replacing YYYY-MM-DD with some date in that format
* The response should only contain objects within that range
* Hit any of the above URLs, appending `&per_page=X&page=Y`,
  replacing `X` with a limit for number of items returned,
  and `Y` with the page of items to return
* The response should contain `X` amount of objects, starting
  from page `Y`

Change-Id: I63fc108107fda07f674ef7a5465125b185c0c510
Reviewed-on: https://gerrit.instructure.com/112386
Reviewed-by: Mysti Sadler <mysti@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
2017-05-25 21:25:03 +00:00
Steven Burnett 74a09dfb23 add note to self model
fixes FALCOR-246

Test Plan:
- Go to Rails Console
- Create some NoteToSelf
- Tests pass

Change-Id: Ieb5808017f5d498eda5a3fed1581f713f89d503d
Reviewed-on: https://gerrit.instructure.com/112056
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Steven Burnett <sburnett@instructure.com>
2017-05-22 16:33:13 +00:00
Dan Minkevitch 1f4132e1ba Planner API
Closes FALCOR-183
Closes FALCOR-184
Closes FALCOR-255
Closes FALCOR-186
Closes FALCOR-187
Closes FALCOR-188
Closes FALCOR-189
Closes FALCOR-147
Closes FALCOR-148

Test Plan:
* As a student in an account with the Student Planner
  feature flag enabled
* In a course with multiple upcoming due assignments
  in the current and following weeks
* Test that the following API endpoints provide you
  with the data described:

  get '/api/v1/planner/items'
    * Should return a list matching that of the todo
      list endpoint, while adding an additional key
      named `visible_in_planner`
  get '/api/v1/planner/overrides'
    * Should return a list of previously created
      PlannerOverrides
  get '/api/v1/planner/overrides/:override_id'
    * Should return the specific override for the
      passed in id
  put '/api/v1/planner/overrides/:override_id'
    * Should update an existing override's `visible`
      value to match what was passed in the request. No
      other values should be updated
  post '/api/v1/planner/overrides'
    * Should create a new PlannerOverride with the specified
      `plannable_type`, `plannable_id`, and `visible` values.
      `user_id` should match that of the user making the request
  delete '/api/v1/planner/overrides/:override_id'
    * Should set the PlannerOverride's `deleted_at` to when
      the request was made, as well as updating the `workflow_state`
      to `deleted`

Change-Id: I03890a525f8201a8df1d2f1290cdcd549ba548d7
Reviewed-on: https://gerrit.instructure.com/107495
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
2017-05-15 19:18:47 +00:00
James Williams 3d0973d254 do some performance refactoring on grade summary presenter
- can use active_by_date scope instead of checking
 :partcipate_as_student rights on each course
- courses_with_grades was returning nil unless they're a
student or observer, so checking manage/view_all_grades
on the view is unnecessary
- the N+1 loading the of enrollments to check read_grades is
unnecessary too since it'll return true if they own
the enrollment or if they have an observer enrollment

test plan:
* make sure i didn't break all the things

Change-Id: I653e83f1e2e33d06340351e279bd53a85e3f7e47
Reviewed-on: https://gerrit.instructure.com/106249
Tested-by: Jenkins
QA-Review: KC Naegle <knaegle@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
2017-05-04 18:08:48 +00:00
wdransfield c1192b1086 Don't send admin role for deleted accounts in launches
Fixes: PLAT-2433

Test Plan:
- Create a user who is both a student in a course of a root
  account and an admin of a sub-account of the root account.
- Do a tool launch as the user from the course they are enrolled
  in as a student (the course should be in the root account, not
  the sub-account).
- Verify the admin LIS role is sent in the ext_roles
  param.
- Delete the sub-account.
- Launch the tool from the same course as before and verify
  the admin role in no longer sent in the ext_roles.

Change-Id: If76f14a9e2c2fa6e43887cb3385a393327d7ecaa
Reviewed-on: https://gerrit.instructure.com/110075
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
Reviewed-by: Nathan Mills <nathanm@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
2017-05-04 17:43:11 +00:00
Jeremy Stanley 0b597e75c7 add user id to user sort clause
so we still have a deterministic sort for pagination when
multiple users have the same sortable name

fixes CNVS-36604

Change-Id: I75b5eaae782553a80a185660ddb4346dbe79f853
Reviewed-on: https://gerrit.instructure.com/110288
Tested-by: Jenkins
Reviewed-by: James Williams  <jamesw@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
2017-05-03 20:44:53 +00:00
Cody Cutrer 99f5b454ed refactor and unify User#find_pseudonym_for_account and SisPseudonym
fixes CNVS-35919

also, prefer SIS pseudonyms over non-SIS pseudonyms from any given
account

test plan:
 * have a non-SIS pseudonym and a SIS pseudonym on a user
 * do an LTI launch
 * the LTI tool should get the info from the SIS pseudonym

Change-Id: I60a3c48a32eae94db93b0e72f1f0f6c5b6a5f5c2
Reviewed-on: https://gerrit.instructure.com/107785
Reviewed-by: Nathan Mills <nathanm@instructure.com>
Reviewed-by: Tyler Pickett <tpickett@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Tested-by: Jenkins
Product-Review: Cody Cutrer <cody@instructure.com>
2017-05-02 18:50:31 +00:00
Cody Cutrer 0571277626 MFA backup code support
fixes CNVS-35623

test plan:
 * disable redis
 * configure MFA; do not remember this computer
 * on your profile, there should be a link to MFA backup codes
 * follow it; it should show 10 codes
 * log out and log back in, using one of those codes
 * go back to your backup code list; the one you used should be
   crossed out
 * log out and log back in, attempting to use the same code;
   it should not allow you to
 * log in with another code
 * make note of one of the unused backup codes
 * regenerate your backup codes; it should give you 10 new codes,
   all unused
 * log out, and attempt to log in with one of the old unused codes;
   it should not allow you to
 * log in with one of the new backup codes; it should work
 * make note of backup codes
 * reconfigure MFA
 * look at your backup codes again; they should be different
 * make note of them again
 * disable MFA, and then configure it again
 * your backup codes should be different again

Change-Id: I20b1da102ef4cb757c80e1f46e276f88fdfb21b4
Reviewed-on: https://gerrit.instructure.com/21614
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Tested-by: Jenkins
Reviewed-by: Simon Williams <simon@instructure.com>
Product-Review: McCall Smith <mcsmith@instructure.com>
2017-05-02 16:08:53 +00:00
Landon Wilkins 7b669b4fd1 da licença part 16
add consistent license headers to all source files
(ruby, coffeescript, javascript)

except for vendor files

Change-Id: I155ca27aaa0c465a1d3cfa071c2030aa6b0d3c80
Reviewed-on: https://gerrit.instructure.com/110037
Tested-by: Jenkins
Reviewed-by: Jon Jensen <jon@instructure.com>
Product-Review: Jon Jensen <jon@instructure.com>
QA-Review: Jon Jensen <jon@instructure.com>
2017-04-27 21:51:21 +00:00
James Williams dffa3189aa drop submission_comment_participants
they don't really do anything

Change-Id: I90873c2b4570d3416c7d21f19843552be3965eeb
Reviewed-on: https://gerrit.instructure.com/108557
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
QA-Review: James Williams  <jamesw@instructure.com>
2017-04-19 17:10:52 +00:00
James Williams 77e2fb7f98 rewrite the super slow query in submissions_for_context_codes
rewrite so it doesn't do a seq scan on submission_comments

don't worry about submission_comment_participants and
just use user_id on submissions (since the 'submitter' should
be the same)

test plan:
* recent feedback should grab submissions with recent
submissions comments from graders as before

Change-Id: Ib25e7d728051b005befdb09ca6fcd956bbcd989d
Reviewed-on: https://gerrit.instructure.com/108388
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins
Product-Review: James Williams  <jamesw@instructure.com>
QA-Review: James Williams  <jamesw@instructure.com>
2017-04-17 18:51:35 +00:00
James Williams 4cb30320bc use quiz visibility for ungrade surveys in todo list
test plan:
* have a ungraded survey quiz assigned to a course section
 and an upcoming due date
* have a student in a different course section
* they shouldn't see the survey in their todo list

closes #CNVS-35999

Change-Id: I13a6bfd298c54f75875235a20ae525766187b4a5
Reviewed-on: https://gerrit.instructure.com/107127
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
2017-04-03 16:07:37 +00:00
Cody Cutrer ce21af8ecf rails 5: find and fix lots of deprecation warnings [ci verbose]
refs CNVS-34843

Change-Id: Idd523c2a7c37325381d590f1ee70c406ace2a459
Reviewed-on: https://gerrit.instructure.com/105033
Tested-by: Jenkins
Reviewed-by: Rob Orton <rob@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
2017-03-16 16:03:51 +00:00
Cody Cutrer d74ccdd308 rails 5: fix several deprecation warnings
Change-Id: I43a3a36da77d19e81257fb923b34e431f3d6cbfa
Reviewed-on: https://gerrit.instructure.com/104952
Tested-by: Jenkins
Reviewed-by: Simon Williams <simon@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
2017-03-13 23:05:02 +00:00
Cody Cutrer 6751891617 rails 5: fix lots of deprecation warnings
mostly s/uniq/distinct/, and choosing a content type for render :text

Change-Id: I53a2e77d23ecc43162f70b4fd88303cc1539c20b
Reviewed-on: https://gerrit.instructure.com/104762
Tested-by: Jenkins
Reviewed-by: Simon Williams <simon@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
2017-03-13 19:07:11 +00:00
Clay Diffrient e880e4faa3 Add mechanism for toggling tutorials
closes FALCOR-70
closes FALCOR-71

Test Plan:
  - Create a new user
  - Add them to a course
  - They should have the tutorial option showing as on in
    user settings
  - Tutorial trays should show from the right side
  - Clicking end tutorial in the tray should open up a
    dialog to confirm
  - Cancelling should do nothing but close the dialog
  - Clicking okay on the modal should trigger the page to
    refresh
  - Tutorial options should be gone and the feature flag
    should be turned off in user settings
Change-Id: I0b287be7278059a24df07c75436def8fb53b3b17
Reviewed-on: https://gerrit.instructure.com/103568
Tested-by: Jenkins
Reviewed-by: Josh Simpson <jsimpson@instructure.com>
QA-Review: Dan Sasaki
Product-Review: Christi Wruck
2017-03-13 15:00:08 +00:00
James Williams d52103f451 don't let blueprint courses have students
test plan:
* a course with students should be able to be
 set as a blueprint course
* a blueprint course shouldn't be able to add students

closes #MC-105

Change-Id: I31257e447e0e0f60f0399663092f21e39532183a
Reviewed-on: https://gerrit.instructure.com/103947
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
2017-03-13 12:09:54 +00:00