3036: Merge branch 'master' into 3036-mutable-collections
[arvados.git] / services / api / app / models / collection.rb
index 623952f3d5d53c158b47a7f6abf0271f50cd9c22..a50c47b6a30fd778a77a5717df2b41cb8d31d526 100644 (file)
@@ -29,9 +29,7 @@ class Collection < ArvadosModel
   end
 
   def assign_uuid
-    if self.manifest_text.nil? and self.uuid.nil?
-      return super
-    elsif not self.manifest_text
+    if not self.manifest_text
       errors.add :manifest_text, 'not supplied'
       return false
     end
@@ -49,6 +47,20 @@ class Collection < ArvadosModel
     true
   end
 
+  # TODO (#3036/tom) replace above assign_uuid method with below assign_uuid and self.generate_uuid
+  # def assign_uuid
+  #   # Even admins cannot assign collection uuids.
+  #   self.uuid = self.class.generate_uuid
+  # end
+  # def self.generate_uuid
+  #   # The last 10 characters of a collection uuid are the last 10
+  #   # characters of the base-36 SHA256 digest of manifest_text.
+  #   [Server::Application.config.uuid_prefix,
+  #    self.uuid_prefix,
+  #    rand(2**256).to_s(36)[-5..-1] + Digest::SHA256.hexdigest(self.manifest_text).to_i(16).to_s(36)[-10..-1],
+  #   ].join '-'
+  # end
+
   def data_size
     inspect_manifest_text if @data_size.nil? or manifest_text_changed?
     @data_size