lib/redmine_rest/models/project.rb in redmine_rest-0.5.2 vs lib/redmine_rest/models/project.rb in redmine_rest-0.6.0
- old
+ new
@@ -1,15 +1,53 @@
require 'active_resource'
-require_relative 'collections/project'
+require_relative 'tracker'
+require_relative 'collections/base'
+require_relative 'version'
+require_relative 'membership'
module RedmineRest
module Models
#
# Project model
#
class Project < ActiveResource::Base
self.format = :xml
- self.collection_parser = Collections::Project
+ self.collection_parser = Collections::Base
+
+ has_many :trackers, class_name: Tracker
+
+ #
+ # Adds trackers to request.
+ #
+ def self.find(scope, options = {})
+ options[:params] = {} unless options[:params]
+ params = options[:params]
+
+ if params[:include]
+ params[:include] += ',trackers'
+ else # doubling is not bad
+ params[:include] = 'trackers'
+ end
+
+ super(scope, options)
+ end
+
+ def versions
+ Version.all params: { project_id: id }
+ end
+
+ def memberships
+ Membership.all params: { project_id: id }
+ end
+
+ def members(options = {})
+ users = memberships
+ .map { |m| m.user? ? m.user : m.group.reload.users }
+ .flatten
+ users.map(&:reload) if options[:reload]
+
+ Collections::Base.new(users)
+ end
end
end
end