There is a discrepancy in Org Admin view of the Organisation Plans and the related CSV Download.
The CSV download shows de-activated plans whilst the view only displays active plans.
The code for both use the same method org_admin_plans in the Org model
|
# This replaces the old plans method. We now use the native plans method and this. |
|
# rubocop:disable Metrics/AbcSize |
|
def org_admin_plans |
|
combined_plan_ids = (native_plan_ids + affiliated_plan_ids).flatten.uniq |
|
|
|
if Rails.configuration.x.plans.org_admins_read_all |
|
Plan.includes(:template, :phases, :roles, :users).where(id: combined_plan_ids) |
|
.where(roles: { active: true }) |
|
else |
|
Plan.includes(:template, :phases, :roles, :users).where(id: combined_plan_ids) |
|
.where.not(visibility: Plan.visibilities[:privately_visible]) |
|
.where.not(visibility: Plan.visibilities[:is_test]) |
|
.where(roles: { active: true }) |
|
end |
|
end |
|
# rubocop:enable Metrics/AbcSize |
The paginable method org_admin for Org Admin plans by including the filter condition where(Role.creator_condition) ensures the view for Org Admins and Super Admins only see active plans (as we set Role of the creator (owner or co-owner who removes plan) to active: false).
|
# GET /paginable/plans/org_admin/:page |
|
# rubocop:disable Metrics/AbcSize |
|
def org_admin |
|
raise Pundit::NotAuthorizedError unless current_user.present? && current_user.can_org_admin? |
|
|
|
# check if current user if super_admin |
|
@super_admin = current_user.can_super_admin? |
|
@clicked_through = params[:click_through].present? |
|
plans = @super_admin ? Plan.all : current_user.org.org_admin_plans |
|
plans = plans.joins(:template, roles: [user: :org]).where(Role.creator_condition) |
|
|
|
paginable_renderise( |
|
partial: 'org_admin', |
|
scope: plans, |
|
view_all: !current_user.can_super_admin?, |
|
query_params: { sort_field: 'plans.updated_at', sort_direction: :desc }, |
|
format: :json |
|
) |
|
end |
|
# rubocop:enable Metrics/AbcSize |
We think discrepancy between view and download data should be fixed in Org model's method org_admin_plans rather than having it done in the paginable method org_admin as the former method is used in several places:
app/models/plan.rb
172: plan_ids = user.org.org_admin_plans.where(complete: true).pluck(:id).uniq
app/controllers/paginable/plans_controller.rb
48: plans = @super_admin ? Plan.all : current_user.org.org_admin_plans
app/controllers/api/v0/plans_controller.rb
75: org_admin_plans = @user.org.org_admin_plans
app/controllers/org_admin/plans_controller.rb
23: current_user.org.org_admin_plans.page(1)
71: org.org_admin_plans.includes(template: :org).order(updated_at: :desc).each do |plan|
There is a discrepancy in Org Admin view of the Organisation Plans and the related CSV Download.
The CSV download shows de-activated plans whilst the view only displays active plans.
The code for both use the same method org_admin_plans in the Org model
roadmap/app/models/org.rb
Lines 287 to 302 in bfbb518
The paginable method org_admin for Org Admin plans by including the filter condition
where(Role.creator_condition)ensures the view for Org Admins and Super Admins only see active plans (as we set Role of the creator (owner or co-owner who removes plan) to active: false).roadmap/app/controllers/paginable/plans_controller.rb
Lines 40 to 59 in bfbb518
We think discrepancy between view and download data should be fixed in Org model's method org_admin_plans rather than having it done in the paginable method org_admin as the former method is used in several places:
app/models/plan.rb
172: plan_ids = user.org.org_admin_plans.where(complete: true).pluck(:id).uniq
app/controllers/paginable/plans_controller.rb
48: plans = @super_admin ? Plan.all : current_user.org.org_admin_plans
app/controllers/api/v0/plans_controller.rb
75: org_admin_plans = @user.org.org_admin_plans
app/controllers/org_admin/plans_controller.rb
23: current_user.org.org_admin_plans.page(1)
71: org.org_admin_plans.includes(template: :org).order(updated_at: :desc).each do |plan|