redmine_remotes 0.9.1 → 0.12.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 +4 -4
- data/app/models/redmine_remotes/tableless/remote_issue_fetch/base.rb +3 -3
- data/app/models/redmine_remotes/tableless/remote_issue_fetch/base/_local_issue.rb +11 -15
- data/app/models/redmine_remotes/tableless/remote_issue_fetch/base/_provider_issue.rb +1 -1
- data/app/models/redmine_remotes/tableless/remote_issue_fetch/update.rb +0 -1
- data/app/models/remote_issue_status.rb +0 -11
- data/app/models/remote_tracker.rb +5 -0
- data/app/models/remote_tracker/find_issue_local_status.rb +40 -0
- data/app/models/remote_user.rb +2 -13
- data/app/models/remote_user/find_local_user.rb +60 -0
- data/lib/redmine_remotes/esosti.rb +15 -0
- data/lib/redmine_remotes/esosti/entities/issue.rb +11 -1
- data/lib/redmine_remotes/esosti/instance.rb +4 -0
- data/lib/redmine_remotes/jira/entities/issue.rb +4 -0
- data/lib/redmine_remotes/jira/instance.rb +4 -0
- data/lib/redmine_remotes/version.rb +1 -1
- metadata +9 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 70c4977d8154fa08f7d03093a35dc948c5bd78639a2a2ce42352e58c5d737050
|
4
|
+
data.tar.gz: 8c56794c3633be3b5e731800025a61a73a8df6e17c50776a87790659e0b3235d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 546876674ce5856dacf18ed183ddca546dcbdbe2ae17ede908b2512e18af12512f9fd8449d829a82105c654994f62a6a01589c42a2b7e055f5e94a64a182cec2
|
7
|
+
data.tar.gz: 2e821818b0294b9e8b889612666a7a10c0eb494abe661743bc8f9122ca741285364aea93e679bb30068b73c9aec7f53aa25f1c1e96b95a0ba2d887199509c280
|
@@ -1,15 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'eac_rails_utils/models/fetch_errors'
|
4
4
|
require 'eac_ruby_utils/core_ext'
|
5
5
|
|
6
6
|
module RedmineRemotes
|
7
7
|
module Tableless
|
8
8
|
module RemoteIssueFetch
|
9
|
-
class Base < ::EacRailsUtils::
|
9
|
+
class Base < ::EacRailsUtils::Models::Tableless
|
10
10
|
enable_simple_cache
|
11
11
|
require_sub __FILE__
|
12
|
-
include ::
|
12
|
+
include ::EacRailsUtils::Models::FetchErrors
|
13
13
|
|
14
14
|
validates :local_tracker, presence: true
|
15
15
|
validates :remote_tracker, presence: true
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module RedmineRemotes
|
4
4
|
module Tableless
|
5
5
|
module RemoteIssueFetch
|
6
|
-
class Base < ::EacRailsUtils::
|
6
|
+
class Base < ::EacRailsUtils::Models::Tableless
|
7
7
|
private
|
8
8
|
|
9
9
|
def save_local_issue
|
@@ -48,28 +48,24 @@ module RedmineRemotes
|
|
48
48
|
|
49
49
|
::RemoteUser.find_local_user(
|
50
50
|
provider_issue.author_login,
|
51
|
-
remote_tracker
|
51
|
+
remote_tracker,
|
52
|
+
true
|
52
53
|
)
|
53
54
|
end
|
54
55
|
|
55
56
|
def local_issue_status
|
56
|
-
|
57
|
+
remote_tracker.try(:find_local_issue_status, local_tracker, provider_issue.status_name,
|
58
|
+
true)
|
57
59
|
end
|
58
60
|
|
59
|
-
def
|
60
|
-
|
61
|
-
provider_issue.
|
62
|
-
remote_tracker,
|
63
|
-
local_tracker
|
64
|
-
)
|
65
|
-
end
|
61
|
+
def local_issue_description
|
62
|
+
<<~DESCRIPTION
|
63
|
+
#{provider_issue.description}
|
66
64
|
|
67
|
-
|
68
|
-
local_tracker.default_status
|
69
|
-
end
|
65
|
+
----
|
70
66
|
|
71
|
-
|
72
|
-
|
67
|
+
_Demanda remota importada de #{provider_issue.human_view_url}._
|
68
|
+
DESCRIPTION
|
73
69
|
end
|
74
70
|
end
|
75
71
|
end
|
@@ -13,15 +13,4 @@ class RemoteIssueStatus < ActiveRecord::Base
|
|
13
13
|
validates :remote_tracker, presence: true
|
14
14
|
validates :local_tracker, presence: true
|
15
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
|
27
16
|
end
|
@@ -27,6 +27,11 @@ class RemoteTracker < ActiveRecord::Base
|
|
27
27
|
validates :password, presence: true
|
28
28
|
validates :default_local_user, presence: true
|
29
29
|
|
30
|
+
def find_local_issue_status(local_tracker, remote_status_name, register_not_found = false)
|
31
|
+
::RemoteTracker::FindIssueLocalStatus.new(self, local_tracker, remote_status_name,
|
32
|
+
register_not_found).result
|
33
|
+
end
|
34
|
+
|
30
35
|
def to_s
|
31
36
|
"#{root_url} [#{profile_label}, #{username}]"
|
32
37
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
class RemoteTracker < ActiveRecord::Base
|
6
|
+
class FindIssueLocalStatus
|
7
|
+
common_constructor :remote_tracker, :local_tracker, :remote_status_name, :register_not_found
|
8
|
+
|
9
|
+
# @return [Tracker]
|
10
|
+
def result
|
11
|
+
result_by_remote_issue_status || result_by_register_not_found || result_by_local_issue_status
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def result_by_register_not_found
|
17
|
+
return nil unless register_not_found
|
18
|
+
|
19
|
+
::RemoteIssueStatus.create!(
|
20
|
+
remote_issue_status_find_attributes.merge(local_issue_status: result_by_local_issue_status)
|
21
|
+
).local_issue_status
|
22
|
+
end
|
23
|
+
|
24
|
+
def result_by_remote_issue_status
|
25
|
+
::RemoteIssueStatus.where(remote_issue_status_find_attributes).first.try(:local_issue_status)
|
26
|
+
end
|
27
|
+
|
28
|
+
def result_by_local_issue_status
|
29
|
+
local_tracker.default_status
|
30
|
+
end
|
31
|
+
|
32
|
+
def remote_issue_status_find_attributes
|
33
|
+
{
|
34
|
+
remote_name: ::RemoteIssueStatus.remote_name_sanitize(remote_status_name),
|
35
|
+
remote_tracker: remote_tracker,
|
36
|
+
local_tracker: local_tracker
|
37
|
+
}
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/app/models/remote_user.rb
CHANGED
@@ -11,18 +11,7 @@ class RemoteUser < ActiveRecord::Base
|
|
11
11
|
validates :remote_login, presence: true, uniqueness: { scope: [:remote_tracker] }
|
12
12
|
validates :local_user, presence: true
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
[remote_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
|
-
return remote_tracker.default_local_user if remote_tracker.present?
|
24
|
-
|
25
|
-
nil
|
26
|
-
end
|
14
|
+
def self.find_local_user(remote_login, remote_tracker = nil, register_not_found = false)
|
15
|
+
::RemoteUser::FindLocalUser.new(remote_login, remote_tracker, register_not_found).result
|
27
16
|
end
|
28
17
|
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
class RemoteUser < ActiveRecord::Base
|
6
|
+
class FindLocalUser
|
7
|
+
common_constructor :remote_login, :remote_tracker, :register_not_found do
|
8
|
+
self.remote_login = ::RemoteUser.remote_login_sanitize(remote_login)
|
9
|
+
end
|
10
|
+
|
11
|
+
def result
|
12
|
+
result_by_local_user || result_by_remote_user || result_by_register_not_found ||
|
13
|
+
result_by_remote_tracker_default
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def result_by_local_user
|
19
|
+
result_by_local_user_login || result_by_local_user_mail_address
|
20
|
+
end
|
21
|
+
|
22
|
+
def result_by_local_user_login
|
23
|
+
::User.find_by(login: remote_login)
|
24
|
+
end
|
25
|
+
|
26
|
+
def result_by_local_user_mail_address
|
27
|
+
condition = ::EmailAddress.arel_table[:address].matches("#{remote_login}@%")
|
28
|
+
::EmailAddress.where(condition).first.try(:user)
|
29
|
+
end
|
30
|
+
|
31
|
+
def result_by_register_not_found
|
32
|
+
return nil unless register_not_found
|
33
|
+
return nil if remote_tracker.blank?
|
34
|
+
|
35
|
+
::RemoteUser.create!(remote_login: remote_login, remote_tracker: remote_tracker,
|
36
|
+
local_user: remote_tracker.default_local_user).local_user
|
37
|
+
end
|
38
|
+
|
39
|
+
def result_by_remote_user
|
40
|
+
remote_trackers_to_search
|
41
|
+
.map { |tracker| remote_tracker_result(tracker) }
|
42
|
+
.find(&:present?)
|
43
|
+
end
|
44
|
+
|
45
|
+
def result_by_remote_tracker_default
|
46
|
+
remote_tracker.try(:default_local_user)
|
47
|
+
end
|
48
|
+
|
49
|
+
def remote_tracker_result(remote_tracker)
|
50
|
+
::RemoteUser.where(
|
51
|
+
remote_tracker: remote_tracker,
|
52
|
+
remote_login: remote_login
|
53
|
+
).first.try(:local_user)
|
54
|
+
end
|
55
|
+
|
56
|
+
def remote_trackers_to_search
|
57
|
+
remote_tracker.if_present([]) { |v| [v] } + [nil]
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RedmineRemotes
|
4
|
+
module Esosti
|
5
|
+
class << self
|
6
|
+
RICH_TEXT_COMMENT = /<!--\s*RICH\s+TEXT\s-->/i.freeze
|
7
|
+
|
8
|
+
def remote_text_to_local(remote_text)
|
9
|
+
::Redmine::WikiFormatting.html_parser.to_text(
|
10
|
+
remote_text.gsub(RICH_TEXT_COMMENT, '').each_line.map(&:strip).join(" \n")
|
11
|
+
).each_line.map(&:strip).join("\n").gsub(/\n+/, "\n")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -6,6 +6,10 @@ module RedmineRemotes
|
|
6
6
|
module Esosti
|
7
7
|
module Entities
|
8
8
|
class Issue < ::Avmtrf1::Esosti::Entities::Issue
|
9
|
+
def human_view_url
|
10
|
+
instance.issue_human_view_url(uid)
|
11
|
+
end
|
12
|
+
|
9
13
|
def author_login
|
10
14
|
attributes.fetch('CREATEDBY').if_present { |v| v.gsub(/@[^@]+\z/, '') }
|
11
15
|
end
|
@@ -23,7 +27,9 @@ module RedmineRemotes
|
|
23
27
|
end
|
24
28
|
|
25
29
|
def description
|
26
|
-
|
30
|
+
::RedmineRemotes::Esosti.remote_text_to_local(
|
31
|
+
related_mbos.fetch('LONGDESCRIPTION').first.fetch('Attributes').fetch('LDTEXT')
|
32
|
+
)
|
27
33
|
end
|
28
34
|
|
29
35
|
def related_mbos
|
@@ -37,6 +43,10 @@ module RedmineRemotes
|
|
37
43
|
def subject
|
38
44
|
attributes.fetch('DESCRIPTION')
|
39
45
|
end
|
46
|
+
|
47
|
+
def uid
|
48
|
+
attributes.fetch('TICKETUID').fetch('content')
|
49
|
+
end
|
40
50
|
end
|
41
51
|
end
|
42
52
|
end
|
@@ -21,6 +21,10 @@ module RedmineRemotes
|
|
21
21
|
def issue_get_url_suffix(provider_issue_id)
|
22
22
|
"/os/MS_RMTICKET/?ticketid=#{provider_issue_id}"
|
23
23
|
end
|
24
|
+
|
25
|
+
def issue_human_view_url(ticket_uid)
|
26
|
+
"#{root_url}/itsm/ui/maximo.jsp?event=loadapp&value=ms_viewsr&uniqueid=#{ticket_uid}"
|
27
|
+
end
|
24
28
|
end
|
25
29
|
end
|
26
30
|
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.
|
4
|
+
version: 0.12.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: 2020-
|
11
|
+
date: 2020-06-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aranha-parsers
|
@@ -64,34 +64,28 @@ dependencies:
|
|
64
64
|
requirements:
|
65
65
|
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '0.
|
67
|
+
version: '0.11'
|
68
68
|
type: :runtime
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
72
|
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: '0.
|
74
|
+
version: '0.11'
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: eac_ruby_utils
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
79
|
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: '0.
|
82
|
-
- - ">="
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
version: 0.10.1
|
81
|
+
version: '0.35'
|
85
82
|
type: :runtime
|
86
83
|
prerelease: false
|
87
84
|
version_requirements: !ruby/object:Gem::Requirement
|
88
85
|
requirements:
|
89
86
|
- - "~>"
|
90
87
|
- !ruby/object:Gem::Version
|
91
|
-
version: '0.
|
92
|
-
- - ">="
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
version: 0.10.1
|
88
|
+
version: '0.35'
|
95
89
|
- !ruby/object:Gem::Dependency
|
96
90
|
name: validate_url
|
97
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -139,9 +133,11 @@ files:
|
|
139
133
|
- app/models/remote_issue.rb
|
140
134
|
- app/models/remote_issue_status.rb
|
141
135
|
- app/models/remote_tracker.rb
|
136
|
+
- app/models/remote_tracker/find_issue_local_status.rb
|
142
137
|
- app/models/remote_tracker/remote.rb
|
143
138
|
- app/models/remote_tracker_setting.rb
|
144
139
|
- app/models/remote_user.rb
|
140
|
+
- app/models/remote_user/find_local_user.rb
|
145
141
|
- app/views/project_remote_issues/_issues.html.erb
|
146
142
|
- app/views/project_remote_issues/_trackers.html.erb
|
147
143
|
- app/views/project_remote_issues/index.html.erb
|
@@ -164,6 +160,7 @@ files:
|
|
164
160
|
- db/migrate/20200505161002_add_timestamps_to_remote_users.rb
|
165
161
|
- init.rb
|
166
162
|
- lib/redmine_remotes.rb
|
163
|
+
- lib/redmine_remotes/esosti.rb
|
167
164
|
- lib/redmine_remotes/esosti/entities/issue.rb
|
168
165
|
- lib/redmine_remotes/esosti/instance.rb
|
169
166
|
- lib/redmine_remotes/jira/entities/issue.rb
|