end
end
+ def new
+ @object = model_class.new
+ end
+
+ def update
+ if @object.update_attributes params[@object.class.to_s.underscore.singularize.to_sym]
+ show
+ else
+ self.render_error status: 422
+ end
+ end
+
+ def create
+ @object = model_class.new params[model_class.to_s.singularize.to_sym]
+ @object.save!
+ redirect_to @object
+ end
+
def current_user
if Thread.current[:arvados_api_token]
@current_user ||= User.current
rescue ArvadosApiClient::NotLoggedInException
try_redirect_to_login = true
end
+ else
+ logger.debug "session is #{session.inspect}"
end
if try_redirect_to_login
respond_to do |f|
}
end
+ def editable?
+ (current_user and
+ (current_user.is_admin or
+ current_user.uuid == self.owner))
+ end
+
+ def attribute_editable?(attr)
+ if "created_at modified_at modified_by_user modified_by_client updated_at".index(attr.to_s)
+ false
+ elsif "uuid owner".index(attr.to_s)
+ current_user and current_user.is_admin
+ else
+ true
+ end
+ end
+
def self.resource_class_for_uuid(uuid, opts={})
if uuid.is_a? ArvadosBase
return uuid.class
@etag = nil
self
end
+
+ def current_user
+ Thread.current[:user]
+ end
end
class AuthorizedKey < ArvadosBase
+ def attribute_editable?(attr)
+ if attr.to_s == 'authorized_user'
+ current_user and current_user.is_admin
+ else
+ super(attr)
+ end
+ end
end
tot
end
end
+
+ def attribute_editable?(attr)
+ false
+ end
end
class Job < ArvadosBase
+ def attribute_editable?(attr)
+ false
+ end
end
end
end
end
+
+ def attribute_editable?(attr)
+ attr == 'name'
+ end
end
+<%= form_for @object do |f| %>
<table class="table topalign">
<thead>
</thead>
<% end %>
</tbody>
</table>
+<% end %>
+
<pre>
<%= JSON.pretty_generate(@object.attributes) rescue nil %>
</pre>
<td><%= attr %></td>
<% if attr == 'uuid' and (uuid = attrvalue.split('-')).size == 3 %>
<td><%= uuid[0..-2].join('-') %>-<b><%= uuid[-1] %></b></td>
+ <% elsif @object.attribute_editable?(attr) %>
+ <td><%= link_to "#{attrvalue}", '#', { "data-type" => "text", "data-resource" => @object.class.to_s.singularize.underscore, "data-name" => attr, "data-url" => url_for(action: "update", id: @object.uuid), "data-original-title" => "Enter #{attr}", :class => "editable" } %></td>
<% else %>
<td><%= link_to_if_arvados_object attrvalue, {referring_attr: attr, referring_object: @object, with_prefixes: true, with_class_name: true} %></td>
<% end %>
--- /dev/null
+<%= form_for @object do |f| %>
+<table class="table">
+ <tr>
+ <td>
+ name
+ </td><td>
+ <%= f.text_field :name %>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ authorized user
+ </td><td>
+ <%= f.text_field :authorized_user %>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ public key
+ </td><td>
+ <%= f.text_area :public_key %>
+ </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>
+ <%= f.submit class: 'btn btn-primary' %>
+ </td>
+ </tr>
+</table>
+<% end %>
--- /dev/null
+<%= render partial: 'form' %>
</thead>
<tbody>
- <% @objects.sort_by { |ak| ak[:created_at] }.reverse.each do |g| %>
+ <% @objects.sort_by { |ak| ak[:created_at] }.reverse.each do |ak| %>
<tr>
<td>
--- /dev/null
+<%= render partial: 'form' %>
--- /dev/null
+<%= render :partial => 'application/arvados_object' %>