diff --git a/CHANGELOG.md b/CHANGELOG.md index 2aab9768..5882de1a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ Changelog for Redmine DMSF Global title format for downloading New columns in the main DMSF view; columns are configurable from the plugin settings +* Bug: #663 - Locked documnts on My page * Bug: #662 - Broken paging on the Add approver form * Bug: #651 - Incomplete copy of a file to another project * New: #641 - Documents export diff --git a/app/models/dmsf_lock.rb b/app/models/dmsf_lock.rb index e9b3ddf2..e2b79370 100644 --- a/app/models/dmsf_lock.rb +++ b/app/models/dmsf_lock.rb @@ -46,8 +46,7 @@ class DmsfLock < ActiveRecord::Base end def expired? - return false if expires_at.nil? - return expires_at <= Time.now + return expires_at && (expires_at <= Time.now) end def generate_uuid @@ -55,7 +54,7 @@ class DmsfLock < ActiveRecord::Base end def self.delete_expired - self.delete_all ["#{DmsfLock.table_name}.expires_at IS NOT NULL && #{DmsfLock.table_name}.expires_at < ?", Time.now] + DmsfLock.where(['expires_at < ?', Time.now]).delete_all end # Let's allow our UUID to be searchable diff --git a/app/views/my/blocks/_locked_documents.html.erb b/app/views/my/blocks/_locked_documents.html.erb index 6992cb60..7c48714a 100644 --- a/app/views/my/blocks/_locked_documents.html.erb +++ b/app/views/my/blocks/_locked_documents.html.erb @@ -22,12 +22,14 @@ <% folders = [] %> <% files = [] %> -<% folders = DmsfFolder.joins( +<% folders = DmsfFolder.visible.joins( 'JOIN dmsf_locks ON dmsf_folders.id = dmsf_locks.entity_id').where( - 'dmsf_locks.entity_type' => 1, 'dmsf_locks.user_id' => @user.id).all if @user %> -<% files = DmsfFile.joins( + ['dmsf_locks.entity_type = ? AND dmsf_locks.user_id = ? AND (dmsf_locks.expires_at IS NULL OR dmsf_locks.expires_at > ?)', + 1, @user.id, Time.now]).all if @user %> +<% files = DmsfFile.visible.joins( 'JOIN dmsf_locks ON dmsf_files.id = dmsf_locks.entity_id').where( - 'dmsf_locks.entity_type' => 0, 'dmsf_locks.user_id' => @user.id).all if @user %> + ['dmsf_locks.entity_type = ? AND dmsf_locks.user_id = ? AND (dmsf_locks.expires_at IS NULL OR dmsf_locks.expires_at > ?)', + 0, @user.id, Time.now]).all if @user %>

<%= l(:locked_documents)%> (<%= folders.count %>/<%= files.count %>)

<% if folders.any? || files.any?%> <%= form_tag({}) do %> diff --git a/lib/redmine_dmsf/lockable.rb b/lib/redmine_dmsf/lockable.rb index 8b1d5de0..b77d4f27 100644 --- a/lib/redmine_dmsf/lockable.rb +++ b/lib/redmine_dmsf/lockable.rb @@ -69,7 +69,8 @@ module RedmineDmsf l.lock_scope = scope l.user = User.current l.expires_at = expire - l.revision = self.last_revision.id unless self.is_a?(DmsfFolder) + # TODO: @carlolars + # l.revision = self.last_revision.id unless self.is_a?(DmsfFolder) l.save! reload locks.reload diff --git a/test/unit/dmsf_lock_test.rb b/test/unit/dmsf_lock_test.rb index 8590b4a7..b639104a 100644 --- a/test/unit/dmsf_lock_test.rb +++ b/test/unit/dmsf_lock_test.rb @@ -113,4 +113,14 @@ class DmsfLockTest < RedmineDmsf::Test::UnitTest User.current = nil end + def test_expired + User.current = @jsmith + lock = DmsfLock.new + assert !lock.expired? + lock.expires_at = Time.now + assert lock.expired? + lock.expires_at = Time.now + 1.hour + assert !lock.expired? + end + end \ No newline at end of file