Skip to content

Commit

Permalink
Merge pull request #6202 from mdeniz/staging_workflow/saray_list_infos
Browse files Browse the repository at this point in the history
Show infos section on Staging Workflow layout
  • Loading branch information
Moisés Déniz Alemán committed Nov 8, 2018
2 parents 96a894a + 2eab8e9 commit fd109e3
Show file tree
Hide file tree
Showing 12 changed files with 122 additions and 7 deletions.
14 changes: 14 additions & 0 deletions src/api/app/assets/stylesheets/webui2/dashed-list.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
.dashed-list {
display: flex;
flex-wrap: wrap;
list-style: none;
}

.dashed-list-item + .dashed-list-item::before {
display: inline-block;
content: "-";
}

.dashed-list-item + .dashed-list-item {
padding-left: 0.25rem;
}
1 change: 1 addition & 0 deletions src/api/app/assets/stylesheets/webui2/webui2.css.scss
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
@import 'breadcrumbs-component';
@import 'tabs-component';
@import 'personal-navigation';
@import 'dashed-list';
@import 'list-group-item-integrated';
@import 'icons';
@import 'kaminari';
Expand Down
7 changes: 7 additions & 0 deletions src/api/app/controllers/webui/staging_workflows_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,13 @@ def edit
authorize @staging_workflow

@project = @staging_workflow.project
@unassigned_requests = @staging_workflow.unassigned_requests.first(5)
@more_unassigned_requests = @staging_workflow.unassigned_requests.count - @unassigned_requests.size
@ready_requests = @staging_workflow.ready_requests.first(5)
@more_ready_requests = @staging_workflow.ready_requests.count - @ready_requests.size
@ignored_requests = @staging_workflow.ignored_requests.first(5)
@more_ignored_requests = @staging_workflow.ignored_requests.count - @ignored_requests.size
@empty_projects = @staging_workflow.staging_projects.without_staged_requests
end

private
Expand Down
4 changes: 4 additions & 0 deletions src/api/app/models/project.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1692,6 +1692,10 @@ def dashboard
packages.find_by(name: 'dashboard')
end

def staging_identifier
name[/.*:Staging:(.*)/, 1]
end

private

def discard_cache
Expand Down
18 changes: 16 additions & 2 deletions src/api/app/models/staging_workflow.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,27 @@ def without_staged_requests
includes(:staged_requests).where(bs_requests: { id: nil })
end
end
has_many :target_of_bs_requests, through: :project

has_many :target_of_bs_requests, through: :project do
def stageable
in_states(['new', 'review'])
end

def ready_to_stage
in_states('new')
end
end

has_many :staged_requests, class_name: 'BsRequest', through: :staging_projects

after_create :create_staging_projects

def unassigned_requests
target_of_bs_requests.in_states(['new', 'review']) - staged_requests - ignored_requests
target_of_bs_requests.stageable - staged_requests - ignored_requests
end

def ready_requests
target_of_bs_requests.ready_to_stage - staged_requests - ignored_requests
end

def ignored_requests
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
- if projects.empty?
None
- else
%ol.dashed-list.pl-2
- projects.sort.each do |project|
%li.dashed-list-item
= link_to(project.staging_identifier, project_show_path(project.name))
Original file line number Diff line number Diff line change
@@ -1,4 +1,18 @@
.card.mb-3
%h5.card-header Infos
.card-body
Placeholder for the content
%dl
%dt Empty projects:
%dd= render 'empty_projects_list', projects: empty_projects

%dt Backlog:
-# TODO: add link to see the full list of the backlog of requests
%dd= render 'requests_list', requests: unassigned_requests, more_requests: more_unassigned_requests

%dt Ready:
-# TODO: add link to see the full list of ready requests
%dd= render 'requests_list', requests: ready_requests, more_requests: more_ready_requests

%dt Ignored:
-# TODO: add link when IgnoredRequest model is done
%dd= render 'requests_list', requests: ignored_requests, more_requests: more_ignored_requests
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
- if requests.empty?
Empty
- else
%ul.pl-2.list-unstyled
- requests.each do |request|
%li= link_to(elide(request.first_target_package, 19), request_show_path(request.number))
- unless more_requests.zero?
%li ... #{more_requests} more
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,11 @@
= render partial: 'problems', locals: { project: staging_project }
.col-xl-2
= render partial: 'legend'
= render partial: 'infos'
= render partial: 'infos', locals: { staging_workflow: @staging_workflow, empty_projects: @empty_projects,
unassigned_requests: @unassigned_requests, more_unassigned_requests: @more_unassigned_requests,
ready_requests: @ready_requests, more_ready_requests: @more_ready_requests,
ignored_requests: @ignored_requests, more_ignored_requests: @more_ignored_requests,
project: @project }

- content_for :ready_function do
$('#staging-projects-datatable').DataTable({ responsive: true });
8 changes: 6 additions & 2 deletions src/api/spec/factories/bs_requests.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
target_package { nil }
target_repository { nil }
reviewer { nil }
request_state { 'review' }
request_state { nil }
end

before(:create) do |request, evaluator|
Expand Down Expand Up @@ -41,6 +41,10 @@
source_project: evaluator.source_project,
source_package: evaluator.source_package
)
if evaluator.request_state
request.state = evaluator.request_state
request.save!
end
end
end

Expand Down Expand Up @@ -86,7 +90,7 @@
source_package: evaluator.source_package
)
request.reviews << Review.new(by_group: evaluator.reviewer)
request.state = evaluator.request_state
request.state = evaluator.request_state || 'review'
request.save!
end
end
Expand Down
6 changes: 6 additions & 0 deletions src/api/spec/models/project_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -603,4 +603,10 @@ def reset_project_in_backend
'sourceaccess' => [['enable', {}]], 'access' => [['enable', {}]])
}
end

describe '#staging_identifier' do
let(:staging_project) { create(:project, name: 'openSUSE_41:Staging:myStagingProject') }

it { expect(staging_project.staging_identifier).to eq('myStagingProject') }
end
end
34 changes: 33 additions & 1 deletion src/api/spec/models/staging_workflow_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,14 @@
let(:source_package) { create(:package, name: 'source_package', project: source_project) }
let(:bs_request) do
create(:bs_request_with_submit_action,
request_state: 'review',
target_project: project.name,
target_package: target_package.name,
source_project: source_project.name,
source_package: source_package.name)
end

describe '#unassigned_request' do
describe '#unassigned_requests' do
subject { staging_workflow.unassigned_requests }

context 'without requests in the main project' do
Expand Down Expand Up @@ -54,4 +55,35 @@
it { expect(subject).to contain_exactly(bs_request_2) }
end
end

describe '#ready_requests' do
subject { staging_workflow.ready_requests }

context 'without requests in the main project' do
it { expect(subject).to be_empty }
end

context 'with requests but not in state new' do
before { bs_request }

it { expect(subject).to be_empty }
end

context 'with requests and some are in staging projects and some not' do
let!(:bs_request_2) do
create(:bs_request_with_submit_action,
target_project: project.name,
target_package: target_package.name,
source_project: source_project.name,
source_package: source_package.name)
end

before do
bs_request.staging_project = staging_project
bs_request.save
end

it { expect(subject).to contain_exactly(bs_request_2) }
end
end
end

0 comments on commit fd109e3

Please sign in to comment.