aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/referentials_controller.rb9
-rw-r--r--app/models/referential.rb9
-rw-r--r--app/views/workbenches/show.html.slim5
-rw-r--r--config/locales/referentials.fr.yml1
4 files changed, 21 insertions, 3 deletions
diff --git a/app/controllers/referentials_controller.rb b/app/controllers/referentials_controller.rb
index dbf753794..b7e6d8031 100644
--- a/app/controllers/referentials_controller.rb
+++ b/app/controllers/referentials_controller.rb
@@ -53,8 +53,13 @@ class ReferentialsController < BreadcrumbController
redirect_to workbench_path(referential.workbench_id), notice: t('notice.referential.archived')
end
def unarchive
- referential.unarchive!
- redirect_to workbench_path(referential.workbench_id), notice: t('notice.referential.unarchived')
+ if referential.unarchive!
+ flash[:notice] = t('notice.referential.unarchived')
+ else
+ flash[:alert] = t('notice.referential.unarchived_failed')
+ end
+
+ redirect_to workbench_path(referential.workbench_id)
end
protected
diff --git a/app/models/referential.rb b/app/models/referential.rb
index afff89892..be7c15535 100644
--- a/app/models/referential.rb
+++ b/app/models/referential.rb
@@ -234,6 +234,10 @@ class Referential < ActiveRecord::Base
self.class.connection.select_values(query).map(&:to_i)
end
+ def metadatas_overlap?
+ overlapped_referential_ids.present?
+ end
+
validate :detect_overlapped_referentials
def detect_overlapped_referentials
@@ -313,8 +317,13 @@ class Referential < ActiveRecord::Base
touch :archived_at
end
def unarchive!
+ return false unless can_unarchive?
# self.archived = false
update_column :archived_at, nil
end
+ def can_unarchive?
+ not metadatas_overlap?
+ end
+
end
diff --git a/app/views/workbenches/show.html.slim b/app/views/workbenches/show.html.slim
index 978af1538..06f64d3c4 100644
--- a/app/views/workbenches/show.html.slim
+++ b/app/views/workbenches/show.html.slim
@@ -56,7 +56,10 @@
li
- if referential.archived?
- = link_to "Désarchiver", unarchive_referential_path(referential), method: :put
+ - if referential.can_unarchive?
+ = link_to "Désarchiver", unarchive_referential_path(referential), method: :put
+ - else
+ = link_to "Désarchiver", "#"
- else
= link_to "Archiver", archive_referential_path(referential), method: :put
diff --git a/config/locales/referentials.fr.yml b/config/locales/referentials.fr.yml
index 02848ec64..dc3d796b8 100644
--- a/config/locales/referentials.fr.yml
+++ b/config/locales/referentials.fr.yml
@@ -84,4 +84,5 @@ fr:
referential:
archived: "L'espace de données a été correctement archivé"
unarchived: "L'espace de données a été correctement désarchivé"
+ unarchived_failed: "L'espace de données ne peut être désarchivé"
deleted: "L'espace de données a été correctement supprimé"