diff --git a/app/models/guidance_group.rb b/app/models/guidance_group.rb index 6b98f59..eca54c2 100644 --- a/app/models/guidance_group.rb +++ b/app/models/guidance_group.rb @@ -12,11 +12,22 @@ attr_accessible :organisation_id, :name, :optional_subset, :published, :as => [:default, :admin] attr_accessible :dmptemplate_ids, :as => [:default, :admin] - + + ## + # Converts a guidance group to a string containing the display name + # + # @return [String] the name of the organisation, wiht or without the name of the guidance group def to_s "#{display_name}" end + ## + # Converts the current guidance group to a string containing the display name. + # If it's organisation has no other guidance groups, then the name is simply + # the name of the parent organisation, otherwise it returns the name of the + # organisation followed by the name of the guidance group. + # + # @return [String] the display name for the guidance group def display_name if organisation.guidance_groups.count > 1 return "#{organisation.name}: #{name}" @@ -25,6 +36,11 @@ end end + ## + # Returns the list of all guidance groups not coming from the given organisations + # + # @params[Array] a list of organisations to exclude in the result + # @return [Array] a list of guidance groups def self.guidance_groups_excluding(excluded_orgs) excluded_org_ids = Array.new excluded_orgs.each do |org| @@ -34,14 +50,20 @@ return return_orgs end + ## + # Returns whether or not a given user can view a given guidance group + # we define guidances viewable to a user by those owned by: + # the DCC + # a funder organisation + # an organisation, of which the user is a member + # + # @param id [Integer] the integer id for a guidance group + # @param user [User] a user object + # @return [Boolean] true if the specified user can view the specified guidance group, false otherwise def self.can_view?(user, id) - # we define guidance groups viewable to a user by: - # those owned by the DCC - # those owned by a funder organisation - # those owned by an organisation, of which the user is a member - guidance_group = GuidanceGroup.find_by(id: id) viewable = false + # groups are viewable if they are owned by any of the user's organisations user.organisations.each do |organisation| if guidance_group.organisation.id == organisation.id @@ -62,12 +84,16 @@ return viewable end + ## + # Returns a list of all guidance groups which a specified user can view + # we define guidance groups viewable to a user by those owned by: + # the DCC + # a funder organisation + # an organisation, of which the user is a member + # + # @param user [User] a user object + # @return [Array] a list of all "viewable" guidance groups to a user def self.all_viewable(user) - # we define guidance groups viewable to a user by: - # those owned by the DCC - # those owned by a funder organisation - # those owned by an organisation, of which the user is a member - # first find all groups owned by the DCC dcc_groups = [] Organisation.where( name: "Digital Curation Centre").find_each do |dcc|