projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
12033: browserify is needed in production env, for package-building.
[arvados.git]
/
apps
/
workbench
/
app
/
models
/
arvados_base.rb
diff --git
a/apps/workbench/app/models/arvados_base.rb
b/apps/workbench/app/models/arvados_base.rb
index e7db4728c80486160ae19fdbe259cc7f771960f0..8e1cfae8a2858fba0a0b6f8c836b6dc65168a44f 100644
(file)
--- a/
apps/workbench/app/models/arvados_base.rb
+++ b/
apps/workbench/app/models/arvados_base.rb
@@
-1,3
+1,7
@@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
class ArvadosBase < ActiveRecord::Base
self.abstract_class = true
attr_accessor :attribute_sortkey
class ArvadosBase < ActiveRecord::Base
self.abstract_class = true
attr_accessor :attribute_sortkey
@@
-76,8
+80,10
@@
class ArvadosBase < ActiveRecord::Base
serialize k, coldef[:type].constantize
end
define_method k do
serialize k, coldef[:type].constantize
end
define_method k do
- unless new_record? or @loaded_attributes.include? k
- raise ActiveModel::MissingAttributeError, "missing attribute: #{k}"
+ unless new_record? or @loaded_attributes.include? k.to_s
+ Rails.logger.debug "BUG: access non-loaded attribute #{k}"
+ # We should...
+ # raise ActiveModel::MissingAttributeError, "missing attribute: #{k}"
end
super()
end
end
super()
end
@@
-142,10
+148,22
@@
class ArvadosBase < ActiveRecord::Base
ArvadosResourceList.new(self).select(*args)
end
ArvadosResourceList.new(self).select(*args)
end
+ def self.with_count(*args)
+ ArvadosResourceList.new(self).with_count(*args)
+ end
+
def self.distinct(*args)
ArvadosResourceList.new(self).distinct(*args)
end
def self.distinct(*args)
ArvadosResourceList.new(self).distinct(*args)
end
+ def self.include_trash(*args)
+ ArvadosResourceList.new(self).include_trash(*args)
+ end
+
+ def self.recursive(*args)
+ ArvadosResourceList.new(self).recursive(*args)
+ end
+
def self.eager(*args)
ArvadosResourceList.new(self).eager(*args)
end
def self.eager(*args)
ArvadosResourceList.new(self).eager(*args)
end
@@
-332,7
+350,7
@@
class ArvadosBase < ActiveRecord::Base
end
def self.creatable?
end
def self.creatable?
- current_user.andand.is_active
+ current_user.andand.is_active
&& api_exists?(:create)
end
def self.goes_in_projects?
end
def self.goes_in_projects?
@@
-355,6
+373,14
@@
class ArvadosBase < ActiveRecord::Base
(ArvadosBase.find(owner_uuid).writable_by.include? current_user.uuid rescue false)))) or false
end
(ArvadosBase.find(owner_uuid).writable_by.include? current_user.uuid rescue false)))) or false
end
+ def deletable?
+ editable?
+ end
+
+ def self.api_exists?(method)
+ arvados_api_client.discovery[:resources][self.to_s.underscore.pluralize.to_sym].andand[:methods].andand[method]
+ end
+
# Array of strings that are the names of attributes that can be edited
# with X-Editable.
def editable_attributes
# Array of strings that are the names of attributes that can be edited
# with X-Editable.
def editable_attributes