From 8238a4f33f5120f46af079ce7cddac98c5fe4f3a Mon Sep 17 00:00:00 2001 From: Karel Picman Date: Fri, 10 Jun 2016 13:58:20 +0200 Subject: [PATCH] Expired locks --- app/controllers/dmsf_files_controller.rb | 16 ++++++++++++---- config/locales/de.yml | 2 +- config/locales/en.yml | 2 +- config/locales/es.yml | 2 +- config/locales/fr.yml | 2 +- config/locales/ja.yml | 2 +- config/locales/pl.yml | 2 +- config/locales/pt-BR.yml | 2 +- config/locales/ru.yml | 2 +- config/locales/sl.yml | 2 +- config/locales/zh-TW.yml | 2 +- config/locales/zh.yml | 2 +- lib/redmine_dmsf/lockable.rb | 2 +- 13 files changed, 24 insertions(+), 16 deletions(-) diff --git a/app/controllers/dmsf_files_controller.rb b/app/controllers/dmsf_files_controller.rb index 348516c8..6a5b6a7e 100644 --- a/app/controllers/dmsf_files_controller.rb +++ b/app/controllers/dmsf_files_controller.rb @@ -254,8 +254,12 @@ class DmsfFilesController < ApplicationController if @file.locked? flash[:warning] = l(:warning_file_already_locked) else - @file.lock! - flash[:notice] = l(:notice_file_locked) + begin + @file.lock! + flash[:notice] = l(:notice_file_locked) + rescue Exception => e + flash[:error] = e.message + end end redirect_to :back end @@ -265,8 +269,12 @@ class DmsfFilesController < ApplicationController flash[:warning] = l(:warning_file_not_locked) else if @file.locks[0].user == User.current || User.current.allowed_to?(:force_file_unlock, @file.project) - @file.unlock! - flash[:notice] = l(:notice_file_unlocked) + begin + @file.unlock! + flash[:notice] = l(:notice_file_unlocked) + rescue Exception => e + flash[:error] = e.message + end else flash[:error] = l(:error_only_user_that_locked_file_can_unlock_it) end diff --git a/config/locales/de.yml b/config/locales/de.yml index 6ae07e6b..7a13db07 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -319,7 +319,7 @@ de: error_resource_or_parent_locked: Unable to complete lock - resource (or parent) is locked error_parent_locked: Unable to complete lock - resource parent is locked error_resource_locked: Unable to complete lock - resource is locked - error_lock_exclusively: unable to lock exclusively an already-locked resource + error_lock_exclusively: Unable to lock exclusively an already-locked resource error_unlock_parent_locked: Unlock failed - resource parent is locked field_dmsf_tree_view: Navigate folders in a tree diff --git a/config/locales/en.yml b/config/locales/en.yml index ef60fa49..9722dcc2 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -319,7 +319,7 @@ en: error_resource_or_parent_locked: Unable to complete lock - resource (or parent) is locked error_parent_locked: Unable to complete lock - resource parent is locked error_resource_locked: Unable to complete lock - resource is locked - error_lock_exclusively: unable to lock exclusively an already-locked resource + error_lock_exclusively: Unable to lock exclusively an already-locked resource error_unlock_parent_locked: Unlock failed - resource parent is locked field_dmsf_tree_view: Navigate folders in a tree diff --git a/config/locales/es.yml b/config/locales/es.yml index 22189389..faa35823 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -319,7 +319,7 @@ es: error_resource_or_parent_locked: Unable to complete lock - resource (or parent) is locked error_parent_locked: Unable to complete lock - resource parent is locked error_resource_locked: Unable to complete lock - resource is locked - error_lock_exclusively: unable to lock exclusively an already-locked resource + error_lock_exclusively: Unable to lock exclusively an already-locked resource error_unlock_parent_locked: Unlock failed - resource parent is locked field_dmsf_tree_view: Navigate folders in a tree diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 7023ab65..0132ed4c 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -319,7 +319,7 @@ fr: error_resource_or_parent_locked: Unable to complete lock - resource (or parent) is locked error_parent_locked: Unable to complete lock - resource parent is locked error_resource_locked: Unable to complete lock - resource is locked - error_lock_exclusively: unable to lock exclusively an already-locked resource + error_lock_exclusively: Unable to lock exclusively an already-locked resource error_unlock_parent_locked: Unlock failed - resource parent is locked field_dmsf_tree_view: Navigate folders in a tree diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 28be9da0..5ae5ccf4 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -319,7 +319,7 @@ ja: error_resource_or_parent_locked: Unable to complete lock - resource (or parent) is locked error_parent_locked: Unable to complete lock - resource parent is locked error_resource_locked: Unable to complete lock - resource is locked - error_lock_exclusively: unable to lock exclusively an already-locked resource + error_lock_exclusively: Unable to lock exclusively an already-locked resource error_unlock_parent_locked: Unlock failed - resource parent is locked field_dmsf_tree_view: Navigate folders in a tree diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 58792b10..3e8b56b6 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -319,7 +319,7 @@ pl: error_resource_or_parent_locked: Unable to complete lock - resource (or parent) is locked error_parent_locked: Unable to complete lock - resource parent is locked error_resource_locked: Unable to complete lock - resource is locked - error_lock_exclusively: unable to lock exclusively an already-locked resource + error_lock_exclusively: Unable to lock exclusively an already-locked resource error_unlock_parent_locked: Unlock failed - resource parent is locked field_dmsf_tree_view: Navigate folders in a tree diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index b6f50757..a436ba1a 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -319,7 +319,7 @@ pt-BR: error_resource_or_parent_locked: Unable to complete lock - resource (or parent) is locked error_parent_locked: Unable to complete lock - resource parent is locked error_resource_locked: Unable to complete lock - resource is locked - error_lock_exclusively: unable to lock exclusively an already-locked resource + error_lock_exclusively: Unable to lock exclusively an already-locked resource error_unlock_parent_locked: Unlock failed - resource parent is locked field_dmsf_tree_view: Navigate folders in a tree diff --git a/config/locales/ru.yml b/config/locales/ru.yml index b529588d..e282cf65 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -319,7 +319,7 @@ ru: error_resource_or_parent_locked: Невозможно выполнить блокировку - ресурс (или родительская запись) заблокированы error_parent_locked: Невозможно выполнить блокировку - родительская запись заблокирована error_resource_locked: Невозможно выполнить блокировку - ресурс заблокирован - error_lock_exclusively: невозможно эксклюзивно заблокировать уже забловированный ресурс + error_lock_exclusively: Невозможно эксклюзивно заблокировать уже забловированный ресурс error_unlock_parent_locked: Разблокировка не удалась - родительская запись заблокирована field_dmsf_tree_view: Navigate folders in a tree diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 115bc31a..cf71701b 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -319,7 +319,7 @@ sl: error_resource_or_parent_locked: Unable to complete lock - resource (or parent) is locked error_parent_locked: Unable to complete lock - resource parent is locked error_resource_locked: Unable to complete lock - resource is locked - error_lock_exclusively: unable to lock exclusively an already-locked resource + error_lock_exclusively: Unable to lock exclusively an already-locked resource error_unlock_parent_locked: Unlock failed - resource parent is locked field_dmsf_tree_view: Navigate folders in a tree diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index ff8a7160..002c846b 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -319,7 +319,7 @@ zh-TW: error_resource_or_parent_locked: Unable to complete lock - resource (or parent) is locked error_parent_locked: Unable to complete lock - resource parent is locked error_resource_locked: Unable to complete lock - resource is locked - error_lock_exclusively: unable to lock exclusively an already-locked resource + error_lock_exclusively: Unable to lock exclusively an already-locked resource error_unlock_parent_locked: Unlock failed - resource parent is locked field_dmsf_tree_view: Navigate folders in a tree diff --git a/config/locales/zh.yml b/config/locales/zh.yml index dabf6d85..d5aac430 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -319,7 +319,7 @@ zh: error_resource_or_parent_locked: Unable to complete lock - resource (or parent) is locked error_parent_locked: Unable to complete lock - resource parent is locked error_resource_locked: Unable to complete lock - resource is locked - error_lock_exclusively: unable to lock exclusively an already-locked resource + error_lock_exclusively: Unable to lock exclusively an already-locked resource error_unlock_parent_locked: Unlock failed - resource parent is locked field_dmsf_tree_view: Navigate folders in a tree diff --git a/lib/redmine_dmsf/lockable.rb b/lib/redmine_dmsf/lockable.rb index abedcdd0..66640a7c 100644 --- a/lib/redmine_dmsf/lockable.rb +++ b/lib/redmine_dmsf/lockable.rb @@ -45,7 +45,7 @@ module RedmineDmsf def lock!(scope = :scope_exclusive, type = :type_write, expire = nil) # Raise a lock error if entity is locked, but its not at resource level - existing = locks(false) + existing = lock(false) raise DmsfLockError.new(l(:error_resource_or_parent_locked)) if self.locked? && existing.empty? unless existing.empty? if (existing[0].lock_scope == :scope_shared) && (scope == :scope_shared)