projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' into 3654-combine-selections
[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 cb457014aa56218fd3c07f240a7156ee551aeab7..083db9133b15cd4e746fbfca982ec6be3805c904 100644
(file)
--- a/
apps/workbench/app/models/arvados_base.rb
+++ b/
apps/workbench/app/models/arvados_base.rb
@@
-1,6
+1,7
@@
class ArvadosBase < ActiveRecord::Base
self.abstract_class = true
attr_accessor :attribute_sortkey
class ArvadosBase < ActiveRecord::Base
self.abstract_class = true
attr_accessor :attribute_sortkey
+ attr_accessor :create_params
def self.arvados_api_client
ArvadosApiClient.new_or_current
def self.arvados_api_client
ArvadosApiClient.new_or_current
@@
-29,8
+30,9
@@
class ArvadosBase < ActiveRecord::Base
end
end
end
end
- def initialize raw_params={}
+ def initialize raw_params={}
, create_params={}
super self.class.permit_attribute_params(raw_params)
super self.class.permit_attribute_params(raw_params)
+ @create_params = create_params
@attribute_sortkey ||= {
'id' => nil,
'name' => '000',
@attribute_sortkey ||= {
'id' => nil,
'name' => '000',
@@
-54,7
+56,7
@@
class ArvadosBase < ActiveRecord::Base
end
def self.columns
end
def self.columns
- return @columns
unless @columns.nil
?
+ return @columns
if @columns.andand.any
?
@columns = []
@attribute_info ||= {}
schema = arvados_api_client.discovery[:schemas][self.to_s.to_sym]
@columns = []
@attribute_info ||= {}
schema = arvados_api_client.discovery[:schemas][self.to_s.to_sym]
@@
-129,6
+131,10
@@
class ArvadosBase < ActiveRecord::Base
ArvadosResourceList.new(self).limit(*args)
end
ArvadosResourceList.new(self).limit(*args)
end
+ def self.select(*args)
+ ArvadosResourceList.new(self).select(*args)
+ end
+
def self.eager(*args)
ArvadosResourceList.new(self).eager(*args)
end
def self.eager(*args)
ArvadosResourceList.new(self).eager(*args)
end
@@
-148,8
+154,10
@@
class ArvadosBase < ActiveRecord::Base
ActionController::Parameters.new(raw_params).permit!
end
ActionController::Parameters.new(raw_params).permit!
end
- def self.create raw_params={}
- super(permit_attribute_params(raw_params))
+ def self.create raw_params={}, create_params={}
+ x = super(permit_attribute_params(raw_params))
+ x.create_params = create_params
+ x
end
def update_attributes raw_params={}
end
def update_attributes raw_params={}
@@
-159,7
+167,9
@@
class ArvadosBase < ActiveRecord::Base
def save
obdata = {}
self.class.columns.each do |col|
def save
obdata = {}
self.class.columns.each do |col|
- obdata[col.name.to_sym] = self.send(col.name.to_sym)
+ unless self.send(col.name.to_sym).nil? and !self.changed.include?(col.name)
+ obdata[col.name.to_sym] = self.send(col.name.to_sym)
+ end
end
obdata.delete :id
postdata = { self.class.to_s.underscore => obdata }
end
obdata.delete :id
postdata = { self.class.to_s.underscore => obdata }
@@
-168,6
+178,7
@@
class ArvadosBase < ActiveRecord::Base
obdata.delete :uuid
resp = arvados_api_client.api(self.class, '/' + uuid, postdata)
else
obdata.delete :uuid
resp = arvados_api_client.api(self.class, '/' + uuid, postdata)
else
+ postdata.merge!(@create_params) if @create_params
resp = arvados_api_client.api(self.class, '', postdata)
end
return false if !resp[:etag] || !resp[:uuid]
resp = arvados_api_client.api(self.class, '', postdata)
end
return false if !resp[:etag] || !resp[:uuid]
@@
-273,8
+284,9
@@
class ArvadosBase < ActiveRecord::Base
uuid
end
uuid
end
- def dup
- super.forget_uuid!
+ def initialize_copy orig
+ super
+ forget_uuid!
end
def attributes_for_display
end
def attributes_for_display
@@
-289,11
+301,20
@@
class ArvadosBase < ActiveRecord::Base
self.class.to_s.underscore.humanize
end
self.class.to_s.underscore.humanize
end
+ def self.class_for_display
+ self.to_s.underscore.humanize
+ end
+
+ # Array of strings that are names of attributes that should be rendered as textile.
+ def textile_attributes
+ []
+ end
+
def self.creatable?
current_user
end
def self.creatable?
current_user
end
- def self.goes_in_
folder
s?
+ def self.goes_in_
project
s?
false
end
false
end
@@
-306,7
+327,7
@@
class ArvadosBase < ActiveRecord::Base
end
def attribute_editable?(attr, ever=nil)
end
def attribute_editable?(attr, ever=nil)
- if
"created_at modified_at modified_by_user_uuid modified_by_client_uuid updated_at".index(attr.to_s)
+ if
%w(created_at modified_at modified_by_user_uuid modified_by_client_uuid updated_at).include? attr.to_s
false
elsif not (current_user.andand.is_active)
false
false
elsif not (current_user.andand.is_active)
false
@@
-348,6
+369,10
@@
class ArvadosBase < ActiveRecord::Base
resource_class
end
resource_class
end
+ def resource_param_name
+ self.class.to_s.underscore
+ end
+
def friendly_link_name
(name if self.respond_to? :name) || default_name
end
def friendly_link_name
(name if self.respond_to? :name) || default_name
end
@@
-364,6
+389,14
@@
class ArvadosBase < ActiveRecord::Base
self.to_s.underscore.humanize
end
self.to_s.underscore.humanize
end
+ def controller
+ (self.class.to_s.pluralize + 'Controller').constantize
+ end
+
+ def controller_name
+ self.class.to_s.tableize
+ end
+
# Placeholder for name when name is missing or empty
def default_name
if self.respond_to? :name
# Placeholder for name when name is missing or empty
def default_name
if self.respond_to? :name