Project

General

Profile

Revision 1cd46bac

Added by Ondřej Pražák about 8 years ago

minor improvements

View differences:

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