aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/controllers/public_body_controller.rb18
-rw-r--r--app/models/public_body.rb3
-rw-r--r--app/models/public_body_tag.rb48
3 files changed, 12 insertions, 57 deletions
diff --git a/app/controllers/public_body_controller.rb b/app/controllers/public_body_controller.rb
index 5f51948ee..560206900 100644
--- a/app/controllers/public_body_controller.rb
+++ b/app/controllers/public_body_controller.rb
@@ -65,24 +65,28 @@ class PublicBodyController < ApplicationController
end
def list
+ # XXX move some of these tag SQL queries into has_tag_string.rb
@tag = params[:tag]
if @tag.nil?
@tag = "all"
conditions = []
elsif @tag == 'other'
category_list = PublicBodyCategories::CATEGORIES.map{|c| "'"+c+"'"}.join(",")
- conditions = ['(select count(*) from public_body_tags where public_body_tags.public_body_id = public_bodies.id
- and public_body_tags.name in (' + category_list + ')) = 0']
+ conditions = ['(select count(*) from has_tag_string_tags where has_tag_string_tags.model_id = public_bodies.id
+ and has_tag_string_tags.model = \'PublicBody\'
+ and has_tag_string_tags.name in (' + category_list + ')) = 0']
elsif @tag.size == 1
@tag.upcase!
conditions = ['first_letter = ?', @tag]
elsif @tag.include?(":")
- name, value = PublicBodyTag.split_tag_into_name_value(@tag)
- conditions = ['(select count(*) from public_body_tags where public_body_tags.public_body_id = public_bodies.id
- and public_body_tags.name = ? and public_body_tags.value = ?) > 0', name, value]
+ name, value = HasTagString::HasTagStringTag.split_tag_into_name_value(@tag)
+ conditions = ['(select count(*) from has_tag_string_tags where has_tag_string_tags.model_id = public_bodies.id
+ and has_tag_string_tags.model = \'PublicBody\'
+ and has_tag_string_tags.name = ? and has_tag_string_tags.value = ?) > 0', name, value]
else
- conditions = ['(select count(*) from public_body_tags where public_body_tags.public_body_id = public_bodies.id
- and public_body_tags.name = ?) > 0', @tag]
+ conditions = ['(select count(*) from has_tag_string_tags where has_tag_string_tags.model_id = public_bodies.id
+ and has_tag_string_tags.model = \'PublicBody\'
+ and has_tag_string_tags.name = ?) > 0', @tag]
end
@public_bodies = PublicBody.paginate(
:order => "public_bodies.name", :page => params[:page], :per_page => 1000, # fit all councils on one page
diff --git a/app/models/public_body.rb b/app/models/public_body.rb
index 491ffe989..1bd9dcc94 100644
--- a/app/models/public_body.rb
+++ b/app/models/public_body.rb
@@ -42,7 +42,6 @@ class PublicBody < ActiveRecord::Base
has_many :info_requests, :order => 'created_at desc'
has_many :track_things, :order => 'created_at desc'
- has_many :public_body_tags
has_tag_string
# like find_by_url_name but also search historic url_name if none found
@@ -190,7 +189,7 @@ class PublicBody < ActiveRecord::Base
def type_of_authority(html = false)
types = []
first = true
- for tag in self.public_body_tags
+ for tag in self.tags
if PublicBodyCategories::CATEGORIES_BY_TAG.include?(tag.name)
desc = PublicBodyCategories::CATEGORY_SINGULAR_BY_TAG[tag.name]
if first
diff --git a/app/models/public_body_tag.rb b/app/models/public_body_tag.rb
deleted file mode 100644
index e24ace7d7..000000000
--- a/app/models/public_body_tag.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-# == Schema Information
-# Schema version: 92
-#
-# Table name: public_body_tags
-#
-# id :integer not null, primary key
-# public_body_id :integer not null
-# name :text not null
-# created_at :datetime not null
-# value :text
-#
-
-# models/public_body_tag.rb:
-# Categories for public bodies.
-#
-# Copyright (c) 2008 UK Citizens Online Democracy. All rights reserved.
-# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
-#
-# $Id: public_body_tag.rb,v 1.29 2009-09-17 21:10:05 francis Exp $
-
-class PublicBodyTag < ActiveRecord::Base
- strip_attributes!
-
- validates_presence_of :public_body
- validates_presence_of :name
-
- belongs_to :public_body
-
- def name_and_value
- ret = self.name
- if !self.value.nil?
- ret += ":" + self.value
- end
- return ret
- end
-
- def PublicBodyTag.split_tag_into_name_value(tag)
- sections = tag.split(/:/)
- name = sections[0]
- if sections[1]
- value = sections[1,sections.size].join(":")
- else
- value = nil
- end
- return name, value
- end
-end
-