Revision 1cd46bac
Added by Ondřej Pražák about 8 years ago
app/assets/javascripts/integration/jenkins-users/new/new-jenkins-user.controller.js | ||
---|---|---|
1 |
angular.module('Integration.jenkins-users').controller('NewJenkinsUserController', |
|
2 |
['$scope', '$q', 'translate', 'JenkinsUser', 'Job', |
|
3 |
function ($scope, $q, translate, JenkinsUser, Job) { |
|
4 |
|
|
5 |
$scope.successMessages = []; |
|
6 |
$scope.errorMessages = []; |
|
7 |
|
|
8 |
$scope.jenkinsUser = new JenkinsUser(); |
|
9 |
var success, error; |
|
10 |
|
|
11 |
$scope.job = $scope.job || Job.get({id: $scope.$stateParams.jobId}, function () { |
|
12 |
$scope.panel.loading = false; |
|
13 |
}); |
|
14 |
|
|
15 |
success = function (response) { |
|
16 |
$scope.working = false; |
|
17 |
$scope.successMessages.push(translate('New Jenkins User successfully created')) |
|
18 |
$scope.$state.go('jobs.details.jenkins-users.list', {jobId: $scope.job.id}); |
|
19 |
}; |
|
20 |
|
|
21 |
error = function (response) { |
|
22 |
$scope.working = false; |
|
23 |
angular.forEach(response.data.errors, function (errors, field) { |
|
24 |
try { |
|
25 |
$scope.jenkinsInstanceForm[field].$setValidity('server', false); |
|
26 |
$scope.jenkinsInstanceForm[field].$error.messages = errors; |
|
27 |
} |
|
28 |
catch (err) { |
|
29 |
$scope.errorMessages.push(errors); |
|
30 |
} |
|
31 |
|
|
32 |
}); |
|
33 |
}; |
|
34 |
|
|
35 |
$scope.createJenkinsUser = function (jenkinsUser) { |
|
36 |
jenkinsUser.job_id = $scope.job.id; |
|
37 |
jenkinsUser.$save(success, error); |
|
38 |
}; |
|
39 |
|
|
40 |
$scope.transitionBack = function () { |
|
41 |
$scope.$state.go('jobs.details.jenkins-users.list', {jobId: $scope.job.id}); |
|
42 |
}; |
|
43 |
}] |
|
44 |
); |
app/assets/javascripts/integration/jenkins-users/new/views/new-jenkins-user.html | ||
---|---|---|
1 |
<section class="nutupane-details" ng-cloak bst-container-scroll> |
|
2 |
<header class="new-header details-header"> |
|
3 |
<h3 class="fl" translate>New Jenkins Instance</h3> |
|
4 |
</header> |
|
5 |
<div bst-alert success-messages="successMessages" error-messages="errorMessages"></div> |
|
6 |
<form name="jenkinsUserForm" class="form-horizontal" novalidate role="form"> |
|
7 |
<div bst-form-group label="{{ 'Name' | translate }}"> |
|
8 |
<input id="name" |
|
9 |
name="name" |
|
10 |
ng-model="jenkinsUser.name" |
|
11 |
type="text" |
|
12 |
tabindex="1" |
|
13 |
autofocus |
|
14 |
required/> |
|
15 |
</div> |
|
16 |
|
|
17 |
<div bst-form-group label="{{ 'Token' | translate }}"> |
|
18 |
<input id="token" |
|
19 |
name="token" |
|
20 |
ng-model="jenkinsUser.token" |
|
21 |
type="password" |
|
22 |
tabindex="2" |
|
23 |
required/> |
|
24 |
</div> |
|
25 |
<!-- <div bst-form-group> |
|
26 |
<p class="alert alert-info" translate> |
|
27 |
Make sure to specify the port Jenkins master is running on. Example: http://jenkins.example.com:8080 |
|
28 |
</p> |
|
29 |
</div> --> |
|
30 |
|
|
31 |
<div bst-form-buttons |
|
32 |
on-cancel="transitionBack()" |
|
33 |
on-save="createJenkinsUser(jenkinsUser)" |
|
34 |
working="working"> |
|
35 |
</div> |
|
36 |
</form> |
|
37 |
</section> |
app/assets/javascripts/integration/jobs/details/job-details-jenkins-users.controller.js | ||
---|---|---|
7 | 7 |
|
8 | 8 |
$scope.job = $scope.job || Job.get({id: $scope.$stateParams.jobId}, function () { |
9 | 9 |
$scope.panel.loading = false; |
10 |
params['jenkins_instance_id'] = $scope.job.jenkins_instance.id; |
|
11 | 10 |
}); |
12 | 11 |
|
13 | 12 |
params = { |
app/assets/javascripts/integration/jobs/details/views/job-details-jenkins-users.html | ||
---|---|---|
3 | 3 |
<section class="nutupane-sub-section"> |
4 | 4 |
<div bst-alert success-messages="successMessages" error-messages="errorMessages"></div> |
5 | 5 |
|
6 |
<h4> |
|
7 |
<span translate>Current Jenkins User: </span> |
|
8 |
|
|
9 |
<span class="no-capitalize" ng-show="job.jenkins_user.name" ng-bind="job.jenkins_user.name"></span> |
|
6 |
|
|
7 |
<h4> |
|
8 |
<span translate>Current Jenkins User: </span> |
|
9 |
|
|
10 |
<span class="no-capitalize" ng-show="job.jenkins_user.name" ng-bind="job.jenkins_user.name"></span> |
|
10 | 11 |
|
11 |
<span class="no-capitalize" ng-show="!job.jenkins_user.name" translate>none</span> |
|
12 |
</h4> |
|
12 |
<span class="no-capitalize" ng-show="!job.jenkins_user.name" translate>none</span> |
|
13 |
</h4> |
|
14 |
|
|
15 |
</div> |
|
16 |
</div> |
|
13 | 17 |
|
14 | 18 |
<br/> |
15 | 19 |
|
16 |
<section ng-show="jUserTable.rows.length > 0">
|
|
20 |
<section> |
|
17 | 21 |
<div class="row"> |
18 | 22 |
|
19 |
<div class="col-sm-3"> |
|
23 |
<div class="col-sm-3" ng-show="jUserTable.rows.length > 0">
|
|
20 | 24 |
<input type="text" |
21 | 25 |
class="form-control" |
22 | 26 |
placeholder="{{ 'Filter' | translate }}" |
... | ... | |
25 | 29 |
|
26 | 30 |
<div class="fr select-action"> |
27 | 31 |
|
32 |
<span ng-show="jUserTable.rows.length > 0"> |
|
28 | 33 |
<button class="btn btn-default" |
34 |
|
|
29 | 35 |
ng-hide="denied('edit_jobs')" |
30 | 36 |
ng-disabled="!jUserTable.chosenRow || jUserTable.working" |
31 | 37 |
ng-click="setJenkinsUser()"> |
... | ... | |
33 | 39 |
<i class="icon-spinner icon-spin" ng-show="jUserTable.working"></i> |
34 | 40 |
{{ 'Set Jenkins User' | translate }} |
35 | 41 |
</button> |
42 |
</span> |
|
36 | 43 |
|
44 |
<button class="btn btn-default" |
|
45 |
ng-hide="denied('edit_jobs')" |
|
46 |
ui-sref="jobs.details.jenkins-users.new"> |
|
47 |
<i class="icon-file-alt"></i> |
|
48 |
{{ 'New Jenkins User' | translate }} |
|
49 |
</button> |
|
37 | 50 |
</div> |
38 | 51 |
</div> |
39 | 52 |
|
40 |
<div bst-table="jUserTable" class="nutupane"> |
|
53 |
<div bst-table="jUserTable" class="nutupane" ng-show="jUserTable.rows.length > 0">
|
|
41 | 54 |
<div bst-container-scroll bst-infinite-scroll="jUserTable.nextPage()"> |
42 | 55 |
|
43 | 56 |
<table |
app/assets/javascripts/integration/jobs/jobs.module.js | ||
---|---|---|
140 | 140 |
controller: 'JobDetailsJenkinsUsersController', |
141 | 141 |
templateUrl: 'integration/jobs/details/views/job-details-jenkins-users.html' |
142 | 142 |
}) |
143 |
.state('jobs.details.jenkins-users.new', { |
|
144 |
url: '/jenkins_users/new', |
|
145 |
collapsed: 'true', |
|
146 |
permission: 'create_jenkins_users', |
|
147 |
controller: 'NewJenkinsUserController', |
|
148 |
templateUrl: 'integration/jenkins-users/new/views/new-jenkins-user.html' |
|
149 |
}) |
|
143 | 150 |
|
144 | 151 |
}]); |
app/controllers/integration/api/jenkins_users_controller.rb | ||
---|---|---|
6 | 6 |
|
7 | 7 |
before_filter :find_organization, :only => [:create, :index] |
8 | 8 |
before_filter :find_jenkins_user, :only => [:show, :destroy] |
9 |
before_filter :find_job, :only => [:create] |
|
9 | 10 |
|
10 | 11 |
def index |
11 | 12 |
ids = JenkinsUser.readable |
12 | 13 |
.where(:organization_id => @organization.id, :jenkins_instance_id => params[:jenkins_instance_id]) |
13 | 14 |
.pluck(:id) |
14 |
|
|
15 | 15 |
filters = [:terms => {:id => ids}] |
16 | 16 |
|
17 | 17 |
options = { |
... | ... | |
27 | 27 |
|
28 | 28 |
def create |
29 | 29 |
@jenkins_user = JenkinsUser.new(jenkins_user_params) |
30 |
@jenkins_user.owner = ::User.current |
|
31 |
fail ::Katello::HttpErrors::Conflict, "Could not create Jenkins User: |
|
32 |
No Jenkins Instance set for Job " if @job.jenkins_instance.nil? |
|
33 |
@jenkins_user.jenkins_instance = @job.jenkins_instance |
|
30 | 34 |
@jenkins_user.organization = @organization |
35 |
binding.pry |
|
31 | 36 |
@jenkins_user.save! |
32 | 37 |
|
33 | 38 |
respond_for_show(:resource => @jenkins_user) |
... | ... | |
46 | 51 |
fail ::Katello::HttpErrors::NotFound, "Could not find Jenkins User with id #{params[:id]}" if @jenkins_user.nil? |
47 | 52 |
@jenkins_user |
48 | 53 |
end |
54 |
|
|
55 |
def find_job |
|
56 |
@job = Job.find_by_id(params[:job_id]) |
|
57 |
fail ::Katello::HttpErrors::NotFound, "Could not find job with id #{params[:job_id]}" if @job.nil? |
|
58 |
@job |
|
59 |
end |
|
60 |
|
|
61 |
def jenkins_user_params |
|
62 |
params.require(:jenkins_user).permit(:name, :token, :job_id) |
|
63 |
end |
|
49 | 64 |
|
50 | 65 |
end |
51 | 66 |
end |
app/models/integration/jenkins_user.rb | ||
---|---|---|
6 | 6 |
include Glue::ElasticSearch::JenkinsUser |
7 | 7 |
include Integration::Authorization::JenkinsUser |
8 | 8 |
|
9 |
has_many :jobs, :class_name => "Integration::Job" |
|
9 |
has_many :jobs, :class_name => "Integration::Job", :dependent => :nullify
|
|
10 | 10 |
belongs_to :organization |
11 | 11 |
belongs_to :jenkins_instance, :class_name => "Integration::JenkinsInstance" |
12 |
belongs_to :owner, :class_name => "User" |
|
12 |
belongs_to :owner, :class_name => "::User"
|
|
13 | 13 |
end |
14 | 14 |
end |
db/migrate/20150313115956_change_jenkins_user_owner.rb | ||
---|---|---|
1 |
class ChangeJenkinsUserOwner < ActiveRecord::Migration |
|
2 |
def up |
|
3 |
rename_column :integration_jenkins_users, :user_id, :owner_id |
|
4 |
end |
|
5 |
|
|
6 |
def down |
|
7 |
rename_column :integration_jenkins_users, :owner_id, :user_id |
|
8 |
end |
|
9 |
end |
Also available in: Unified diff
minor improvements