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 45 @community.environment = environment
46 46 @software_info = SoftwareInfo.new(params[:software_info])
47 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 57 unless params[:q].nil?
58 58 admins = params[:q].split(/,/).map{|n| environment.people.find n.to_i}
59 59  
... ... @@ -62,14 +62,18 @@ class MpogSoftwarePluginMyprofileController &lt; MyProfileController
62 62 @community.add_admin(admin)
63 63 end
64 64 end
  65 + if !environment.admins.include?(current_user.person)
65 66 session[:notice] = _('Your new software request will be evaluated by an administrator. You will be notified.')
66 67 redirect_to user.admin_url
  68 + else
  69 + redirect_to :controller => 'profile_editor', :action => 'edit', :profile => @community.identifier
  70 + end
67 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 77 end
74 78  
75 79 def search_offerers
... ... @@ -149,4 +153,5 @@ class MpogSoftwarePluginMyprofileController &lt; MyProfileController
149 153  
150 154 def community_must_be_approved
151 155 end
  156 +
152 157 end
... ...
lib/create_software.rb
... ... @@ -3,12 +3,12 @@ class CreateSoftware &lt; Task
3 3 validates_presence_of :requestor_id, :target_id
4 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 8 alias :environment :target
9 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 12 DATA_FIELDS.each do |field|
13 13 settings_items field.to_sym
14 14 end
... ... @@ -21,7 +21,7 @@ class CreateSoftware &lt; Task
21 21  
22 22 software = SoftwareInfo.create!(:finality => self.finality,
23 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 25 end
26 26  
27 27 def title
... ...
lib/ext/community.rb
... ... @@ -7,25 +7,13 @@ class Community
7 7 has_one :software_info, :dependent=>:destroy
8 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 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 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 15 else
27 16 community = Community.create(attributes)
28   - community.software_info = software_info
29 17 community.add_admin(requestor)
30 18 end
31 19 community
... ...
lib/ext/create_community.rb
... ... @@ -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 0 \ No newline at end of file
lib/software_info.rb
1 1 class SoftwareInfo < ActiveRecord::Base
2 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 4 attr_accessible :community_id, :finality, :repository_link, :public_software, :first_edit
5 5  
6 6 has_many :libraries, :dependent => :destroy
... ... @@ -60,8 +60,18 @@ class SoftwareInfo &lt; ActiveRecord::Base
60 60 def self.create_after_moderation(requestor, attributes = {})
61 61 environment = attributes.delete(:environment)
62 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 75 end
66 76  
67 77  
... ...