redmine_rest 0.2.0 → 0.3.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/lib/redmine_rest/models.rb +1 -1
- data/lib/redmine_rest/models/issue.rb +35 -0
- data/lib/redmine_rest/models/relation.rb +49 -0
- data/lib/redmine_rest/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60f9d21ded72e8820f98bef43db42e9f07ee830f
|
4
|
+
data.tar.gz: 21c765be9944e3e68ece1cd98625e891d04dd5ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c22d9098f4ead35819fdfbb8489b68c531b1fa9e3d78511c11b9d001c0513d27d82e4af2ec178e4e3907cad558117e75ca1320a6b33217ba0c3c9abb2fb4c41a
|
7
|
+
data.tar.gz: a2ce1f62f121fd1ed2256435a2bb3bccb04f185ecafc40c35a470869aa16cdd60617aa5be0580df50d2ef3031853e0d3336d94cdaeccd5e1ed7b27eee5db622e
|
data/lib/redmine_rest/models.rb
CHANGED
@@ -5,7 +5,7 @@ module RedmineRest
|
|
5
5
|
# Namespace for models + some self-methods
|
6
6
|
#
|
7
7
|
module Models
|
8
|
-
LIST = [Issue, User, Project, IssueStatus, TimeEntry].freeze
|
8
|
+
LIST = [Issue, User, Project, IssueStatus, TimeEntry, Relation].freeze
|
9
9
|
|
10
10
|
def self.configure_models(params)
|
11
11
|
ModelConfigurator.new.configure_models(params)
|
@@ -3,6 +3,7 @@ require 'active_resource'
|
|
3
3
|
require_relative 'user'
|
4
4
|
require_relative 'project'
|
5
5
|
require_relative 'version'
|
6
|
+
require_relative 'relation'
|
6
7
|
require_relative 'collections/issue'
|
7
8
|
|
8
9
|
module RedmineRest
|
@@ -18,6 +19,40 @@ module RedmineRest
|
|
18
19
|
has_one :assigned_to, class_name: User
|
19
20
|
has_one :project, class_name: Project
|
20
21
|
has_one :version, class_name: Version
|
22
|
+
has_one :parent, class_name: Issue
|
23
|
+
has_many :children, class_name: Issue
|
24
|
+
has_many :watchers, class_name: User
|
25
|
+
has_many :relations, class_name: Relation
|
26
|
+
|
27
|
+
#
|
28
|
+
# Adds journals, relations, children and watchers to request.
|
29
|
+
#
|
30
|
+
# Be careful, even if issue has watchers, it won't be loaded,
|
31
|
+
# because REST API can load them only after v2.3.0 (see Redmine docs)
|
32
|
+
#
|
33
|
+
def self.find(what, options = {})
|
34
|
+
options[:params] = {} unless options[:params]
|
35
|
+
params = options[:params]
|
36
|
+
|
37
|
+
if params[:include]
|
38
|
+
params[:include] += ',journals,relations,children,watchers'
|
39
|
+
else # doubling is not bad
|
40
|
+
params[:include] = 'journals,relations,children,watchers'
|
41
|
+
end
|
42
|
+
|
43
|
+
super(what, options)
|
44
|
+
end
|
45
|
+
|
46
|
+
#
|
47
|
+
# Methods for necessery attributes.
|
48
|
+
#
|
49
|
+
# I guess it's equal to `.<attribute>?`
|
50
|
+
#
|
51
|
+
[:author, :assigned_to, :project, :version, :children, :watchers, :relations, :parent].each do |attr|
|
52
|
+
define_method(attr) do
|
53
|
+
attributes[attr]
|
54
|
+
end
|
55
|
+
end
|
21
56
|
end
|
22
57
|
end
|
23
58
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'active_resource'
|
2
|
+
|
3
|
+
module RedmineRest
|
4
|
+
module Models
|
5
|
+
#
|
6
|
+
# Model of issue relations
|
7
|
+
#
|
8
|
+
class Relation < ActiveResource::Base
|
9
|
+
TYPES = %w(relates duplicates duplicated blocks blocked precedes follows copied_to copied_from).freeze
|
10
|
+
|
11
|
+
self.format = :xml
|
12
|
+
|
13
|
+
validate :validate_relation_type,
|
14
|
+
:validate_issue_id,
|
15
|
+
:validate_issue_to_id
|
16
|
+
|
17
|
+
def self.set_prefix
|
18
|
+
self.prefix = '/issues/:issue_id'
|
19
|
+
end
|
20
|
+
|
21
|
+
set_prefix
|
22
|
+
|
23
|
+
def self.find(what, options = {})
|
24
|
+
if what == :all
|
25
|
+
super
|
26
|
+
else
|
27
|
+
self.prefix = '/'
|
28
|
+
result = super
|
29
|
+
set_prefix
|
30
|
+
result
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def validate_relation_type
|
37
|
+
errors.add(:relation_type, 'Wrong relation type') unless relation_type? && TYPES.include?(relation_type)
|
38
|
+
end
|
39
|
+
|
40
|
+
def validate_issue_id
|
41
|
+
errors.add(:issue_id, 'Issue ID required') unless issue_id?
|
42
|
+
end
|
43
|
+
|
44
|
+
def validate_issue_to_id
|
45
|
+
errors.add(:issue_to_id, 'Issue ID required') unless issue_to_id?
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/redmine_rest/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redmine_rest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitriy Non
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -102,6 +102,7 @@ files:
|
|
102
102
|
- lib/redmine_rest/models/issue.rb
|
103
103
|
- lib/redmine_rest/models/issue_status.rb
|
104
104
|
- lib/redmine_rest/models/project.rb
|
105
|
+
- lib/redmine_rest/models/relation.rb
|
105
106
|
- lib/redmine_rest/models/time_entry.rb
|
106
107
|
- lib/redmine_rest/models/user.rb
|
107
108
|
- lib/redmine_rest/models/version.rb
|