Skip to content

Commit

Permalink
Unify the way we set @Package in the webui
Browse files Browse the repository at this point in the history
Use one before filter (require_package) and not many different ones.
  • Loading branch information
hennevogel committed Sep 26, 2023
1 parent d2d3e87 commit 1b41902
Show file tree
Hide file tree
Showing 9 changed files with 25 additions and 59 deletions.
25 changes: 9 additions & 16 deletions src/api/app/controllers/webui/attribute_controller.rb
@@ -1,5 +1,7 @@
class Webui::AttributeController < Webui::WebuiController
helper :all
before_action :set_project, only: [:index, :new, :edit]
before_action :set_package, only: [:index, :new, :edit]
before_action :set_container, only: [:index, :new, :edit]
before_action :set_attribute, only: [:update, :destroy]

Expand Down Expand Up @@ -85,23 +87,14 @@ def destroy

private

def set_package
return unless params[:package]

require_package
end

def set_container
begin
@project = Project.get_by_name(params[:project])
rescue APIError
flash[:error] = "Project not found: #{elide(params[:project])}"
redirect_to(controller: 'project') && return
end
if params[:package]
begin
@package = Package.get_by_project_and_name(params[:project], params[:package], use_source: false)
rescue APIError
redirect_to(project_show_path(@project.to_s), error: "Package #{params[:package]} not found") && (return)
end
@container = @package
else
@container = @project
end
@container = @package || @project
end

def set_attribute
Expand Down
9 changes: 0 additions & 9 deletions src/api/app/controllers/webui/packages/main_controller.rb
Expand Up @@ -3,15 +3,6 @@ module Packages
class MainController < WebuiController
protected

def set_package
# Store the package name in case of multibuilds
@package_name = params[:package_name]
@package = ::Package.get_by_project_and_name(@project.to_param, params[:package_name],
use_source: false, follow_project_links: true, follow_multibuild: true)
rescue APIError
raise ActiveRecord::RecordNotFound, 'Not Found'
end

def set_repository
repository_name = params[:repository] || params[:repository_name]
@repository = @project.repositories.find_by(name: repository_name)
Expand Down
11 changes: 1 addition & 10 deletions src/api/app/controllers/webui/patchinfo_controller.rb
Expand Up @@ -4,6 +4,7 @@ class Webui::PatchinfoController < Webui::WebuiController
include Webui::PackageHelper
before_action :set_project
before_action :get_binaries, except: [:show, :destroy, :new_tracker]
before_action :require_package, except: [:create, :new_tracker]
before_action :require_exists, except: [:create, :new_tracker]
before_action :require_login, except: [:show]
before_action :set_patchinfo, only: [:show, :edit]
Expand Down Expand Up @@ -143,16 +144,6 @@ def get_binaries
end

def require_exists
if params[:package].present?
begin
@package = Package.get_by_project_and_name(params[:project], params[:package], use_source: false)
rescue Package::UnknownObjectError
flash[:error] = "Patchinfo '#{elide(params[:package])}' not found in project '#{elide(params[:project])}'"
redirect_to project_show_path(project: params[:project])
return
end
end

return if @package && @package.patchinfo

# FIXME: should work for remote packages
Expand Down
23 changes: 11 additions & 12 deletions src/api/app/controllers/webui/repositories_controller.rb
Expand Up @@ -2,7 +2,9 @@ class Webui::RepositoriesController < Webui::WebuiController
before_action :set_project
before_action :set_repository, only: [:state]
before_action :set_architectures, only: [:index, :change_flag]
before_action :find_repository_parent, only: [:index, :change_flag]
before_action :set_repository, only: [:state]
before_action :set_package, only: [:index, :change_flag]
before_action :set_main_object, only: [:index, :change_flag]
before_action :check_ajax, only: :change_flag
after_action :verify_authorized, except: [:index, :state]

Expand Down Expand Up @@ -188,16 +190,13 @@ def set_repository
@repository = @project.repositories.find_by!(name: params[:repository])
end

def find_repository_parent
if params[:package]
# FIXME: Handle APIError different, this is just c&p from packages_controller
begin
@main_object = @package = Package.get_by_project_and_name(@project.to_param, params[:package], use_source: false, follow_project_links: true)
rescue APIError
raise ActiveRecord::RecordNotFound, 'Not Found'
end
else
@main_object = @project
end
def set_package
return unless params[:package]

require_package
end

def set_main_object
@main_object = @package || @project
end
end
9 changes: 0 additions & 9 deletions src/api/app/controllers/webui/request_controller.rb
Expand Up @@ -433,15 +433,6 @@ def forward_request_to(fwd)
flash[:success] += " and forwarded to #{target_link} (#{request_link})"
end

def set_package
return unless params.key?(:package_name)

@package = Package.get_by_project_and_name(params[:project_name], params[:package_name],
use_source: false, follow_project_links: true, follow_multibuild: true)
rescue APIError
raise ActiveRecord::RecordNotFound
end

# Subcontroller is expected to implement #bs_request_params
# Strong parameters for BsRequest with nested attributes for its bs_request_actions association
def bs_request_params
Expand Down
Expand Up @@ -2,8 +2,8 @@ module Webui
module Requests
class DeletionsController < Webui::RequestController
before_action :require_login
before_action :set_package
before_action :set_project
before_action :set_package

after_action :verify_authorized

Expand Down
Expand Up @@ -2,8 +2,8 @@ module Webui
module Requests
class RoleAdditionsController < Webui::RequestController
before_action :require_login
before_action :set_package
before_action :set_project
before_action :set_package

after_action :verify_authorized

Expand Down
Expand Up @@ -3,8 +3,8 @@ module Requests
class SubmissionsController < Webui::RequestController
before_action :require_login
before_action :strip_params, only: [:create]
before_action :set_package
before_action :set_project
before_action :set_package

after_action :verify_authorized
after_action :supersede_requests, only: [:create]
Expand Down
1 change: 1 addition & 0 deletions src/api/app/controllers/webui/webui_controller.rb
Expand Up @@ -141,6 +141,7 @@ def require_package
raise Package::UnknownObjectError, "Package not found: #{@project.name}/#{@package_name}"
end
end
alias set_package require_package

private

Expand Down

0 comments on commit 1b41902

Please sign in to comment.