dashboard: hide stream items from concluded courses

fixes CNVS-1485

test plan:
  * verify that stream items show up on the dashboard
  * create a term with an end date in the past
  * assign a course to that term
  * verify that items from that course are no longer on the dashboard

Change-Id: I9851997c9672f73335f54bdba78bdb71ee24d029
Reviewed-on: https://gerrit.instructure.com/33264
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Joel Hough <joel@instructure.com>
QA-Review: Trevor deHaan <tdehaan@instructure.com>
Product-Review: Braden Anderson <banderson@instructure.com>
This commit is contained in:
Braden Anderson 2014-04-13 16:09:19 -06:00
parent af9e8d900b
commit 251fe0a7b7
7 changed files with 21 additions and 7 deletions

View File

@ -474,7 +474,7 @@ class ApplicationController < ActionController::Base
# again.
courses = @context.current_enrollments.with_each_shard.select { |e| e.state_based_on_date == :active }.map(&:course).uniq
groups = opts[:include_groups] ? @context.current_groups.with_each_shard.reject{|g| g.context_type == "Course" &&
(g.context.completed? || g.context.soft_concluded?)} : []
g.context.concluded?} : []
if only_contexts.present?
# find only those courses and groups passed in the only_contexts
# parameter, but still scoped by user so we know they have rights to

View File

@ -204,9 +204,9 @@ class ContextController < ApplicationController
},
:course => {
:id => @context.id,
:completed => (completed = @context.completed?),
:soft_concluded => (soft_concluded = @context.soft_concluded?),
:concluded => completed || soft_concluded,
:completed => @context.completed?,
:soft_concluded => @context.soft_concluded?,
:concluded => @context.concluded?,
:teacherless => @context.teacherless?,
:available => @context.available?,
:pendingInvitationsCount => @context.invited_count_visible_to(@current_user)

View File

@ -1466,7 +1466,7 @@ class CoursesController < ApplicationController
:root_account => @context.root_account,
:search_method => @context.user_list_search_mode_for(@current_user),
:initial_type => params[:enrollment_type])
if !(@context.completed? || @context.soft_concluded?) && (@enrollments = EnrollmentsFromUserList.process(list, @context, enrollment_options))
if !@context.concluded? && (@enrollments = EnrollmentsFromUserList.process(list, @context, enrollment_options))
Enrollment.send(:preload_associations, @enrollments, [:course_section, {:user => [:communication_channel, :pseudonym]}])
json = @enrollments.map { |e|
{ 'enrollment' =>

View File

@ -313,7 +313,7 @@ class EnrollmentsApiController < ApplicationController
errors << @@errors[:missing_user_id] unless params[:enrollment][:user_id].present?
end
errors << @@errors[:concluded_course] if @context.completed? || @context.soft_concluded?
errors << @@errors[:concluded_course] if @context.concluded?
return render_create_errors(errors) if errors.present?
# create enrollment

View File

@ -1159,6 +1159,10 @@ class Course < ActiveRecord::Base
self.restrict_enrollments_to_course_dates = true
end
def concluded?
completed? || soft_concluded?
end
def state_sortable
case state
when :invited

View File

@ -1837,12 +1837,13 @@ class User < ActiveRecord::Base
self.shard.activate do
Shackles.activate(:slave) do
visible_instances = visible_stream_item_instances(opts).
includes(:stream_item).
includes(:stream_item => :context).
limit(Setting.get('recent_stream_item_limit', 100))
visible_instances.map do |sii|
si = sii.stream_item
next unless si.present?
next if si.asset_type == 'Submission'
next if si.context_type == "Course" && si.context.concluded?
si.data.write_attribute(:unread, sii.unread?)
si
end.compact

View File

@ -156,6 +156,15 @@ describe User do
@user.recent_stream_items.size.should == 0
end
it "should ignore stream item instances from concluded courses" do
course_with_teacher(:active_all => true)
google_docs_collaboration_model(:user_id => @user.id)
@user.recent_stream_items.size.should == 1
@course.soft_conclude!
@course.save
@user.recent_stream_items.size.should == 0
end
describe "#recent_stream_items" do
it "should skip submission stream items" do
course_with_teacher(:active_all => true)