10008: Move test setup from __init__() to setUp()
[arvados.git] / services / api / lib / common_api_template.rb
index 7b7478e25ba04609fad19055ef4349e46277646e..67c7f8c4fa240a2ccb78534ddcb26243c5eb30b2 100644 (file)
@@ -1,8 +1,13 @@
 module CommonApiTemplate
   def self.included(base)
-    base.extend(ClassMethods)
     base.acts_as_api
+    base.class_eval do
+      alias_method :as_api_response_orig, :as_api_response
+      include InstanceMethods
+    end
+    base.extend(ClassMethods)
     base.api_accessible :common do |t|
+      t.add :href
       t.add :kind
       t.add :etag
       t.add :uuid
@@ -11,7 +16,21 @@ module CommonApiTemplate
       t.add :modified_by_client_uuid
       t.add :modified_by_user_uuid
       t.add :modified_at
-      t.add :updated_at
+    end
+  end
+
+  module InstanceMethods
+    # choose template based on opts[:for_user]
+    def as_api_response(template=nil, opts={})
+      if template.nil?
+        user = opts[:for_user] || current_user
+        if user.andand.is_admin and self.respond_to? :api_accessible_superuser
+          template = :superuser
+        else
+          template = :user
+        end
+      end
+      self.as_api_response_orig(template, opts)
     end
   end