module CommunityDataExport COMMUNITY_FIELDS = %w(public_software acronym finality repository_link) LICENSE_INFO_FIELDS = %w(id version link) def community_attr_to_hash community attrs = {} attrs["members-count"] = community.members.count attrs["members"] = [] attrs = community_members(attrs, community) if community.respond_to?("software?") && community.software? attrs['software_data'] = software_data(community) attrs = categories(attrs, community) end attrs end def software_data(community) software_hash = {} COMMUNITY_FIELDS.each do |m| software_hash.merge!({m => community.software_info.send(m)}) end software_hash['license_info'] = {} LICENSE_INFO_FIELDS.each do |m| software_hash['license_info'].merge!({m => community.software_info.license_info.send(m)}) end software_hash end def categories(attrs, community) attrs['software_data']["categories"] = [] community.categories.each do |category| if Category.last.parent.name == "Software" category_info = { "id" => category.id, "name" => category.name, "slug" => category.slug, "path" => category.path } attrs['software_data']["categories"] << category_info end end attrs end def community_members(attrs, community) community.members.each do |member| attrs_members = { "is_admin" => community.admins.include?(member), "id" => member.id, "identifier" => member.identifier, "name" => member.name } attrs['members'] << attrs_members end attrs end end