OpenProject is the leading open source project management software.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openproject/modules/costs/app/models/cost_scopes.rb

68 lines
1.9 KiB

module CostScopes
def self.included(base_module)
base_module.class_eval do
def self.extended(base_class)
base_class.class_eval do
def self.visible(*args)
user = args.first || User.current
with_visible_entries_on self, user: user, project: args[1]
end
def self.visible_costs(*args)
user = args.first || User.current
with_visible_costs_on self, user: user, project: args[1]
end
end
end
end
end
def view_allowed_entries_permission
raise NotImplementedError
end
def view_allowed_own_entries_permission
raise NotImplementedError
end
def view_rates_permissions
raise NotImplementedError
end
def with_visible_costs_on(scope, user: User.current, project: nil)
with_visible_entries = with_visible_entries_on(scope, user: user, project: project)
with_visible_rates_on with_visible_entries, user: user
end
def with_visible_entries_on(scope, user: User.current, project: nil)
Feature/remove timelog (#8557) * rename costs, introduce budgets * move files from costs to budgets * rename cost_object to budget * remove unused code * move hook - should be turned into standard code in the long run * move type attributes change over to budgets * move patch to work_package proper * move budget menu item up * combine reporting, time and cost module * remove rails based time_entries & reports code * rename cost object filter * adapt menu spec expectations * use cost project module name in administration * include timeline labels in migration * properly place budget linking method * fix permitted params * remove outdated routing spec * adapt budget request specs * ensure order of descendent updates * remove outdated specs * fix checking for reporting to be enabled * fix displaying spent units * fix time entries activity event url * reenable current rate tab * fix path on budget page * allow bulk editing of budgets only in one project scenario * fix sanitizing reference in controller * include module required for format_date * fix reference to correct units from work package spent units * linting * remove outdated spec * remove outdated views and permission references * remove acts_as_event from time_entries There is no atom link for time entries * remove acts_as_event from projects There are no atom links for projects * introduce budget filter for cost reports * remove actions added to removed controller * move time entries to the costs module * factor in view_own permission when calculating time entry visibility * linting * move mounting of time entries * include budgets into api v3 documentation
4 years ago
table = arel_table
view_allowed = Project.allowed_to(user, view_allowed_entries_permission).select(:id)
view_own_allowed = Project.allowed_to(user, view_allowed_own_entries_permission).select(:id)
visible_scope = scope.where view_or_view_own(table, view_allowed, view_own_allowed, user)
if project
visible_scope.where(project_id: project.id)
else
visible_scope
end
end
def view_or_view_own(table, view_allowed, view_own_allowed, user)
table[:project_id]
.in(view_allowed.arel)
.or(
table[:project_id]
.in(view_own_allowed.arel)
.and(table[:user_id].eq(user.id))
)
end
def with_visible_rates_on(scope, user: User.current)
Feature/remove timelog (#8557) * rename costs, introduce budgets * move files from costs to budgets * rename cost_object to budget * remove unused code * move hook - should be turned into standard code in the long run * move type attributes change over to budgets * move patch to work_package proper * move budget menu item up * combine reporting, time and cost module * remove rails based time_entries & reports code * rename cost object filter * adapt menu spec expectations * use cost project module name in administration * include timeline labels in migration * properly place budget linking method * fix permitted params * remove outdated routing spec * adapt budget request specs * ensure order of descendent updates * remove outdated specs * fix checking for reporting to be enabled * fix displaying spent units * fix time entries activity event url * reenable current rate tab * fix path on budget page * allow bulk editing of budgets only in one project scenario * fix sanitizing reference in controller * include module required for format_date * fix reference to correct units from work package spent units * linting * remove outdated spec * remove outdated views and permission references * remove acts_as_event from time_entries There is no atom link for time entries * remove acts_as_event from projects There are no atom links for projects * introduce budget filter for cost reports * remove actions added to removed controller * move time entries to the costs module * factor in view_own permission when calculating time entry visibility * linting * move mounting of time entries * include budgets into api v3 documentation
4 years ago
table = arel_table
view_allowed = Project.allowed_to(user, view_rates_permissions).select(:id)
scope.where(table[:project_id].in(view_allowed.arel))
end
end