aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLouise Crow <louise.crow@gmail.com>2014-11-04 15:27:50 +0000
committerLouise Crow <louise.crow@gmail.com>2014-12-18 14:03:47 +0000
commit1ab915c1b2fbcfba5b4c8d7d58154ab72cee47cb (patch)
treead4cc23bdcb03c09764ec60921ac885d5c3fecda
parent2a76e61f6ca78a867e4a01589287ec76a5c8f4f7 (diff)
Use RESTful routing for index
-rw-r--r--app/controllers/admin_public_body_controller.rb122
-rw-r--r--app/views/admin_general/_admin_navbar.html.erb2
-rw-r--r--app/views/admin_public_body/edit.html.erb2
-rw-r--r--app/views/admin_public_body/index.html.erb (renamed from app/views/admin_public_body/list.html.erb)2
-rw-r--r--app/views/admin_public_body/new.html.erb2
-rw-r--r--config/routes.rb8
-rw-r--r--spec/controllers/admin_public_body_controller_spec.rb4
7 files changed, 71 insertions, 71 deletions
diff --git a/app/controllers/admin_public_body_controller.rb b/app/controllers/admin_public_body_controller.rb
index f7a80476c..4986cfc4e 100644
--- a/app/controllers/admin_public_body_controller.rb
+++ b/app/controllers/admin_public_body_controller.rb
@@ -5,69 +5,9 @@
# Email: hello@mysociety.org; WWW: http://www.mysociety.org/
class AdminPublicBodyController < AdminController
- def index
- list
- render :action => 'list'
- end
-
- def _lookup_query_internal
- @locale = self.locale_from_params()
- underscore_locale = @locale.gsub '-', '_'
- I18n.with_locale(@locale) do
- @query = params[:query]
- if @query == ""
- @query = nil
- end
- @page = params[:page]
- if @page == ""
- @page = nil
- end
- @public_bodies = PublicBody.joins(:translations).where(@query.nil? ? "public_body_translations.locale = '#{underscore_locale}'" :
- ["(lower(public_body_translations.name) like lower('%'||?||'%') or
- lower(public_body_translations.short_name) like lower('%'||?||'%') or
- lower(public_body_translations.request_email) like lower('%'||?||'%' )) AND (public_body_translations.locale = '#{underscore_locale}')", @query, @query, @query]).paginate :order => "public_body_translations.name", :page => @page, :per_page => 100
- end
- @public_bodies_by_tag = PublicBody.find_by_tag(@query)
- end
- def list
- self._lookup_query_internal
- end
-
- def mass_tag_add
- self._lookup_query_internal
-
- if params[:new_tag] and params[:new_tag] != ""
- if params[:table_name] == 'exact'
- bodies = @public_bodies_by_tag
- elsif params[:table_name] == 'substring'
- bodies = @public_bodies
- else
- raise "Unknown table_name " + params[:table_name]
- end
- for body in bodies
- body.add_tag_if_not_already_present(params[:new_tag])
- end
- flash[:notice] = "Added tag to table of bodies."
- end
-
- redirect_to admin_body_list_url(:query => @query, :page => @page)
- end
-
- def missing_scheme
- # There might be a way to do this in ActiveRecord, but I can't find it
- @public_bodies = PublicBody.find_by_sql("
- SELECT a.id, a.name, a.url_name, COUNT(*) AS howmany
- FROM public_bodies a JOIN info_requests r ON a.id = r.public_body_id
- WHERE a.publication_scheme = ''
- GROUP BY a.id, a.name, a.url_name
- ORDER BY howmany DESC
- LIMIT 20
- ")
- @stats = {
- "total" => PublicBody.count,
- "entered" => PublicBody.count(:conditions => "publication_scheme != ''")
- }
+ def index
+ lookup_query
end
def show
@@ -168,10 +108,46 @@ class AdminPublicBodyController < AdminController
public_body.tag_string = ""
public_body.destroy
flash[:notice] = "PublicBody was successfully destroyed."
- redirect_to admin_body_list_url
+ redirect_to admin_bodies_url
end
end
+ def mass_tag_add
+ lookup_query
+
+ if params[:new_tag] and params[:new_tag] != ""
+ if params[:table_name] == 'exact'
+ bodies = @public_bodies_by_tag
+ elsif params[:table_name] == 'substring'
+ bodies = @public_bodies
+ else
+ raise "Unknown table_name " + params[:table_name]
+ end
+ for body in bodies
+ body.add_tag_if_not_already_present(params[:new_tag])
+ end
+ flash[:notice] = "Added tag to table of bodies."
+ end
+
+ redirect_to admin_bodies_url(:query => @query, :page => @page)
+ end
+
+ def missing_scheme
+ # There might be a way to do this in ActiveRecord, but I can't find it
+ @public_bodies = PublicBody.find_by_sql("
+ SELECT a.id, a.name, a.url_name, COUNT(*) AS howmany
+ FROM public_bodies a JOIN info_requests r ON a.id = r.public_body_id
+ WHERE a.publication_scheme = ''
+ GROUP BY a.id, a.name, a.url_name
+ ORDER BY howmany DESC
+ LIMIT 20
+ ")
+ @stats = {
+ "total" => PublicBody.count,
+ "entered" => PublicBody.count(:conditions => "publication_scheme != ''")
+ }
+ end
+
def import_csv
@notes = ""
@errors = ""
@@ -251,4 +227,24 @@ class AdminPublicBodyController < AdminController
return csv_contents
end
+ def lookup_query
+ @locale = self.locale_from_params()
+ underscore_locale = @locale.gsub '-', '_'
+ I18n.with_locale(@locale) do
+ @query = params[:query]
+ if @query == ""
+ @query = nil
+ end
+ @page = params[:page]
+ if @page == ""
+ @page = nil
+ end
+ @public_bodies = PublicBody.joins(:translations).where(@query.nil? ? "public_body_translations.locale = '#{underscore_locale}'" :
+ ["(lower(public_body_translations.name) like lower('%'||?||'%') or
+ lower(public_body_translations.short_name) like lower('%'||?||'%') or
+ lower(public_body_translations.request_email) like lower('%'||?||'%' )) AND (public_body_translations.locale = '#{underscore_locale}')", @query, @query, @query]).paginate :order => "public_body_translations.name", :page => @page, :per_page => 100
+ end
+ @public_bodies_by_tag = PublicBody.find_by_tag(@query)
+ end
+
end
diff --git a/app/views/admin_general/_admin_navbar.html.erb b/app/views/admin_general/_admin_navbar.html.erb
index a663e62d4..b6196815a 100644
--- a/app/views/admin_general/_admin_navbar.html.erb
+++ b/app/views/admin_general/_admin_navbar.html.erb
@@ -9,7 +9,7 @@
<li><%= link_to 'Timeline', admin_timeline_path %></li>
<li><%= link_to 'Stats', admin_stats_path %></li>
<li><%= link_to 'Debug', admin_debug_path %></li>
- <li><%= link_to 'Authorities', admin_body_list_path %></li>
+ <li><%= link_to 'Authorities', admin_bodies_path %></li>
<li><%= link_to 'Categories', admin_categories_path %></li>
<li><%= link_to 'Requests', admin_requests_path %></li>
<li><%= link_to 'Users', admin_user_list_path %></li>
diff --git a/app/views/admin_public_body/edit.html.erb b/app/views/admin_public_body/edit.html.erb
index 11b7eec22..14f007b93 100644
--- a/app/views/admin_public_body/edit.html.erb
+++ b/app/views/admin_public_body/edit.html.erb
@@ -14,7 +14,7 @@
<div class="span8">
<div class="well">
<%= link_to 'Show', admin_body_show_path(@public_body), :class => "btn" %>
- <%= link_to 'List all', admin_body_list_path, :class => "btn" %>
+ <%= link_to 'List all', admin_bodies_path, :class => "btn" %>
</div>
</div>
</div>
diff --git a/app/views/admin_public_body/list.html.erb b/app/views/admin_public_body/index.html.erb
index 3d7d9c4cd..64d2deb42 100644
--- a/app/views/admin_public_body/list.html.erb
+++ b/app/views/admin_public_body/index.html.erb
@@ -19,7 +19,7 @@
<%= text_field_tag 'query', params[:query], { :size => 30, :class => "input-large search-query" } %>
<%= submit_tag "Search", :class => "btn" %>
<% if !@query.nil? %>
- <%= link_to 'Show all', admin_body_list_path, :class => "btn" %>
+ <%= link_to 'Show all', admin_bodies_path, :class => "btn" %>
<% end %><br>
(substring search in names and emails; exact match of tags)
<% end %>
diff --git a/app/views/admin_public_body/new.html.erb b/app/views/admin_public_body/new.html.erb
index 24b27d7af..eeb256b67 100644
--- a/app/views/admin_public_body/new.html.erb
+++ b/app/views/admin_public_body/new.html.erb
@@ -14,7 +14,7 @@
<% end %>
<div class="row">
<div class="span8 well">
- <%= link_to 'List all', admin_body_list_path, :class => "btn" %>
+ <%= link_to 'List all', admin_bodies_path, :class => "btn" %>
</div>
</div>
</div>
diff --git a/config/routes.rb b/config/routes.rb
index e3e7090d0..9c990bc3f 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -169,9 +169,13 @@ Alaveteli::Application.routes.draw do
####
#### AdminPublicBody controller
+ scope '/admin', :as => 'admin' do
+ resources :bodies,
+ :except => [:new, :show, :create, :update, :edit, :destroy],
+ :controller => 'admin_public_body' do
+ end
+ end
match '/admin/missing_scheme' => 'admin_public_body#missing_scheme', :as => :admin_body_missing
- match '/admin/body' => 'admin_public_body#index', :as => :admin_body_index
- match '/admin/body/list' => 'admin_public_body#list', :as => :admin_body_list
match '/admin/body/show/:id' => 'admin_public_body#show', :as => :admin_body_show
match '/admin/body/new' => 'admin_public_body#new', :as => :admin_body_new
match '/admin/body/edit/:id' => 'admin_public_body#edit', :as => :admin_body_edit
diff --git a/spec/controllers/admin_public_body_controller_spec.rb b/spec/controllers/admin_public_body_controller_spec.rb
index 095d23245..7de292303 100644
--- a/spec/controllers/admin_public_body_controller_spec.rb
+++ b/spec/controllers/admin_public_body_controller_spec.rb
@@ -272,7 +272,7 @@ describe AdminPublicBodyController, "when destroying a public body" do
it "destroys a public body" do
n = PublicBody.count
post :destroy, { :id => public_bodies(:forlorn_public_body).id }
- response.should redirect_to(:controller=>'admin_public_body', :action=>'list')
+ response.should redirect_to admin_bodies_path
PublicBody.count.should == n - 1
end
@@ -286,7 +286,7 @@ describe AdminPublicBodyController, "when assigning public body tags" do
n = PublicBody.joins(:translations).where([condition, "en"]).count
post :mass_tag_add, { :new_tag => "department", :table_name => "substring" }
request.flash[:notice].should == "Added tag to table of bodies."
- response.should redirect_to(:action=>'list')
+ response.should redirect_to admin_bodies_path
PublicBody.find_by_tag("department").count.should == n
end
end