diff --git a/src/api/app/controllers/webui/projects_controller.rb b/src/api/app/controllers/webui/projects_controller.rb deleted file mode 100644 index 3dcb36ab81e..00000000000 --- a/src/api/app/controllers/webui/projects_controller.rb +++ /dev/null @@ -1,318 +0,0 @@ -require_dependency 'status_helper' - -class Webui::ProjectsController < Webui::BaseController - - - # return all data related that the webui wants to show on /project/show - def infos - required_parameters :id - project_name = params[:id] - infos = Hash.new - @pro = ::Project.find_by_name!(project_name) - infos[:name] = @pro.name - infos[:packages] = find_packages_info - - infos[:xml] = @pro.to_axml - - infos.merge! find_maintenance_infos - - infos[:linking_projects] = @pro.find_linking_projects.map { |p| p.name } - - reqs = @pro.request_ids_by_class - infos[:requests] = (reqs['reviews'] + reqs['targets'] + reqs['incidents'] + reqs['maintenance_release']).sort.uniq - - infos[:nr_of_problem_packages] = find_nr_of_problems - - render json: infos - end - - def remotes - # return all remote projects and their title - ret = {} - projects = Project.where.not(remoteurl: nil).pluck(:id, :name, :title) - projects.each do |id, name, title| - ret[id] = {name: name, title: title } - end - render json: ret - end - - def find_packages_info - ret = Array.new - packages=@pro.expand_all_packages - prj_names = Hash.new - Project.where(id: packages.map { |a| a[1] }.uniq).pluck(:id, :name).each do |id, name| - prj_names[id] = name - end - packages.each do |name, prj_id| - if prj_id==@pro.id - ret << [name, nil] - else - ret << [name, prj_names[prj_id]] - end - end - ret - end - - def find_maintenance_infos - infos = {} - pm = @pro.maintenance_project - infos[:maintenance_project] = pm.name if pm - - if @pro.is_maintenance? - mi = DbProjectType.find_by_name!('maintenance_incident') - subprojects = Project.where("projects.name like ?", @pro.name + ":%"). - where(type_id: mi.id).joins(:repositories => :release_targets). - where("release_targets.trigger = 'maintenance'") - infos[:incidents] = subprojects.pluck("projects.name").sort.uniq - - maintained_projects = [] - @pro.maintained_projects.each do |mp| - maintained_projects << mp.name - end - infos[:maintained_projects] = maintained_projects - end - if @pro.is_maintenance_incident? - rel = BsRequestCollection.new(project: @pro.name, states: ['new', 'review'], types: ['maintenance_release'], roles: ['source']) - infos[:open_release_requests] = rel.ids - end - infos - end - - def find_nr_of_problems - begin - result = backend_get("/build/#{URI.escape(@pro.name)}/_result?view=status&code=failed&code=broken&code=unresolvable") - rescue ActiveXML::Transport::NotFoundError - return 0 - end - ret = {} - Xmlhash.parse(result).elements('result') do |r| - r.elements('status') { |p| ret[p['package']] = 1 } - end - ret.keys.size - end - - def status - required_parameters :id - @project = ::Project.where(name: params[:id]).includes(:packages).first - @status = Hash.new - - # needed to map requests to package id - @name2id = Hash.new - - @ignore_pending = params[:ignore_pending] == "true" - @limit_to_fails = params[:limit_to_fails] == "true" - @limit_to_old = params[:limit_to_old] == "true" - @include_versions = params[:include_versions] == "true" - - @prj_status = Rails.cache.fetch("prj_status-#{@project.to_s}", expires_in: 5.minutes) do - ProjectStatusCalculator.new(@project).calc_status(pure_project: true) - end - - status_filter_packages - status_gather_attributes - status_gather_requests - - @packages = Array.new - @status.each_value do |p| - status_check_package(p) - end - - render json: {packages: @packages, projects: @develprojects.keys} - end - - def status_check_package(p) - currentpack = Hash.new - pname = p.name - - currentpack['name'] = pname - currentpack['failedcomment'] = p.failed_comment unless p.failed_comment.blank? - - newest = 0 - - p.fails.each do |repo, arch, time, md5| - next if newest > time - next if md5 != p.verifymd5 - currentpack['failedarch'] = arch - currentpack['failedrepo'] = repo - newest = time - currentpack['firstfail'] = newest - end - return if !currentpack['firstfail'] && @limit_to_fails - - currentpack['problems'] = Array.new - currentpack['requests_from'] = Array.new - currentpack['requests_to'] = Array.new - - key = @project.name + '/' + pname - if @submits.has_key? key - currentpack['requests_from'].concat(@submits[key]) - end - - currentpack['md5'] = p.verifymd5 - - dp = p.develpack - if dp - dproject = p.develpack.project - currentpack['develproject'] = dproject - currentpack['develpackage'] = p.develpack.name - key = "%s/%s" % [dproject, p.develpack.name] - if @submits.has_key? key - currentpack['requests_to'].concat(@submits[key]) - end - return if !currentpack['requests_from'].empty? && @ignore_pending - - currentpack['develmd5'] = dp.verifymd5 - currentpack['develmtime'] = dp.maxmtime - - if dp.error - currentpack['problems'] << 'error-' + dp.error - end - - if currentpack['md5'] && currentpack['develmd5'] && currentpack['md5'] != currentpack['develmd5'] - if p.declined_request - @declined_requests[p.declined_request].bs_request_actions.each do |action| - return unless action.source_project == dp.project && action.source_package == dp.name - - sourcerev = Rails.cache.fetch("rev-#{dp.project}-#{dp.name}-#{currentpack['md5']}") do - Directory.hashed(project: dp.project, package: dp.name)['rev'] - end - if sourcerev == action.source_rev - currentpack['currently_declined'] = p.declined_request - currentpack['problems'] << 'currently_declined' - end - end - end - if currentpack['currently_declined'].nil? - if p.changesmd5 != dp.changesmd5 - currentpack['problems'] << 'different_changes' - else - currentpack['problems'] << 'different_sources' - end - end - end - end - currentpack.merge!(project_status_set_version(p)) - - if p.links_to - if currentpack['md5'] != p.links_to.verifymd5 - currentpack['problems'] << 'diff_against_link' - currentpack['lproject'] = p.links_to.project - currentpack['lpackage'] = p.links_to.name - end - end - - return unless (currentpack['firstfail'] or currentpack['failedcomment'] or currentpack['upstream_version'] or - !currentpack['problems'].empty? or !currentpack['requests_from'].empty? or !currentpack['requests_to'].empty?) - if @limit_to_old - return if (currentpack['firstfail'] or currentpack['failedcomment'] or - !currentpack['problems'].empty? or !currentpack['requests_from'].empty? or !currentpack['requests_to'].empty?) - end - @packages << currentpack - end - - def status_filter_packages - filter_for_user = User.get_by_login(params[:filter_for_user]) unless params[:filter_for_user].blank? - no_project = "_none_" - all_projects = "_all_" - current_develproject = params[:filter_devel] || all_projects - @develprojects = Hash.new - packages_to_filter_for = nil - if filter_for_user - packages_to_filter_for = filter_for_user.user_relevant_packages_for_status - end - @prj_status.each_value do |value| - if value.develpack - dproject = value.develpack.project - @develprojects[dproject] = 1 - if (current_develproject != dproject or current_develproject == no_project) and current_develproject != all_projects - next - end - else - next if @current_develproject == no_project - end - if filter_for_user - if value.develpack - next unless packages_to_filter_for.include? value.develpack.package_id - else - next unless packages_to_filter_for.include? value.package_id - end - end - @status[value.package_id] = value - @name2id[value.name] = value.package_id - end - end - - def status_gather_requests - # we do not filter requests for project because we need devel projects too later on and as long as the - # number of open requests is limited this is the easiest solution - raw_requests = ::BsRequest.order(:id).where(state: [:new, :review, :declined]).joins(:bs_request_actions). - where(bs_request_actions: {type: 'submit'}).pluck("bs_requests.id", "bs_requests.state", - "bs_request_actions.target_project", - "bs_request_actions.target_package") - - @declined_requests = {} - @submits = Hash.new - raw_requests.each do |id, state, tproject, tpackage| - if state == "declined" - next if tproject != @project.name || !@name2id.has_key?(tpackage) - @status[@name2id[tpackage]].declined_request = id - @declined_requests[id] = nil - else - key = "#{tproject}/#{tpackage}" - @submits[key] ||= Array.new - @submits[key] << id - end - end - BsRequest.where(id: @declined_requests.keys).each do |r| - @declined_requests[r.id] = r - end - end - - def status_gather_attributes - project_status_attributes(@status.keys, 'OBS', 'ProjectStatusPackageFailComment') do |package, value| - @status[package].failed_comment = value - end - - if @include_versions || @limit_to_old - project_status_attributes(@status.keys, 'openSUSE', 'UpstreamVersion') do |package, value| - @status[package].upstream_version = value - end - project_status_attributes(@status.keys, 'openSUSE', 'UpstreamTarballURL') do |package, value| - @status[package].upstream_url= value - end - end - end - - protected - - def project_status_attributes(packages, namespace, name) - ret = Hash.new - at = AttribType.find_by_namespace_and_name(namespace, name) - return unless at - attribs = at.attribs.where(db_package_id: packages) - AttribValue.where(attrib_id: attribs).joins(:attrib).pluck("attribs.db_package_id, value").each do |id, value| - yield id, value - end - ret - end - - def project_status_set_version(p) - ret = {} - ret['version'] = p.version - if p.upstream_version - begin - gup = Gem::Version.new(p.version) - guv = Gem::Version.new(p.upstream_version) - rescue ArgumentError - # if one of the versions can't be parsed we simply can't say - end - - if gup && guv && gup < guv - ret['upstream_version'] = p.upstream_version - ret['upstream_url'] = p.upstream_url - end - end - ret - end - -end diff --git a/src/api/config/routes.rb b/src/api/config/routes.rb index 3b45426f3ff..022f022fe4e 100644 --- a/src/api/config/routes.rb +++ b/src/api/config/routes.rb @@ -332,11 +332,7 @@ # DO NOT USE THEM IN YOUR TOOLS! # namespace :webui do - resources :projects, :only => [:index], constraints: { :id => %r{[^\/]*} } do - member do - get 'infos' - get 'status' - end + resources :projects, constraints: { :id => %r{[^\/]*} } do resources :flags, :only => [:index] resources :packages, :only => [], constraints: { :id => %r{[^\/]*} } do resources :relationships, :only => [:create] do diff --git a/src/api/test/functional/webui_controller_test.rb b/src/api/test/functional/webui_controller_test.rb index 21a8216c8e3..63b3ab15e7c 100644 --- a/src/api/test/functional/webui_controller_test.rb +++ b/src/api/test/functional/webui_controller_test.rb @@ -9,34 +9,6 @@ def setup wait_for_scheduler_start end - def test_project_infos - get '/webui/projects/home:Iggy/infos' - assert_response 401 - - login_Iggy - get '/webui/projects/home:Iggy/infos' - assert_response :success - - end - - def test_remote_projects - get "/webui/projects/remotes" - assert_response 401 - - login_Iggy - get "/webui/projects/remotes" - assert_response :success - assert_match(/RemoteInstance/, @response.body) - end - - def test_remote_projects_as_admin - login_king - get "/webui/projects/remotes" - assert_response :success - assert_match(/RemoteInstance/, @response.body) - assert_match(/Remoteurl project which is hidden/, @response.body) - end - def test_search_owner login_king @@ -100,13 +72,6 @@ def test_search_owner assert_response :success end - test 'project status' do - login_Iggy - - get '/webui/projects/LocalProject/status?limit_to_fails=true&limit_to_old=false&include_versions=true&ignore_pending=false&filter_devel=_all_' - assert_response :success - end - test 'package rdiff' do login_Iggy diff --git a/src/api/test/unit/code_quality_test.rb b/src/api/test/unit/code_quality_test.rb index 1ecc5f39979..7fe3a9b3ee9 100644 --- a/src/api/test/unit/code_quality_test.rb +++ b/src/api/test/unit/code_quality_test.rb @@ -150,7 +150,6 @@ def setup 'UserLdapStrategy::initialize_ldap_con' => 64.05, 'UserLdapStrategy::render_grouplist_ldap' => 100.3, 'UserLdapStrategy::update_entry_ldap' => 59.56, - 'Webui::ProjectsController#status_check_package' => 200, 'WizardController#package_wizard' => 135.16, } diff --git a/src/api/webui/app/controllers/webui/project_controller.rb b/src/api/webui/app/controllers/webui/project_controller.rb index d3539535c44..d4f6080790e 100644 --- a/src/api/webui/app/controllers/webui/project_controller.rb +++ b/src/api/webui/app/controllers/webui/project_controller.rb @@ -202,7 +202,7 @@ def new_package end def new_package_branch - @remote_projects = ApiDetails.read(:projects_remotes) + @remote_projects = Project.where.not(remoteurl: nil).pluck(:id, :name, :title) end def incident_request_dialog @@ -246,26 +246,72 @@ def new_release_request redirect_to :action => 'show', :project => params[:project] end - def load_project_info - return unless check_valid_project_name + def find_packages_info + ret = Array.new + packages=@pro.expand_all_packages + prj_names = Hash.new + Project.where(id: packages.map { |a| a[1] }.uniq).pluck(:id, :name).each do |id, name| + prj_names[id] = name + end + packages.each do |name, prj_id| + if prj_id==@pro.id + ret << [name, nil] + else + ret << [name, prj_names[prj_id]] + end + end + ret + end + + def find_maintenance_infos + pm = @pro.maintenance_project + @project_maintenance_project = pm.name if pm + + @is_maintenance_project = @pro.is_maintenance? + if @is_maintenance_project + mi = DbProjectType.find_by_name!('maintenance_incident') + subprojects = Project.where("projects.name like ?", @pro.name + ":%"). + where(type_id: mi.id).joins(:repositories => :release_targets). + where("release_targets.trigger = 'maintenance'") + @open_maintenance_incidents = subprojects.pluck("projects.name").sort.uniq + + @maintained_projects = [] + @pro.maintained_projects.each do |mp| + @maintained_projects << mp.name + end + end + @is_incident_project = @pro.is_maintenance_incident? + if @is_incident_project + rel = BsRequestCollection.new(project: @pro.name, states: ['new', 'review'], types: ['maintenance_release'], roles: ['source']) + @open_release_requests = rel.ids + end + end + + def find_nr_of_problems begin - @project_info = ApiDetails.read(:infos_project, params[:project]) - rescue ApiDetails::NotFoundError - return render_project_missing + result = ActiveXML.backend.direct_http("/build/#{URI.escape(@pro.name)}/_result?view=status&code=failed&code=broken&code=unresolvable") + rescue ActiveXML::Transport::NotFoundError + return 0 end - @project = WebuiProject.new(@project_info['xml']) - @packages = @project_info['packages'].map { |p| p[0] }.sort - @open_maintenance_incidents = @project_info['incidents'] - @linking_projects = @project_info['linking_projects'] - @requests = @project_info['requests'] - @nr_of_problem_packages = @project_info['nr_of_problem_packages'] + ret = {} + Xmlhash.parse(result).elements('result') do |r| + r.elements('status') { |p| ret[p['package']] = 1 } + end + ret.keys.size + end - # Is this a maintenance master project ? - @is_maintenance_project = @project.project_type == "maintenance" - @is_incident_project = @project.project_type == 'maintenance_incident' + def load_project_info + return unless check_valid_project_name + @pro = Project.find_by_name(params[:project]) + return render_project_missing unless @pro - @maintained_projects = @project_info['maintained_projects'] - @open_release_requests = @project_info['open_release_requests'] + find_maintenance_infos + @project = WebuiProject.new(@pro.to_axml) + @packages = find_packages_info.map { |p| p[0] }.sort + @linking_projects = @pro.find_linking_projects.map { |p| p.name } + reqs = @pro.request_ids_by_class + @requests = (reqs['reviews'] + reqs['targets'] + reqs['incidents'] + reqs['maintenance_release']).sort.uniq + @nr_of_problem_packages = find_nr_of_problems end def show @@ -276,8 +322,6 @@ def show @bugowners_mail.push(mail.to_s) if mail end unless @spider_bot - @project_maintenance_project = @project_info['maintenance_project'] unless @spider_bot - # An incident has a patchinfo if there is a package 'patchinfo' with file '_patchinfo', try to find that: @has_patchinfo = false @packages.each do |pkg_element| @@ -629,7 +673,9 @@ def save_new @project.title.text = params[:title] @project.description.text = params[:description] @project.set_project_type('maintenance') if params[:maintenance_project] - @project.set_remoteurl(params[:remoteurl]) if params[:remoteurl] + if params[:remoteurl] + @project.add_element('remoteurl').text = params[:remoteurl] + end if params[:access_protection] @project.add_element 'access' @project.access.add_element 'disable' @@ -1161,15 +1207,231 @@ def edit_comment @update = params[:update] end + def calc_status(project_name) + @api_project = ::Project.where(name: project_name).includes(:packages).first + @status = Hash.new + + # needed to map requests to package id + @name2id = Hash.new + + @prj_status = Rails.cache.fetch("prj_status-#{@api_project.to_s}", expires_in: 5.minutes) do + ProjectStatusCalculator.new(@api_project).calc_status(pure_project: true) + end + + status_filter_packages + status_gather_attributes + status_gather_requests + + @packages = Array.new + @status.each_value do |p| + status_check_package(p) + end + + return {packages: @packages, projects: @develprojects.keys} + end + + def status_check_package(p) + currentpack = Hash.new + pname = p.name + + currentpack['name'] = pname + currentpack['failedcomment'] = p.failed_comment unless p.failed_comment.blank? + + newest = 0 + + p.fails.each do |repo, arch, time, md5| + next if newest > time + next if md5 != p.verifymd5 + currentpack['failedarch'] = arch + currentpack['failedrepo'] = repo + newest = time + currentpack['firstfail'] = newest + end + return if !currentpack['firstfail'] && @limit_to_fails + + currentpack['problems'] = Array.new + currentpack['requests_from'] = Array.new + currentpack['requests_to'] = Array.new + + key = @api_project.name + '/' + pname + if @submits.has_key? key + currentpack['requests_from'].concat(@submits[key]) + end + + currentpack['md5'] = p.verifymd5 + + dp = p.develpack + if dp + dproject = p.develpack.project + currentpack['develproject'] = dproject + currentpack['develpackage'] = p.develpack.name + key = "%s/%s" % [dproject, p.develpack.name] + if @submits.has_key? key + currentpack['requests_to'].concat(@submits[key]) + end + return if !currentpack['requests_from'].empty? && @ignore_pending + + currentpack['develmd5'] = dp.verifymd5 + currentpack['develmtime'] = dp.maxmtime + + if dp.error + currentpack['problems'] << 'error-' + dp.error + end + + if currentpack['md5'] && currentpack['develmd5'] && currentpack['md5'] != currentpack['develmd5'] + if p.declined_request + @declined_requests[p.declined_request].bs_request_actions.each do |action| + return unless action.source_project == dp.project && action.source_package == dp.name + + sourcerev = Rails.cache.fetch("rev-#{dp.project}-#{dp.name}-#{currentpack['md5']}") do + Directory.hashed(project: dp.project, package: dp.name)['rev'] + end + if sourcerev == action.source_rev + currentpack['currently_declined'] = p.declined_request + currentpack['problems'] << 'currently_declined' + end + end + end + if currentpack['currently_declined'].nil? + if p.changesmd5 != dp.changesmd5 + currentpack['problems'] << 'different_changes' + else + currentpack['problems'] << 'different_sources' + end + end + end + end + currentpack.merge!(project_status_set_version(p)) + + if p.links_to + if currentpack['md5'] != p.links_to.verifymd5 + currentpack['problems'] << 'diff_against_link' + currentpack['lproject'] = p.links_to.project + currentpack['lpackage'] = p.links_to.name + end + end + + return unless (currentpack['firstfail'] or currentpack['failedcomment'] or currentpack['upstream_version'] or + !currentpack['problems'].empty? or !currentpack['requests_from'].empty? or !currentpack['requests_to'].empty?) + if @limit_to_old + return if (currentpack['firstfail'] or currentpack['failedcomment'] or + !currentpack['problems'].empty? or !currentpack['requests_from'].empty? or !currentpack['requests_to'].empty?) + end + @packages << currentpack + end + + def status_filter_packages + filter_for_user = User.get_by_login(@filter_for_user) unless @filter_for_user.blank? + current_develproject = @filter || @all_projects + @develprojects = Hash.new + packages_to_filter_for = nil + if filter_for_user + packages_to_filter_for = filter_for_user.user_relevant_packages_for_status + end + @prj_status.each_value do |value| + if value.develpack + dproject = value.develpack.project + @develprojects[dproject] = 1 + if (current_develproject != dproject or current_develproject == @no_project) and current_develproject != @all_projects + next + end + else + next if @current_develproject == @no_project + end + if filter_for_user + if value.develpack + next unless packages_to_filter_for.include? value.develpack.package_id + else + next unless packages_to_filter_for.include? value.package_id + end + end + @status[value.package_id] = value + @name2id[value.name] = value.package_id + end + end + + def status_gather_requests + # we do not filter requests for project because we need devel projects too later on and as long as the + # number of open requests is limited this is the easiest solution + raw_requests = ::BsRequest.order(:id).where(state: [:new, :review, :declined]).joins(:bs_request_actions). + where(bs_request_actions: {type: 'submit'}).pluck("bs_requests.id", "bs_requests.state", + "bs_request_actions.target_project", + "bs_request_actions.target_package") + + @declined_requests = {} + @submits = Hash.new + raw_requests.each do |id, state, tproject, tpackage| + if state == "declined" + next if tproject != @api_project.name || !@name2id.has_key?(tpackage) + @status[@name2id[tpackage]].declined_request = id + @declined_requests[id] = nil + else + key = "#{tproject}/#{tpackage}" + @submits[key] ||= Array.new + @submits[key] << id + end + end + ::BsRequest.where(id: @declined_requests.keys).each do |r| + @declined_requests[r.id] = r + end + end + + def status_gather_attributes + project_status_attributes(@status.keys, 'OBS', 'ProjectStatusPackageFailComment') do |package, value| + @status[package].failed_comment = value + end + + if @include_versions || @limit_to_old + project_status_attributes(@status.keys, 'openSUSE', 'UpstreamVersion') do |package, value| + @status[package].upstream_version = value + end + project_status_attributes(@status.keys, 'openSUSE', 'UpstreamTarballURL') do |package, value| + @status[package].upstream_url= value + end + end + end + + def project_status_attributes(packages, namespace, name) + ret = Hash.new + at = AttribType.find_by_namespace_and_name(namespace, name) + return unless at + attribs = at.attribs.where(db_package_id: packages) + AttribValue.where(attrib_id: attribs).joins(:attrib).pluck("attribs.db_package_id, value").each do |id, value| + yield id, value + end + ret + end + + def project_status_set_version(p) + ret = {} + ret['version'] = p.version + if p.upstream_version + begin + gup = Gem::Version.new(p.version) + guv = Gem::Version.new(p.upstream_version) + rescue ArgumentError + # if one of the versions can't be parsed we simply can't say + end + + if gup && guv && gup < guv + ret['upstream_version'] = p.upstream_version + ret['upstream_url'] = p.upstream_url + end + end + ret + end + def status all_packages = 'All Packages' no_project = 'No Project' + @no_project = "_none_" + @all_projects = "_all_" @current_develproject = params[:filter_devel] || all_packages - filter = @current_develproject - if filter == all_packages - filter = '_all_' + @filter = @current_develproject + if @filter == all_packages + @filter = @all_projects elsif filter == no_project - filter = '_none_' + @filter = @no_project end @ignore_pending = params[:ignore_pending] || false @limit_to_fails = !(!params[:limit_to_fails].nil? && params[:limit_to_fails] == 'false') @@ -1178,15 +1440,10 @@ def status @filter_for_user = params[:filter_for_user] @develprojects = Hash.new - ps = ApiDetails.read(:status_project, params[:project], - filter_devel: filter, - ignore_pending: @ignore_pending, - limit_to_fails: @limit_to_fails, - limit_to_old: @limit_to_old, - include_versions: @include_versions, - filter_for_user: params[:filter_for_user]) - @packages = ps['packages'] - @develprojects = ps['projects'].sort { |x,y| x.downcase <=> y.downcase } + ps = calc_status(params[:project]) + + @packages = ps[:packages] + @develprojects = ps[:projects].sort { |x,y| x.downcase <=> y.downcase } @develprojects.insert(0, all_packages) @develprojects.insert(1, no_project) @@ -1354,7 +1611,7 @@ def render_project_missing def require_project return unless check_valid_project_name - @project ||= find_cached(WebuiProject, params[:project], :expires_in => 5.minutes ) + @project ||= WebuiProject.find(params[:project]) unless @project return render_project_missing end diff --git a/src/api/webui/app/models/webui/api_details.rb b/src/api/webui/app/models/webui/api_details.rb index 6081ae0ec0f..8019e00b6b1 100644 --- a/src/api/webui/app/models/webui/api_details.rb +++ b/src/api/webui/app/models/webui/api_details.rb @@ -63,11 +63,6 @@ def self.http_do(verb, route_name, *args) uri = "/webui/" + case route_name.to_sym - when :projects then "projects" - when :projects_remotes then "projects/remotes" - when :infos_project then "projects/#{ids.first}/infos" - when :status_project then "projects/#{ids.first}/status" - when :package_rdiff then "projects/#{ids.first}/packages/#{ids.last}/rdiff" when :requests then "requests" diff --git a/src/api/webui/app/views/webui/project/new_package_branch.html.erb b/src/api/webui/app/views/webui/project/new_package_branch.html.erb index 510891036ec..ae31499d95e 100644 --- a/src/api/webui/app/views/webui/project/new_package_branch.html.erb +++ b/src/api/webui/app/views/webui/project/new_package_branch.html.erb @@ -16,9 +16,8 @@ package.

<%= pluralize(@remote_projects.count, 'interconnect.', 'interconnects.') %>

<% end %> diff --git a/src/api/webui/app/views/webui/project/show.html.erb b/src/api/webui/app/views/webui/project/show.html.erb index 16c9d459273..7733a2cd87a 100644 --- a/src/api/webui/app/views/webui/project/show.html.erb +++ b/src/api/webui/app/views/webui/project/show.html.erb @@ -21,7 +21,7 @@ <%= @open_maintenance_incidents.length %> <%= link_to "open incident#{@open_maintenance_incidents.length == 1 ? '' : 's'}", action: 'maintenance_incidents', project: @project %>
  • - <% if @maintained_projects.length == 0 %> + <% if @maintained_projects.empty? %> <%= sprite_tag 'exclamation' %> <% else %> <%= sprite_tag 'accept' %> @@ -110,7 +110,7 @@ <% end -%> <% if @project.can_edit?( @user ) %> <% unless @project.is_remote? %> - <% if @is_incident_project && !@packages.blank? && @has_patchinfo && @open_release_requests.length == 0 %> + <% if @is_incident_project && @packages.present? && @has_patchinfo && @open_release_requests.blank? %>
  • <%= link_to(sprite_tag('brick_go') + 'Request to release', {controller: 'project', action: 'release_request_dialog', project: @project}, remote: true) %>