if @user
@traces = Trace.visible_to(@user) #1
else
- @traces = Trace.public #2
+ @traces = Trace.visible_to_all #2
end
else
if @user and @user == target_user
@traces = @user.traces #3 (check vs user id, so no join + can't pick up non-public traces by changing name)
else
- @traces = target_user.traces.public #4
+ @traces = target_user.traces.visible_to_all #4
end
end
end
def georss
- @traces = Trace.public.visible
+ @traces = Trace.visible_to_all.visible
if params[:display_name]
@traces = @traces.joins(:user).where(:users => {:display_name => params[:display_name]})
scope :visible, -> { where(:visible => true) }
scope :visible_to, ->(u) { visible.where("visibility IN ('public', 'identifiable') OR user_id = ?", u) }
- scope :public, -> { where(:visibility => ["public", "identifiable"]) }
+ scope :visible_to_all, -> { where(:visibility => ["public", "identifiable"]) }
scope :tagged, ->(t) { joins(:tags).where(:gpx_file_tags => { :tag => t }) }
validates_presence_of :user_id, :name, :timestamp
# Check that the list of changesets is displayed
def test_list
get :list
- check_trace_list Trace.public
+ check_trace_list Trace.visible_to_all
get :list, :tag => "London"
- check_trace_list Trace.tagged("London").public
+ check_trace_list Trace.tagged("London").visible_to_all
end
# Check that I can get mine
def test_list_user
# Test a user with no traces
get :list, :display_name => users(:second_public_user).display_name
- check_trace_list users(:second_public_user).traces.public
+ check_trace_list users(:second_public_user).traces.visible_to_all
# Test a user with some traces - should see only public ones
get :list, :display_name => users(:public_user).display_name
- check_trace_list users(:public_user).traces.public
+ check_trace_list users(:public_user).traces.visible_to_all
# Should still see only public ones when authenticated as another user
get :list, {:display_name => users(:public_user).display_name}, {:user => users(:normal_user).id}
- check_trace_list users(:public_user).traces.public
+ check_trace_list users(:public_user).traces.visible_to_all
# Should see all traces when authenticated as the target user
get :list, {:display_name => users(:public_user).display_name}, {:user => users(:public_user).id}
# Check that the rss loads
def test_rss
get :georss, :format => :rss
- check_trace_feed Trace.public
+ check_trace_feed Trace.visible_to_all
get :georss, :tag => "London", :format => :rss
- check_trace_feed Trace.tagged("London").public
+ check_trace_feed Trace.tagged("London").visible_to_all
get :georss, :display_name => users(:public_user).display_name, :format => :rss
- check_trace_feed users(:public_user).traces.public
+ check_trace_feed users(:public_user).traces.visible_to_all
get :georss, :display_name => users(:public_user).display_name, :tag => "Birmingham", :format => :rss
- check_trace_feed users(:public_user).traces.tagged("Birmingham").public
+ check_trace_feed users(:public_user).traces.tagged("Birmingham").visible_to_all
end
# Test viewing a trace
check_query(Trace.visible_to(3), [:public_trace_file, :identifiable_trace_file])
end
- def test_public
- check_query(Trace.public, [:public_trace_file, :identifiable_trace_file, :deleted_trace_file])
+ def test_visible_to_all
+ check_query(Trace.visible_to_all, [:public_trace_file, :identifiable_trace_file, :deleted_trace_file])
end
def test_tagged