aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/helpers/newapplication_helper.rb2
-rw-r--r--app/policies/application_policy.rb28
2 files changed, 24 insertions, 6 deletions
diff --git a/app/helpers/newapplication_helper.rb b/app/helpers/newapplication_helper.rb
index 3100450c9..c1a1c189e 100644
--- a/app/helpers/newapplication_helper.rb
+++ b/app/helpers/newapplication_helper.rb
@@ -151,7 +151,7 @@ module NewapplicationHelper
content_tag :li, link_to(t("actions.#{action}"), polymorph_url, method: :put)
end
elsif action == :unarchive
- if item.archived_or_finalised?
+ if item.archived? && !item.finalised?
content_tag :li, link_to(t("actions.#{action}"), polymorph_url, method: :put)
end
else
diff --git a/app/policies/application_policy.rb b/app/policies/application_policy.rb
index 68007b133..7b4d1b0c0 100644
--- a/app/policies/application_policy.rb
+++ b/app/policies/application_policy.rb
@@ -76,9 +76,18 @@ class ApplicationPolicy
# Custom Permissions
# ------------------
+ def archived?
+ return @is_archived if instance_variable_defined?(:@is_archived)
+ @is_archived = is_archived
+ end
+
+ def finalised?
+ return @is_finalised if instance_variable_defined?(:@is_finalised)
+ @is_finalised = is_finalised
+ end
+
def archived_or_finalised?
- return @is_archived_or_finalised if instance_variable_defined?(:@is_archived_or_finalised)
- @is_archived_or_finalised = is_archived_or_finalised
+ archived? || finalised?
end
@@ -117,12 +126,21 @@ class ApplicationPolicy
end
private
- def is_archived_or_finalised
+ def is_archived
+ !!case referential
+ when Referential
+ referential.archived_at
+ else
+ current_referential.try(:archived_at)
+ end
+ end
+
+ def is_finalised
!!case referential
when Referential
- referential.archived_at || referential.in_referential_suite?
+ referential.in_referential_suite?
else
- current_referential.try(:archived_at) || current_referential.try(:in_referential_suite?)
+ current_referential.try(:in_referential_suite?)
end
end
end