From d2f3af0b8837f0f64eee24ebaec3ebe5e6f2de75 Mon Sep 17 00:00:00 2001 From: "COLA@Redminetest" Date: Thu, 24 Nov 2016 21:37:17 +0100 Subject: [PATCH 1/2] source_revision for dependent revisions is updated on destroy instead of delete. --- app/models/dmsf_file_revision.rb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/models/dmsf_file_revision.rb b/app/models/dmsf_file_revision.rb index f0963513..6df8987e 100644 --- a/app/models/dmsf_file_revision.rb +++ b/app/models/dmsf_file_revision.rb @@ -83,11 +83,7 @@ class DmsfFileRevision < ActiveRecord::Base errors[:base] << l(:error_at_least_one_revision_must_be_present) return false end - dependent = DmsfFileRevision.where(:source_dmsf_file_revision_id => self.id).all - dependent.each do |d| - d.source_revision = self.source_revision - d.save! - end + if commit self.destroy else @@ -104,6 +100,11 @@ class DmsfFileRevision < ActiveRecord::Base end def destroy + dependent = DmsfFileRevision.where(:source_dmsf_file_revision_id => self.id).all + dependent.each do |d| + d.source_revision = self.source_revision + d.save! + end if Setting.plugin_redmine_dmsf['dmsf_really_delete_files'] dependencies = DmsfFileRevision.where(:disk_filename => self.disk_filename).all.count File.delete(self.disk_file) if dependencies <= 1 && File.exist?(self.disk_file) From 9e328c39ab95654f03058e2c2371f919623035f4 Mon Sep 17 00:00:00 2001 From: "COLA@Redminetest" Date: Thu, 24 Nov 2016 22:23:46 +0100 Subject: [PATCH 2/2] dmsf_file_revisions are ordered by id instead of major_version, minor_version and updated_at. Previously they were ordered by major_version DESC, minor_version DESC and updated_at DESC. This caused problems after restoring deleted files as the updated_at field were set to the same for all revisions, and renamed files have the same major and minor version and could therefore be sorted in the wrong order. Why would it not be ordered by id from the start? --- app/models/dmsf_file.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/dmsf_file.rb b/app/models/dmsf_file.rb index e6f72e5c..76b437a4 100644 --- a/app/models/dmsf_file.rb +++ b/app/models/dmsf_file.rb @@ -36,7 +36,7 @@ class DmsfFile < ActiveRecord::Base belongs_to :dmsf_folder belongs_to :deleted_by_user, :class_name => 'User', :foreign_key => 'deleted_by_user_id' - has_many :dmsf_file_revisions, -> { order("#{DmsfFileRevision.table_name}.major_version DESC, #{DmsfFileRevision.table_name}.minor_version DESC, #{DmsfFileRevision.table_name}.updated_at DESC") }, + has_many :dmsf_file_revisions, -> { order("#{DmsfFileRevision.table_name}.id DESC") }, :dependent => :destroy has_many :locks, -> { where(entity_type: 0).order("#{DmsfLock.table_name}.updated_at DESC") }, :class_name => 'DmsfLock', :foreign_key => 'entity_id', :dependent => :destroy