diff --git a/src/noosfero-spb/software_communities/db/migrate/20151125175514_change_software_info_structure.rb b/src/noosfero-spb/software_communities/db/migrate/20151125175514_change_software_info_structure.rb new file mode 100644 index 0000000..bd8dcf0 --- /dev/null +++ b/src/noosfero-spb/software_communities/db/migrate/20151125175514_change_software_info_structure.rb @@ -0,0 +1,26 @@ +class CreateSispInfo < ActiveRecord::Migration + def up + create_table :sosftware_infos do |t| + t.integer :software_id + t.text :agency_identification + t.text :softawre_requirements + t.text :hardware_requirements + t.text :documentation + t.text :system_applications + t.text :active_versions + t.text :estimated_cost + t.text :responsible + t.text :responsible_for_acquirement + t.text :system_info + t.text :development_info + t.text :maintenance + t.text :standards_adherence + t.text :plataform + t.text :sisp_type + end + end + + def down + drop_table :software_infos + end +end diff --git a/src/noosfero-spb/software_communities/lib/software.rb b/src/noosfero-spb/software_communities/lib/software.rb new file mode 100644 index 0000000..9151304 --- /dev/null +++ b/src/noosfero-spb/software_communities/lib/software.rb @@ -0,0 +1,6 @@ +class Software < Community + has_one :software_info + validates_presence_of :software_info + attr_accessible :software_info + after_save { software_info.save! } +end diff --git a/src/noosfero-spb/software_communities/lib/software_info.rb b/src/noosfero-spb/software_communities/lib/software_info.rb index af080a7..744ed0f 100644 --- a/src/noosfero-spb/software_communities/lib/software_info.rb +++ b/src/noosfero-spb/software_communities/lib/software_info.rb @@ -8,7 +8,7 @@ class SoftwareInfo < ActiveRecord::Base SEARCHABLE_SOFTWARE_CLASSES = [ SoftwareInfo, - Community, + Software, ProgrammingLanguage, DatabaseDescription ] @@ -18,7 +18,7 @@ class SoftwareInfo < ActiveRecord::Base search_fields = SoftwareInfo.pg_search_plugin_fields if query.empty? - SoftwareInfo.joins(:community).where("profiles.visible = ?", true) + SoftwareInfo.joins(:software).where("profiles.visible = ?", true) else searchable_software_objects = SoftwareInfo.transform_list_in_methods_list(SEARCHABLE_SOFTWARE_CLASSES) includes(searchable_software_objects).where("to_tsvector('simple', #{search_fields}) @@ to_tsquery('#{filtered_query}')").where("profiles.visible = ?", true) @@ -65,7 +65,7 @@ class SoftwareInfo < ActiveRecord::Base attr_accessible :demonstration_url, :acronym, :objectives, :features, :license_info - attr_accessible :community_id, :finality, :repository_link, :public_software, + attr_accessible :software_id, :finality, :repository_link, :public_software, :first_edit has_many :libraries, :dependent => :destroy @@ -76,7 +76,7 @@ class SoftwareInfo < ActiveRecord::Base has_many :programming_languages, :through => :software_languages has_many :operating_system_names, :through => :operating_systems - belongs_to :community, :dependent => :destroy + belongs_to :software, :dependent => :destroy belongs_to :license_info has_one :software_categories @@ -84,7 +84,7 @@ class SoftwareInfo < ActiveRecord::Base validates_length_of :finality, :maximum => 120 validates_length_of :objectives, :maximum => 4000 validates_length_of :features, :maximum => 4000 - validates_presence_of :finality, :community + validates_presence_of :finality, :software validate :validate_acronym @@ -92,7 +92,7 @@ class SoftwareInfo < ActiveRecord::Base # used on find_by_contents scope :like_search, lambda{ |name| - joins(:community).where( + joins(:software).where( "name ILIKE ? OR acronym ILIKE ? OR finality ILIKE ?", "%#{name}%", "%#{name}%", "%#{name}%" ) @@ -114,11 +114,15 @@ class SoftwareInfo < ActiveRecord::Base like_sql = like_sql[0..like_sql.length-5] { - :joins => [:community], + :joins => [:software], :conditions=>[like_sql, *values] } } + def community + return self.software + end + def license_info license = LicenseInfo.find_by_id self.license_info_id license_another = LicenseInfo.find_by_version("Another") @@ -145,7 +149,7 @@ class SoftwareInfo < ActiveRecord::Base end def validate_name_lenght - if self.community.name.size > 100 + if self.software.name.size > 100 self.errors.add( :base, _("Name is too long (maximum is %{count} characters)") @@ -181,21 +185,21 @@ class SoftwareInfo < ActiveRecord::Base else software_template = Community["software"] - community_hash = {:name => name} - community_hash[:identifier] = identifier - community_hash[:image_builder] = image_builder if image_builder + software_hash = {:name => name} + software_hash[:identifier] = identifier + software_hash[:image_builder] = image_builder if image_builder - community = Community.new(community_hash) - community.environment = environment + software = Software.new(software_hash) + software.environment = environment if (!software_template.blank? && software_template.is_template) - community.template_id = software_template.id + software.template_id = software_template.id end - community.save! - community.add_admin(requestor) + software.save! + software.add_admin(requestor) - software_info.community = community + software_info.software = software software_info.license_info = license_info software_info.verify_license_info(another_license_version, another_license_link) software_info.save! @@ -247,18 +251,18 @@ class SoftwareInfo < ActiveRecord::Base end def visible? - self.community.visible? + self.software.visible? end def name - self.community.name + self.software.name end def short_name - self.community.short_name + self.software.short_name end def identifier - self.community.identifier + self.software.identifier end end diff --git a/src/noosfero-spb/software_communities/lib/software_info2.rb b/src/noosfero-spb/software_communities/lib/software_info2.rb new file mode 100644 index 0000000..0daf0a1 --- /dev/null +++ b/src/noosfero-spb/software_communities/lib/software_info2.rb @@ -0,0 +1,9 @@ +class SispInfo < ActiveRecord::Base + + attr_accessible :agency_identification, :softawre_requirements, :hardware_requirements, :documentation, + :system_applications, :active_versions, :estimated_cost, :responsible, :sotware_identification, + :responsible_for_acquirement, :system_info, :development_info, :maintenance, :standards_adherence, :plataform + + belongs_to :sisp + +end -- libgit2 0.21.2