Commit aa448d058af83061061d0273b6be375ba0b99e59

Authored by David Silva
Committed by Luciano Prestes
1 parent 3f49f33e

Fix software create moderation

  - Pass license_info field to create software_info task
  - Disable software moderation to admin user
  - Remove unused code from community (create_after_moderation).

Signed-off-by: David Carlos <ddavidcarlos1392@gmail.com>
Signed-off-by: Parley Martins <parley@outlook.com>
controllers/mpog_software_plugin_myprofile_controller.rb
@@ -45,15 +45,15 @@ class MpogSoftwarePluginMyprofileController &lt; MyProfileController @@ -45,15 +45,15 @@ class MpogSoftwarePluginMyprofileController &lt; MyProfileController
45 @community.environment = environment 45 @community.environment = environment
46 @software_info = SoftwareInfo.new(params[:software_info]) 46 @software_info = SoftwareInfo.new(params[:software_info])
47 @license_info = if params[:license_info].nil? 47 @license_info = if params[:license_info].nil?
48 - LicenseInfo::new  
49 - else  
50 - LicenseInfo.find(:first, :conditions =>["version = ?","#{params[:license_info][:version]}"])  
51 - end  
52 - valid_community = request.post? && @community.valid?  
53 - valid_software_info = request.post? && @software_info.valid?  
54 - valid_license = (request.post? && @license_info.valid?)  
55 - if valid_software_info && valid_license && valid_community  
56 - @software_info = SoftwareInfo.create_after_moderation(user,params[:software_info].merge({:environment => environment,:name => params[:community][:name]})) 48 + LicenseInfo::new
  49 + else
  50 + LicenseInfo.find(:first, :conditions =>["version = ?","#{params[:license_info][:version]}"])
  51 + end
  52 +
  53 + valid_models = request.post? && (@community.valid? && @software_info.valid? && @license_info.valid?)
  54 +
  55 + if valid_models
  56 + @software_info = SoftwareInfo.create_after_moderation(user,params[:software_info].merge({:environment => environment,:name => params[:community][:name], :license_info => @license_info}))
57 unless params[:q].nil? 57 unless params[:q].nil?
58 admins = params[:q].split(/,/).map{|n| environment.people.find n.to_i} 58 admins = params[:q].split(/,/).map{|n| environment.people.find n.to_i}
59 59
@@ -62,14 +62,18 @@ class MpogSoftwarePluginMyprofileController &lt; MyProfileController @@ -62,14 +62,18 @@ class MpogSoftwarePluginMyprofileController &lt; MyProfileController
62 @community.add_admin(admin) 62 @community.add_admin(admin)
63 end 63 end
64 end 64 end
  65 + if !environment.admins.include?(current_user.person)
65 session[:notice] = _('Your new software request will be evaluated by an administrator. You will be notified.') 66 session[:notice] = _('Your new software request will be evaluated by an administrator. You will be notified.')
66 redirect_to user.admin_url 67 redirect_to user.admin_url
  68 + else
  69 + redirect_to :controller => 'profile_editor', :action => 'edit', :profile => @community.identifier
  70 + end
67 else 71 else
68 72
69 - @errors |= @community.errors.full_messages  
70 - @errors |= @software_info.errors.full_messages  
71 - @errors |= @license_info.errors.full_messages  
72 - end 73 + @errors |= @community.errors.full_messages
  74 + @errors |= @software_info.errors.full_messages
  75 + @errors |= @license_info.errors.full_messages
  76 + end
73 end 77 end
74 78
75 def search_offerers 79 def search_offerers
@@ -149,4 +153,5 @@ class MpogSoftwarePluginMyprofileController &lt; MyProfileController @@ -149,4 +153,5 @@ class MpogSoftwarePluginMyprofileController &lt; MyProfileController
149 153
150 def community_must_be_approved 154 def community_must_be_approved
151 end 155 end
  156 +
152 end 157 end
lib/create_software.rb
@@ -3,12 +3,12 @@ class CreateSoftware &lt; Task @@ -3,12 +3,12 @@ class CreateSoftware &lt; Task
3 validates_presence_of :requestor_id, :target_id 3 validates_presence_of :requestor_id, :target_id
4 validates_presence_of :name 4 validates_presence_of :name
5 5
6 - attr_accessible :name, :finality, :repository_link, :requestor, :environment, :reject_explanation 6 + attr_accessible :name, :finality, :repository_link, :requestor, :environment, :reject_explanation, :license_info
7 7
8 alias :environment :target 8 alias :environment :target
9 alias :environment= :target= 9 alias :environment= :target=
10 10
11 - DATA_FIELDS = ['name', 'finality', 'license_info_id', 'repository_link'] 11 + DATA_FIELDS = ['name', 'finality', 'license_info', 'repository_link']
12 DATA_FIELDS.each do |field| 12 DATA_FIELDS.each do |field|
13 settings_items field.to_sym 13 settings_items field.to_sym
14 end 14 end
@@ -21,7 +21,7 @@ class CreateSoftware &lt; Task @@ -21,7 +21,7 @@ class CreateSoftware &lt; Task
21 21
22 software = SoftwareInfo.create!(:finality => self.finality, 22 software = SoftwareInfo.create!(:finality => self.finality,
23 :repository_link => self.repository_link, :community_id => community.id, 23 :repository_link => self.repository_link, :community_id => community.id,
24 - :license_info_id => self.license_info_id) 24 + :license_info => self.license_info)
25 end 25 end
26 26
27 def title 27 def title
lib/ext/community.rb
@@ -7,25 +7,13 @@ class Community @@ -7,25 +7,13 @@ class Community
7 has_one :software_info, :dependent=>:destroy 7 has_one :software_info, :dependent=>:destroy
8 has_one :institution, :dependent=>:destroy 8 has_one :institution, :dependent=>:destroy
9 9
10 - def self.create_after_moderation(requestor, attributes = {}, software_info = nil, license_info = nil, software_categories = nil) 10 + def self.create_after_moderation(requestor, attributes = {})
11 community = Community.new(attributes) 11 community = Community.new(attributes)
12 12
13 - if not software_info.nil?  
14 - if not license_info.nil?  
15 - software_info.license_info = license_info  
16 - end  
17 -  
18 - if not software_categories.nil?  
19 - software_info.software_categories = software_categories  
20 - end  
21 - software_info.save  
22 - end  
23 -  
24 if community.environment.enabled?('admin_must_approve_new_communities') and !community.environment.admins.include?(requestor) 13 if community.environment.enabled?('admin_must_approve_new_communities') and !community.environment.admins.include?(requestor)
25 - cc = CreateCommunity.create(attributes.merge(:requestor => requestor, :software_info=>software_info)) 14 + cc = CreateCommunity.create(attributes.merge(:requestor => requestor))
26 else 15 else
27 community = Community.create(attributes) 16 community = Community.create(attributes)
28 - community.software_info = software_info  
29 community.add_admin(requestor) 17 community.add_admin(requestor)
30 end 18 end
31 community 19 community
lib/ext/create_community.rb
@@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
1 -require_dependency 'create_community'  
2 -  
3 -class CreateCommunity  
4 - settings_items :software_info  
5 - attr_accessible :software_info, :environment, :name, :closed, :template_id, :requestor, :reject_explanation, :target, :image_builder  
6 -  
7 - def perform  
8 - community = Community.new  
9 - community_data = self.data.reject do |key, value|  
10 - ! DATA_FIELDS.include?(key.to_s)  
11 - end  
12 -  
13 - community.update_attributes(community_data)  
14 - community.image = image if image  
15 - community.environment = self.environment  
16 - community.software_info = self.software_info  
17 - community.save!  
18 - community.add_admin(self.requestor)  
19 - end  
20 -end  
21 \ No newline at end of file 0 \ No newline at end of file
lib/software_info.rb
1 class SoftwareInfo < ActiveRecord::Base 1 class SoftwareInfo < ActiveRecord::Base
2 attr_accessible :e_mag, :icp_brasil, :intern, :e_ping, :e_arq, :operating_platform 2 attr_accessible :e_mag, :icp_brasil, :intern, :e_ping, :e_arq, :operating_platform
3 - attr_accessible :demonstration_url, :acronym, :objectives, :features, :license_info_id 3 + attr_accessible :demonstration_url, :acronym, :objectives, :features, :license_info
4 attr_accessible :community_id, :finality, :repository_link, :public_software, :first_edit 4 attr_accessible :community_id, :finality, :repository_link, :public_software, :first_edit
5 5
6 has_many :libraries, :dependent => :destroy 6 has_many :libraries, :dependent => :destroy
@@ -60,8 +60,18 @@ class SoftwareInfo &lt; ActiveRecord::Base @@ -60,8 +60,18 @@ class SoftwareInfo &lt; ActiveRecord::Base
60 def self.create_after_moderation(requestor, attributes = {}) 60 def self.create_after_moderation(requestor, attributes = {})
61 environment = attributes.delete(:environment) 61 environment = attributes.delete(:environment)
62 name = attributes.delete(:name) 62 name = attributes.delete(:name)
63 - software = SoftwareInfo.new(attributes)  
64 - CreateSoftware.create!(attributes.merge(:requestor => requestor, :environment => environment, :name => name)) 63 + license_info = attributes.delete(:license_info)
  64 + software_info = SoftwareInfo.new(attributes)
  65 + if !environment.admins.include? requestor
  66 + CreateSoftware.create!(attributes.merge(:requestor => requestor, :environment => environment, :name => name, :license_info => license_info))
  67 + else
  68 + community = Community.new(:name => name)
  69 + community.environment = environment
  70 + software_info.save
  71 + community.software_info = software_info
  72 + community.save!
  73 + community.add_admin(requestor)
  74 + end
65 end 75 end
66 76
67 77