16007: Special handing for users with permissions on other users
[arvados.git] / services / api / app / models / workflow.rb
index c899cc08fa86767addcb8808cd1845134171cd9a..94890c6632e3b9a8ea6eadf914edd9552ec618e5 100644 (file)
@@ -1,41 +1,54 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
 class Workflow < ArvadosModel
   include HasUuid
   include KindAndEtag
   include CommonApiTemplate
 
-  validate :validate_workflow
-  after_save :set_name_and_description
+  validate :validate_definition
+  before_save :set_name_and_description
 
   api_accessible :user, extend: :common do |t|
     t.add :name
     t.add :description
-    t.add :workflow
+    t.add :definition
   end
 
-  def validate_workflow
+  def validate_definition
     begin
-      @workflow_yaml = YAML.load self.workflow if !workflow.blank?
-    rescue
-      errors.add :validate_workflow, "#{self.workflow} is not valid yaml"
+      @definition_yaml = YAML.load self.definition if !definition.nil?
+    rescue => e
+      errors.add :definition, "is not valid yaml: #{e.message}"
     end
   end
 
   def set_name_and_description
+    old_wf = {}
     begin
-      old_wf = []
-      old_wf = YAML.load self.workflow_was if !self.workflow_was.blank?
-      changes = self.changes
-      need_save = false
-      ['name', 'description'].each do |a|
-        if !changes.include?(a)
-          v = self.read_attribute(a)
-          if !v.present? or v == old_wf[a]
-            self[a] = @workflow_yaml[a]
-          end
+      old_wf = YAML.load self.definition_was if !self.definition_was.nil?
+    rescue => e
+      logger.warn "set_name_and_description error: #{e.message}"
+      return
+    end
+
+    ['name', 'description'].each do |a|
+      if !self.changes.include?(a)
+        v = self.read_attribute(a)
+        if !v.present? or v == old_wf[a]
+          val = @definition_yaml[a] if self.definition and @definition_yaml
+          self[a] = val
         end
       end
-    rescue => e
-      errors.add :set_name_and_description, "#{e.message}"
     end
   end
+
+  def self.full_text_searchable_columns
+    super - ["definition"]
+  end
+
+  def self.limit_index_columns_read
+    ["definition"]
+  end
 end