From 7ecb0945580f9e4a9c374629cf62a8dc4eddf720 Mon Sep 17 00:00:00 2001 From: Marcos Ronaldo Date: Wed, 25 Nov 2015 18:17:49 -0200 Subject: [PATCH] Generalize SoftwareInfo and add sisp software --- src/noosfero-spb/software_communities/db/migrate/20151125175514_create_sisp_info.rb | 26 ++++++++++++++++++++++++++ src/noosfero-spb/software_communities/db/migrate/20151125191157_update_software_info.rb | 15 +++++++++++++++ src/noosfero-spb/software_communities/lib/sisp.rb | 6 ++++++ src/noosfero-spb/software_communities/lib/sisp_info.rb | 9 +++++++++ src/noosfero-spb/software_communities/lib/software.rb | 26 ++++++++++++++++++++++++++ src/noosfero-spb/software_communities/lib/software_info.rb | 28 ++++------------------------ 6 files changed, 86 insertions(+), 24 deletions(-) create mode 100644 src/noosfero-spb/software_communities/db/migrate/20151125175514_create_sisp_info.rb create mode 100644 src/noosfero-spb/software_communities/db/migrate/20151125191157_update_software_info.rb create mode 100644 src/noosfero-spb/software_communities/lib/sisp.rb create mode 100644 src/noosfero-spb/software_communities/lib/sisp_info.rb create mode 100644 src/noosfero-spb/software_communities/lib/software.rb diff --git a/src/noosfero-spb/software_communities/db/migrate/20151125175514_create_sisp_info.rb b/src/noosfero-spb/software_communities/db/migrate/20151125175514_create_sisp_info.rb new file mode 100644 index 0000000..e4e83a9 --- /dev/null +++ b/src/noosfero-spb/software_communities/db/migrate/20151125175514_create_sisp_info.rb @@ -0,0 +1,26 @@ +class CreateSispInfo < ActiveRecord::Migration + def up + create_table :sisp_infos do |t| + t.integer :sisp_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 :sisp_infos + end +end diff --git a/src/noosfero-spb/software_communities/db/migrate/20151125191157_update_software_info.rb b/src/noosfero-spb/software_communities/db/migrate/20151125191157_update_software_info.rb new file mode 100644 index 0000000..6553507 --- /dev/null +++ b/src/noosfero-spb/software_communities/db/migrate/20151125191157_update_software_info.rb @@ -0,0 +1,15 @@ +class UpdateSoftwareInfo < ActiveRecord::Migration + def up + rename_table :software_infos, :softwares + add_column :softwares, :name , :string + add_column :softwares, :identifier , :string + add_column :softwares, :type , :string, :default => 'SoftwareInfo' + end + + def down + remove_column :softwares, :name + remove_column :softwares, :identifier + remove_column :softwares, :type + rename_table :softwares, :software_infos + end +end diff --git a/src/noosfero-spb/software_communities/lib/sisp.rb b/src/noosfero-spb/software_communities/lib/sisp.rb new file mode 100644 index 0000000..6d9daf4 --- /dev/null +++ b/src/noosfero-spb/software_communities/lib/sisp.rb @@ -0,0 +1,6 @@ +class Sisp < Software + has_one :sisp_info + validates_presence_of :sisp_info + attr_accessible :sisp_info + after_save { sisp_info.save! } +end diff --git a/src/noosfero-spb/software_communities/lib/sisp_info.rb b/src/noosfero-spb/software_communities/lib/sisp_info.rb new file mode 100644 index 0000000..0daf0a1 --- /dev/null +++ b/src/noosfero-spb/software_communities/lib/sisp_info.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 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..1fe7374 --- /dev/null +++ b/src/noosfero-spb/software_communities/lib/software.rb @@ -0,0 +1,26 @@ +class Software < ActiveRecord::Base + + attr_accessible :acronym, :objectives, :features, :finality, :name, :identifier + + has_one :software_categories + + validates_length_of :finality, :maximum => 120 + validates_length_of :objectives, :maximum => 4000 + validates_length_of :features, :maximum => 4000 + + validate :validate_acronym + validates_presence_of :finality + + def validate_acronym + self.acronym = "" if self.acronym.nil? + if self.acronym.length > 10 && self.errors.messages[:acronym].nil? + self.errors.add(:acronym, _("can't have more than 10 characteres")) + false + elsif self.acronym.match(/\s+/) + self.errors.add(:acronym, _("can't have whitespaces")) + false + end + true + 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 af080a7..1762ed8 100644 --- a/src/noosfero-spb/software_communities/lib/software_info.rb +++ b/src/noosfero-spb/software_communities/lib/software_info.rb @@ -1,4 +1,4 @@ -class SoftwareInfo < ActiveRecord::Base +class SoftwareInfo < Software acts_as_having_settings :field => :settings SEARCHABLE_SOFTWARE_FIELDS = { @@ -62,10 +62,9 @@ class SoftwareInfo < ActiveRecord::Base attr_accessible :e_mag, :icp_brasil, :intern, :e_ping, :e_arq, :operating_platform - attr_accessible :demonstration_url, :acronym, :objectives, :features, - :license_info + attr_accessible :demonstration_url, :license_info - attr_accessible :community_id, :finality, :repository_link, :public_software, + attr_accessible :community_id, :repository_link, :public_software, :first_edit has_many :libraries, :dependent => :destroy @@ -79,14 +78,8 @@ class SoftwareInfo < ActiveRecord::Base belongs_to :community, :dependent => :destroy belongs_to :license_info - has_one :software_categories - + validates_presence_of :community validates_length_of :finality, :maximum => 120 - validates_length_of :objectives, :maximum => 4000 - validates_length_of :features, :maximum => 4000 - validates_presence_of :finality, :community - - validate :validate_acronym settings_items :another_license_version, :another_license_link @@ -215,19 +208,6 @@ class SoftwareInfo < ActiveRecord::Base end end - - def validate_acronym - self.acronym = "" if self.acronym.nil? - if self.acronym.length > 10 && self.errors.messages[:acronym].nil? - self.errors.add(:acronym, _("can't have more than 10 characteres")) - false - elsif self.acronym.match(/\s+/) - self.errors.add(:acronym, _("can't have whitespaces")) - false - end - true - end - def valid_operating_systems if self.operating_systems.empty? self.errors.add(:operating_system, _(": at least one must be filled")) -- libgit2 0.21.2