redmine_remotes 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5ec17037ac80473370e7c9b8fd56774b98da0855e88c2feec90fd123476ed2d9
4
- data.tar.gz: 1124e5e58d753ea46bc97385c3e28e0a0a2e9d52b1326e0e46beb057c454b582
3
+ metadata.gz: d7ec7641f2a0fa365011119971dbe87875bd2d89a0b1a309f4849498810eb4c2
4
+ data.tar.gz: 2b5877691f690622b098bbea6551e77b415e4a10727573f4cb9b8d490e78963d
5
5
  SHA512:
6
- metadata.gz: 9adc361d8c1bdcb567ddfbf4f9692c78e38ef2b0f588b3b1d5dead23642dc5f175bce99dd6eef6403a1e13e8067d30be338fa206d3cd861f34f67f9a45473762
7
- data.tar.gz: 442e49138e08f3aca322406fa3c8ab4de52960e4b3244c4309cae745460139e76a6d6bf081cb067bcdc3536d170b067b07071d4b0ed2cb26d35a9b0dde697470
6
+ metadata.gz: 8afb48ab0775f253e431a024e518fa466e6881768e50c47418a15db4e488dd660f3f478973fb373c7ca624aaca1daaeab20cbf60071619a797a5771c07e03d24
7
+ data.tar.gz: 70c63885ccb1fb9c6273586688128f76b4f1dba485016a1a58d9692caa121b42a465ce7a83d63c4ac4245e0f3e941a919c38d48ff799387bbdacb07111a354e7
@@ -10,9 +10,10 @@ class RemoteTrackersController < ApplicationController
10
10
  require_permission PERMISSIONS
11
11
 
12
12
  active_scaffold :remote_tracker do |conf|
13
- conf.columns = %i[profile root_url username password]
13
+ conf.columns = %i[profile root_url username password default_local_user]
14
14
  conf.columns[:password].form_ui = :password
15
15
  conf.columns[:profile].form_ui = :select
16
+ conf.columns[:default_local_user].form_ui = :select
16
17
  %w[list show].each { |action| conf.send(action).columns.exclude :password }
17
18
  end
18
19
 
@@ -1,6 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class RemoteIssueStatus < ActiveRecord::Base
4
+ include ::RedmineRemotes::Sanitizer
5
+
6
+ downcase_columns :remote_name
7
+
4
8
  belongs_to :remote_tracker
5
9
  belongs_to :local_tracker, class_name: 'Tracker'
6
10
  belongs_to :local_issue_status, class_name: 'IssueStatus'
@@ -9,4 +13,15 @@ class RemoteIssueStatus < ActiveRecord::Base
9
13
  validates :remote_tracker, presence: true
10
14
  validates :local_tracker, presence: true
11
15
  validates :local_issue_status, presence: true
16
+
17
+ class << self
18
+ def find_local_issue_status(remote_name, remote_tracker, local_tracker)
19
+ record = ::RemoteIssueStatus.where(
20
+ remote_name: remote_name_sanitize(remote_name),
21
+ remote_tracker: remote_tracker,
22
+ local_tracker: local_tracker
23
+ ).first
24
+ record ? record.local_issue_status : nil
25
+ end
26
+ end
12
27
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_ruby_utils/listable'
4
+ require 'validate_url'
4
5
 
5
6
  class RemoteTracker < ActiveRecord::Base
6
7
  include ::EacRubyUtils::Listable
@@ -11,11 +12,13 @@ class RemoteTracker < ActiveRecord::Base
11
12
  dependent: :destroy
12
13
  has_many :remote_users, class_name: 'RemoteUser', inverse_of: :remote_tracker,
13
14
  dependent: :restrict_with_error
15
+ belongs_to :default_local_user, class_name: 'User', inverse_of: :remote_trackers_as_default
14
16
 
15
17
  validates :profile, presence: true, inclusion: { in: lists.profile.values }
16
- validates :root_url, presence: true, uniqueness: { scope: [:username] }
18
+ validates :root_url, presence: true, uniqueness: { scope: [:username] }, url: true
17
19
  validates :username, presence: true
18
20
  validates :password, presence: true
21
+ validates :default_local_user, presence: true
19
22
 
20
23
  def to_s
21
24
  "#{root_url} [#{profile_label}, #{username}]"
@@ -1,9 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class RemoteUser < ActiveRecord::Base
4
+ include ::RedmineRemotes::Sanitizer
5
+
6
+ downcase_columns :remote_login
7
+
4
8
  belongs_to :remote_tracker, class_name: 'RemoteTracker', inverse_of: :remote_users
5
9
  belongs_to :local_user, class_name: 'User', inverse_of: :remote_users
6
10
 
7
11
  validates :remote_login, presence: true, uniqueness: { scope: [:remote_tracker] }
8
12
  validates :local_user, presence: true
13
+
14
+ class << self
15
+ def find_local_user(remote_login, tracker = nil)
16
+ [tracker, nil].each do |tracker|
17
+ remote_user = ::RemoteUser.where(
18
+ remote_tracker: tracker,
19
+ remote_login: remote_login_sanitize(remote_login)
20
+ ).first
21
+ return remote_user.local_user if remote_user
22
+ end
23
+ nil
24
+ end
25
+ end
9
26
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddDefaultLocalUserIdToRemoteTrackers < ActiveRecord::Migration
4
+ def change
5
+ add_reference :remote_trackers, :default_local_user, index: true
6
+
7
+ add_foreign_key :remote_trackers, :users, column: :default_local_user_id
8
+ end
9
+ end
@@ -8,6 +8,9 @@ module EacRedmineUsability
8
8
  included do
9
9
  has_many :remote_users, class_name: 'RemoteUser', inverse_of: :local_user,
10
10
  dependent: :destroy
11
+ has_many :remote_trackers_as_default,
12
+ class_name: 'RemoteTracker', inverse_of: :default_local_user,
13
+ dependent: :restrict_with_error
11
14
  end
12
15
  end
13
16
  end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RedmineRemotes
4
+ module Sanitizer
5
+ extend ::ActiveSupport::Concern
6
+
7
+ class << self
8
+ def downcase_sanitize(value)
9
+ value.to_s.downcase.strip if value.present?
10
+ end
11
+ end
12
+
13
+ included do
14
+ extend ClassMethods
15
+ end
16
+
17
+ module ClassMethods
18
+ def downcase_columns(*columns)
19
+ columns.each { |column| downcase_column(column) }
20
+ end
21
+
22
+ def downcase_column(column)
23
+ sanitize_method = "#{column}_sanitize"
24
+ define_singleton_method sanitize_method do |column_value|
25
+ ::RedmineRemotes::Sanitizer.downcase_sanitize(column_value)
26
+ end
27
+ define_method "#{column}=" do |column_value|
28
+ self[column] = self.class.send(sanitize_method, column_value)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -3,7 +3,7 @@
3
3
  module RedmineRemotes
4
4
  SLUG = 'redmine_remotes'
5
5
  NAME = 'Redmine Remotes'
6
- VERSION = '0.3.0'
6
+ VERSION = '0.4.0'
7
7
  AUTHOR = 'Eduardo Henrique Bogoni'
8
8
  SUMMARY = 'Integração do Redmine com trackers diversos.'
9
9
  end
@@ -0,0 +1,11 @@
1
+ namespace :redmine_remotes do
2
+ Rake::TestTask.new(test: 'db:test:prepare') do |t|
3
+ plugin_root = ::File.dirname(::File.dirname(__dir__))
4
+
5
+ t.description = 'Run plugin redmine_remotes\'s tests.'
6
+ t.libs << 'test'
7
+ t.test_files = FileList["#{plugin_root}/test/**/*_test.rb"]
8
+ t.verbose = false
9
+ t.warning = false
10
+ end
11
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redmine_remotes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo Henrique Bogoni
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-12 00:00:00.000000000 Z
11
+ date: 2019-09-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eac_ruby_utils
@@ -30,6 +30,26 @@ dependencies:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 0.10.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: validate_url
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.0'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 1.0.8
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.0'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 1.0.8
33
53
  description:
34
54
  email:
35
55
  executables: []
@@ -52,12 +72,15 @@ files:
52
72
  - db/migrate/20190910182842_create_remote_users.rb
53
73
  - db/migrate/20190910203552_create_remote_issue_statuses.rb
54
74
  - db/migrate/20190911165556_rename_issue_status_id_to_local_issue_status_id_in_remote_issue_statuses.rb
75
+ - db/migrate/20190913195930_add_default_local_user_id_to_remote_trackers.rb
55
76
  - init.rb
56
77
  - lib/redmine_remotes.rb
57
78
  - lib/redmine_remotes/patches/issue_status.rb
58
79
  - lib/redmine_remotes/patches/tracker.rb
59
80
  - lib/redmine_remotes/patches/user.rb
81
+ - lib/redmine_remotes/sanitizer.rb
60
82
  - lib/redmine_remotes/version.rb
83
+ - lib/tasks/redmine_remotes.rake
61
84
  homepage:
62
85
  licenses: []
63
86
  metadata: {}