From 4264a15bf71637ad2350afe148660c7911a608bf Mon Sep 17 00:00:00 2001 From: Arthur Del Esposte Date: Tue, 20 Oct 2015 16:56:08 +0000 Subject: [PATCH] Remove hard coded software templates' references --- src/noosfero-spb/software_communities/config.yml | 1 + src/noosfero-spb/software_communities/config.yml.dist | 1 + src/noosfero-spb/software_communities/controllers/software_communities_plugin_myprofile_controller.rb | 4 ++-- src/noosfero-spb/software_communities/lib/create_software.rb | 2 +- src/noosfero-spb/software_communities/lib/software_helper.rb | 15 +++++++++++++++ src/noosfero-spb/software_communities/lib/software_info.rb | 4 ++-- src/noosfero-spb/software_communities/lib/tasks/templates.rake | 5 +++-- src/noosfero-spb/software_communities/test/unit/software_helper_test.rb | 25 +++++++++++++++++++++++++ 8 files changed, 50 insertions(+), 7 deletions(-) create mode 100644 src/noosfero-spb/software_communities/config.yml create mode 100644 src/noosfero-spb/software_communities/config.yml.dist diff --git a/src/noosfero-spb/software_communities/config.yml b/src/noosfero-spb/software_communities/config.yml new file mode 100644 index 0000000..d0e51ef --- /dev/null +++ b/src/noosfero-spb/software_communities/config.yml @@ -0,0 +1 @@ +software_template: software diff --git a/src/noosfero-spb/software_communities/config.yml.dist b/src/noosfero-spb/software_communities/config.yml.dist new file mode 100644 index 0000000..d0e51ef --- /dev/null +++ b/src/noosfero-spb/software_communities/config.yml.dist @@ -0,0 +1 @@ +software_template: software diff --git a/src/noosfero-spb/software_communities/controllers/software_communities_plugin_myprofile_controller.rb b/src/noosfero-spb/software_communities/controllers/software_communities_plugin_myprofile_controller.rb index f6cfe4f..f51b5ff 100644 --- a/src/noosfero-spb/software_communities/controllers/software_communities_plugin_myprofile_controller.rb +++ b/src/noosfero-spb/software_communities/controllers/software_communities_plugin_myprofile_controller.rb @@ -167,8 +167,8 @@ class SoftwareCommunitiesPluginMyprofileController < MyProfileController end def set_software_as_template - software_template = Community['software'] - software_valid = !software_template.blank? && software_template.is_template && !params['community'].blank? + software_template = SoftwareHelper.software_template + software_valid = !software_template.blank? && !params['community'].blank? if software_valid params['community']['template_id'] = software_template.id if software_valid end diff --git a/src/noosfero-spb/software_communities/lib/create_software.rb b/src/noosfero-spb/software_communities/lib/create_software.rb index 10117d5..d3d313c 100644 --- a/src/noosfero-spb/software_communities/lib/create_software.rb +++ b/src/noosfero-spb/software_communities/lib/create_software.rb @@ -16,7 +16,7 @@ class CreateSoftware < Task end def perform - software_template = Community["software"] + software_template = SoftwareHelper.software_template if (!software_template.blank? && software_template.is_template) template_id = software_template.id end diff --git a/src/noosfero-spb/software_communities/lib/software_helper.rb b/src/noosfero-spb/software_communities/lib/software_helper.rb index 47ce223..0809a2a 100644 --- a/src/noosfero-spb/software_communities/lib/software_helper.rb +++ b/src/noosfero-spb/software_communities/lib/software_helper.rb @@ -25,4 +25,19 @@ module SoftwareHelper def self.all_table_is_empty? table, ignored_fields=[] return !table.keys.any?{|key| ignored_fields.include?(key) ? false : !table[key].empty?} end + + def self.software_template + identifier = SoftwareHelper.software_template_identifier + + software_template = Community[identifier] + if !software_template.blank? && software_template.is_template + software_template + else + nil + end + end + + def self.software_template_identifier + identifier = YAML::load(File.open(SoftwareCommunitiesPlugin.root_path + 'config.yml'))['software_template'] + end end diff --git a/src/noosfero-spb/software_communities/lib/software_info.rb b/src/noosfero-spb/software_communities/lib/software_info.rb index 692634c..fa82ccc 100644 --- a/src/noosfero-spb/software_communities/lib/software_info.rb +++ b/src/noosfero-spb/software_communities/lib/software_info.rb @@ -177,7 +177,7 @@ class SoftwareInfo < ActiveRecord::Base ) ) else - software_template = Community["software"] + software_template = SoftwareHelper.software_template community_hash = {:name => name} community_hash[:identifier] = identifier @@ -186,7 +186,7 @@ class SoftwareInfo < ActiveRecord::Base community = Community.new(community_hash) community.environment = environment - if (!software_template.blank? && software_template.is_template) + unless software_template.blank? community.template_id = software_template.id end diff --git a/src/noosfero-spb/software_communities/lib/tasks/templates.rake b/src/noosfero-spb/software_communities/lib/tasks/templates.rake index 46ad264..0760f97 100644 --- a/src/noosfero-spb/software_communities/lib/tasks/templates.rake +++ b/src/noosfero-spb/software_communities/lib/tasks/templates.rake @@ -13,10 +13,11 @@ namespace :templates do task :software => :environment do Environment.all.each do |env| if env.plugin_enabled?("MpogSoftware") or env.plugin_enabled?("SoftwareCommunitiesPlugin") - software = Community["software"] + software = SoftwareHelper.software_template if software.nil? - software = Community.create!(:name => "Software", :identifier => "software") + identifier = YAML::load(File.open(SoftwareCommunitiesPlugin.root_path + 'config.yml'))['software_template'] + software = Community.create!(:name => "Software", :identifier => identifier) end software.layout_template = "default" diff --git a/src/noosfero-spb/software_communities/test/unit/software_helper_test.rb b/src/noosfero-spb/software_communities/test/unit/software_helper_test.rb index cddadea..fc88cc4 100644 --- a/src/noosfero-spb/software_communities/test/unit/software_helper_test.rb +++ b/src/noosfero-spb/software_communities/test/unit/software_helper_test.rb @@ -17,4 +17,29 @@ class SoftwareHelperTest < ActiveSupport::TestCase assert(ProgrammingLanguage.count == count) end + should "return the software template specified in config.yml file" do + template_community = Community.create!(:name => "Software", :identifier => "software_template", :is_template => true) + + parsed_yaml = {"software_template" => "software_template"} + + SoftwareHelper.stubs(:software_template_identifier).returns("software_template") + + software_template = SoftwareHelper.software_template + assert !software_template.blank? + assert software_template.is_template + end + + should "not return the software template if there is not software template" do + parsed_yaml = {"software_template" => "software_template"} + + SoftwareHelper.stubs(:software_template_identifier).returns("software_template") + + software_template = SoftwareHelper.software_template + assert software_template.blank? + + template_community = Community.create!(:name => "Software", :identifier => "software_template") + + software_template = SoftwareHelper.software_template + assert software_template.blank? + end end -- libgit2 0.21.2