]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/application_controller.rb
Fix exception with GPX and RSS notes#index when no notes are found
[rails.git] / app / controllers / application_controller.rb
index 3c7dba9844fbbbcd90fa164356b581804edc5839..d541eba22f55ab90bf0ee972e964a7f968b7073f 100644 (file)
@@ -213,20 +213,49 @@ class ApplicationController < ActionController::Base
   end
 
   def check_api_readable
-    if STATUS == :database_offline or STATUS == :api_offline
+    if api_status == :offline
       report_error "Database offline for maintenance", :service_unavailable
       return false
     end
   end
 
   def check_api_writable
-    if STATUS == :database_offline or STATUS == :database_readonly or
-       STATUS == :api_offline or STATUS == :api_readonly
+    unless api_status == :online
       report_error "Database offline for maintenance", :service_unavailable
       return false
     end
   end
 
+  def database_status
+    if STATUS == :database_offline
+      :offline
+    elsif STATUS == :database_readonly
+      :readonly
+    else 
+      :online
+    end
+  end
+
+  def api_status
+    status = database_status
+    if status == :online
+      if STATUS == :api_offline
+        status = :offline
+      elsif STATUS == :api_readonly
+        status = :readonly
+      end
+    end
+    return status
+  end
+
+  def gpx_status
+    status = database_status
+    if status == :online
+      status = :offline if STATUS == :gpx_offline
+    end
+    return status
+  end
+
   def require_public_data
     unless @user.data_public?
       report_error "You must make your edits public to upload new data", :forbidden
@@ -252,7 +281,7 @@ class ApplicationController < ActionController::Base
 
       render :text => result.to_s, :content_type => "text/xml"
     else
-      render :text => message, :status => status
+      render :text => message, :status => status, :content_type => "text/plain"
     end
   end