From f3dd749c1df02253469e9dedd466d69df54a13db Mon Sep 17 00:00:00 2001 From: aignatov-bio <aignatov@biosistemika.com> Date: Fri, 6 Nov 2020 11:47:18 +0100 Subject: [PATCH] Fix smart annotation for archived experiments --- app/services/smart_annotations/html_preview.rb | 17 +++++++++++------ .../smart_annotations/permission_eval.rb | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/app/services/smart_annotations/html_preview.rb b/app/services/smart_annotations/html_preview.rb index 926a2c22f..33b2a04fe 100644 --- a/app/services/smart_annotations/html_preview.rb +++ b/app/services/smart_annotations/html_preview.rb @@ -12,23 +12,24 @@ module SmartAnnotations ROUTES = Rails.application.routes.url_helpers def generate_prj_snippet(_, object) - if object.archived? - return "<span class='sa-type'>Prj</span>#{object.name} #{I18n.t('atwho.res.archived')}" - end + return "<span class='sa-type'>Prj</span>#{object.name} #{I18n.t('atwho.res.archived')}" if object.archived? + "<a href='#{ROUTES.project_path(object)}'><span class='sa-type'>Prj</span>#{object.name}</a>" end def generate_exp_snippet(_, object) - if object.archived? + if object.archived? || object.project.archived? return "<span class='sa-type'>Exp</span>#{object.name} #{I18n.t('atwho.res.archived')}" end + "<a href='#{ROUTES.canvas_experiment_path(object)}'><span class='sa-type'>Exp</span>#{object.name}</a>" end def generate_tsk_snippet(_, object) - if object.archived? + if object.archived? || object.experiment.archived? || object.experiment.project.archived? return "<span class='sa-type'>Tsk</span>#{object.name} #{I18n.t('atwho.res.archived')}" end + "<a href='#{ROUTES.protocols_my_module_path(object)}'>" \ "<span class='sa-type'>Tsk</span>#{object.name}</a>" end @@ -52,18 +53,22 @@ module SmartAnnotations splited_name = name.split size = splited_name.size return name.strip.slice(0..2).capitalize if size == 1 + generate_name_from_array(splited_name, size).capitalize end def generate_name_from_array(names, size) return "#{names[0].slice(0..1)}#{names[1][0]}" if size == 2 + "#{names[0][0]}#{names[1][0]}#{names[2][0]}" end def fetch_repository_name(object) return object.repository.name if object.repository - repository = Repository.with_discarded.find_by_id(object.repository_id) + + repository = Repository.with_discarded.find_by(id: object.repository_id) return 'Inv' unless repository + repository.name end end diff --git a/app/services/smart_annotations/permission_eval.rb b/app/services/smart_annotations/permission_eval.rb index 69b60d9e3..1bfc1fac0 100644 --- a/app/services/smart_annotations/permission_eval.rb +++ b/app/services/smart_annotations/permission_eval.rb @@ -20,7 +20,7 @@ module SmartAnnotations def validate_exp_permissions(user, team, object) object.archived = false - permission_check = object.project.team.id == team.id && can_read_experiment?(user, object) + permission_check = validate_prj_permissions(user, team, object.project) object.archived = true if object.archived_changed? permission_check end