[PATCH conductor 07/20] Adds XML format for show detail of Provider

pblaho at redhat.com pblaho at redhat.com
Fri Jun 8 00:38:00 UTC 2012


From: Petr Blaho <pblaho at redhat.com>

https://www.aeolusproject.org/redmine/issues/3239

Adds _detail.xml.haml template for displaying Provider via XML
Adds respond_to block to handle_active_record_not_found error handler
---
 src/app/controllers/application_controller.rb |    9 +++++++--
 src/app/controllers/providers_controller.rb   |    1 +
 src/app/views/api/error.xml.haml              |    2 +-
 src/app/views/providers/_detail.xml.haml      |    6 ++++++
 4 files changed, 15 insertions(+), 3 deletions(-)
 create mode 100644 src/app/views/providers/_detail.xml.haml

diff --git a/src/app/controllers/application_controller.rb b/src/app/controllers/application_controller.rb
index aed6b7e..eb5931b 100644
--- a/src/app/controllers/application_controller.rb
+++ b/src/app/controllers/application_controller.rb
@@ -107,8 +107,13 @@ class ApplicationController < ActionController::Base
   end
 
   def handle_active_record_not_found_error(error)
-    redirect_to :controller => params[:controller]
-    flash[:notice] = t('application_controller.flash.notice.record_not_exist')
+    respond_to do |format|
+      format.html do
+        redirect_to :controller => params[:controller]
+        flash[:notice] = t('application_controller.flash.notice.record_not_exist')
+      end
+      format.xml { render :template => 'api/error', :locals => {:error => error}, :status => :not_found }
+    end
   end
 
   def handle_api_error(error)
diff --git a/src/app/controllers/providers_controller.rb b/src/app/controllers/providers_controller.rb
index 4073dd8..503e6a4 100644
--- a/src/app/controllers/providers_controller.rb
+++ b/src/app/controllers/providers_controller.rb
@@ -95,6 +95,7 @@ class ProvidersController < ApplicationController
         end
         render :partial => @details_tab and return
       end
+      format.xml { render :partial => 'detail', :locals => { :provider => @provider } }
     end
   end
 
diff --git a/src/app/views/api/error.xml.haml b/src/app/views/api/error.xml.haml
index 15d9efd..edae2b1 100644
--- a/src/app/views/api/error.xml.haml
+++ b/src/app/views/api/error.xml.haml
@@ -1,4 +1,4 @@
 !!!XML
 %error
   %code=error.class.name.demodulize
-  %message=error.message
\ No newline at end of file
+  %message=error.message
diff --git a/src/app/views/providers/_detail.xml.haml b/src/app/views/providers/_detail.xml.haml
new file mode 100644
index 0000000..d70c6f1
--- /dev/null
+++ b/src/app/views/providers/_detail.xml.haml
@@ -0,0 +1,6 @@
+!!! XML
+%provider{:id => provider.id, :href => api_provider_url(provider)}
+  %name= provider.name
+  %url= provider.url
+  %provider_type= provider.provider_type.deltacloud_driver
+  %deltacloud_provider= provider.deltacloud_provider
-- 
1.7.7.6




More information about the aeolus-devel mailing list