Updated dmsf_file model with Rails3 alternative to merge_conditions. Fixes #2

This commit is contained in:
Daniel Munn 2012-06-12 16:53:04 +01:00
parent 8828594698
commit 36fa608cc1

View File

@ -90,9 +90,9 @@ class DmsfFile < ActiveRecord::Base
return false
end
if Setting.plugin_redmine_dmsf["dmsf_really_delete_files"]
CustomValue.find(:all, :conditions => "customized_id = " + self.id.to_s).each do |v|
v.destroy
end
CustomValue.find(:all, :conditions => "customized_id = " + self.id.to_s).each do |v|
v.destroy
end
self.revisions.each {|r| r.delete(true)}
self.destroy
else
@ -189,21 +189,21 @@ class DmsfFile < ActiveRecord::Base
end
projects
end
# Overrides Redmine::Acts::Customizable::InstanceMethods#available_custom_fields
def available_custom_fields
search_project = nil
if self.project.present?
search_project = self.project
elsif self.project_id.present?
search_project = Project.find(self.project_id)
end
if search_project
search_project.all_dmsf_custom_fields
else
DmsfFileRevisionCustomField.all
end
end
# Overrides Redmine::Acts::Customizable::InstanceMethods#available_custom_fields
def available_custom_fields
search_project = nil
if self.project.present?
search_project = self.project
elsif self.project_id.present?
search_project = Project.find(self.project_id)
end
if search_project
search_project.all_dmsf_custom_fields
else
DmsfFileRevisionCustomField.all
end
end
def move_to(project, folder)
if self.locked_for_user?
@ -215,19 +215,19 @@ class DmsfFile < ActiveRecord::Base
new_revision.folder = folder ? folder : nil
new_revision.project = folder ? folder.project : project
new_revision.comment = l(:comment_moved_from, :source => "#{self.project.identifier}:#{self.dmsf_path_str}")
new_revision.comment = l(:comment_moved_from, :source => "#{self.project.identifier}:#{self.dmsf_path_str}")
new_revision.custom_values = []
temp_custom_values = self.last_revision.custom_values.select{|cv| new_revision.project.all_dmsf_custom_fields.include?(cv.custom_field)}.map(&:clone)
new_revision.custom_values = temp_custom_values
#add default value for CFs not existing
present_custom_fields = new_revision.custom_values.collect(&:custom_field).uniq
Project.find(new_revision.project_id).all_dmsf_custom_fields.each do |cf|
unless present_custom_fields.include?(cf)
new_revision.custom_values << CustomValue.new({:custom_field => cf, :value => cf.default_value})
end
end
new_revision.custom_values = []
temp_custom_values = self.last_revision.custom_values.select{|cv| new_revision.project.all_dmsf_custom_fields.include?(cv.custom_field)}.map(&:clone)
new_revision.custom_values = temp_custom_values
#add default value for CFs not existing
present_custom_fields = new_revision.custom_values.collect(&:custom_field).uniq
Project.find(new_revision.project_id).all_dmsf_custom_fields.each do |cf|
unless present_custom_fields.include?(cf)
new_revision.custom_values << CustomValue.new({:custom_field => cf, :value => cf.default_value})
end
end
self.folder = new_revision.folder
self.project = new_revision.project
@ -242,29 +242,29 @@ class DmsfFile < ActiveRecord::Base
file.name = self.name
file.notification = !Setting.plugin_redmine_dmsf["dmsf_default_notifications"].blank?
if file.save
new_revision = self.last_revision.clone
new_revision.file = file
new_revision.folder = folder ? folder : nil
new_revision.project = folder ? folder.project : project
new_revision.comment = l(:comment_copied_from, :source => "#{self.project.identifier}: #{self.dmsf_path_str}")
new_revision.custom_values = []
temp_custom_values = self.last_revision.custom_values.select{|cv| new_revision.project.all_dmsf_custom_fields.include?(cv.custom_field)}.map(&:clone)
new_revision.custom_values = temp_custom_values
#add default value for CFs not existing
present_custom_fields = new_revision.custom_values.collect(&:custom_field).uniq
new_revision.project.all_dmsf_custom_fields.each do |cf|
unless present_custom_fields.include?(cf)
new_revision.custom_values << CustomValue.new({:custom_field => cf, :value => cf.default_value})
end
end
unless new_revision.save
file.delete
end
if file.save
new_revision = self.last_revision.clone
new_revision.file = file
new_revision.folder = folder ? folder : nil
new_revision.project = folder ? folder.project : project
new_revision.comment = l(:comment_copied_from, :source => "#{self.project.identifier}: #{self.dmsf_path_str}")
new_revision.custom_values = []
temp_custom_values = self.last_revision.custom_values.select{|cv| new_revision.project.all_dmsf_custom_fields.include?(cv.custom_field)}.map(&:clone)
new_revision.custom_values = temp_custom_values
#add default value for CFs not existing
present_custom_fields = new_revision.custom_values.collect(&:custom_field).uniq
new_revision.project.all_dmsf_custom_fields.each do |cf|
unless present_custom_fields.include?(cf)
new_revision.custom_values << CustomValue.new({:custom_field => cf, :value => cf.default_value})
end
end
unless new_revision.save
file.delete
end
end
return file
@ -350,8 +350,7 @@ class DmsfFile < ActiveRecord::Base
next if dmsf_attrs[1].blank?
next unless results.select{|f| f.id.to_s == dmsf_attrs[1]}.empty?
find_conditions = DmsfFile.merge_conditions(limit_options[:conditions], :id => dmsf_attrs[1], :deleted => false )
dmsf_file = DmsfFile.find(:first, :conditions => find_conditions )
dmsf_file = DmsfFile.where(limit_options[:conditions]).where(:id => dmsf_attrs[1], :deleted => false).first
if !dmsf_file.nil?
if options[:offset]