aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/user_controller.rb5
-rw-r--r--app/helpers/link_to_helper.rb4
-rw-r--r--app/models/contact_validator.rb4
-rw-r--r--app/models/incoming_message.rb4
-rw-r--r--app/models/info_request.rb7
-rw-r--r--app/models/info_request_event.rb4
-rw-r--r--app/models/outgoing_message.rb4
-rw-r--r--app/models/post_redirect.rb4
-rw-r--r--app/models/public_body.rb4
-rw-r--r--app/models/public_body_tag.rb4
-rw-r--r--app/models/user.rb11
-rw-r--r--app/models/user_info_request_sent_alert.rb4
-rw-r--r--app/views/user/show.rhtml40
-rw-r--r--db/migrate/042_unique_user_urls.rb17
-rw-r--r--db/schema.rb4
-rw-r--r--spec/controllers/user_controller_spec.rb2
-rw-r--r--todo.txt4
17 files changed, 77 insertions, 49 deletions
diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb
index 7be9fa963..2dab3c522 100644
--- a/app/controllers/user_controller.rb
+++ b/app/controllers/user_controller.rb
@@ -4,7 +4,7 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: user_controller.rb,v 1.36 2008-03-12 13:01:04 francis Exp $
+# $Id: user_controller.rb,v 1.37 2008-03-12 16:07:13 francis Exp $
class UserController < ApplicationController
# Show page about a set of users with same url name
@@ -14,7 +14,8 @@ class UserController < ApplicationController
return
end
- @display_users = User.find(:all, :conditions => [ "url_name = ? and email_confirmed", params[:url_name] ], :order => "created_at desc")
+ @display_user = User.find(:first, :conditions => [ "url_name = ? and email_confirmed", params[:url_name] ])
+ @same_name_users = User.find(:all, :conditions => [ "name = ? and email_confirmed and id <> ?", @display_user.name, @display_user.id ], :order => "created_at")
end
# Login form
diff --git a/app/helpers/link_to_helper.rb b/app/helpers/link_to_helper.rb
index e05aebc0b..a68bdd5d4 100644
--- a/app/helpers/link_to_helper.rb
+++ b/app/helpers/link_to_helper.rb
@@ -5,7 +5,7 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: link_to_helper.rb,v 1.22 2008-03-07 23:13:38 francis Exp $
+# $Id: link_to_helper.rb,v 1.23 2008-03-12 16:07:13 francis Exp $
module LinkToHelper
@@ -47,7 +47,7 @@ module LinkToHelper
# Users
def user_url(user)
- return show_user_url(:url_name => user.url_name, :only_path => true) + "#user-" + user.id.to_s
+ return show_user_url(:url_name => user.url_name, :only_path => true)
end
def user_link(user)
link_to h(user.name), user_url(user)
diff --git a/app/models/contact_validator.rb b/app/models/contact_validator.rb
index cfa345daf..4df57d064 100644
--- a/app/models/contact_validator.rb
+++ b/app/models/contact_validator.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 39
+# Schema version: 41
#
# Table name: contact_validators
#
@@ -15,7 +15,7 @@
# Copyright (c) 2008 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: contact_validator.rb,v 1.4 2008-02-27 14:01:30 francis Exp $
+# $Id: contact_validator.rb,v 1.5 2008-03-12 16:07:13 francis Exp $
class ContactValidator < ActiveRecord::BaseWithoutTable
column :name, :string
diff --git a/app/models/incoming_message.rb b/app/models/incoming_message.rb
index 661b3b659..a44cddcfe 100644
--- a/app/models/incoming_message.rb
+++ b/app/models/incoming_message.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 39
+# Schema version: 41
#
# Table name: incoming_messages
#
@@ -18,7 +18,7 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: incoming_message.rb,v 1.56 2008-03-07 23:13:38 francis Exp $
+# $Id: incoming_message.rb,v 1.57 2008-03-12 16:07:13 francis Exp $
# TODO
diff --git a/app/models/info_request.rb b/app/models/info_request.rb
index cdd9badb0..793506dfe 100644
--- a/app/models/info_request.rb
+++ b/app/models/info_request.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 39
+# Schema version: 41
#
# Table name: info_requests
#
@@ -13,6 +13,7 @@
# awaiting_description :boolean default(false), not null
# prominence :string(255) default("normal"), not null
# url_title :text not null
+# solr_up_to_date :boolean default(false), not null
#
# models/info_request.rb:
@@ -21,7 +22,7 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: info_request.rb,v 1.60 2008-03-11 08:14:29 francis Exp $
+# $Id: info_request.rb,v 1.61 2008-03-12 16:07:13 francis Exp $
require 'digest/sha1'
@@ -126,7 +127,7 @@ public
end
# For request with same name as others, tag on the request numeric id
while not InfoRequest.find_by_url_title(url_title, :conditions => ["id <> ?", self.id] ).nil?
- url_title += "-" + self.id.to_s
+ url_title += "_" + self.id.to_s
end
write_attribute(:url_title, url_title)
end
diff --git a/app/models/info_request_event.rb b/app/models/info_request_event.rb
index dd74db18d..e8d6098ee 100644
--- a/app/models/info_request_event.rb
+++ b/app/models/info_request_event.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 39
+# Schema version: 41
#
# Table name: info_request_events
#
@@ -16,7 +16,7 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: info_request_event.rb,v 1.19 2008-02-27 14:01:30 francis Exp $
+# $Id: info_request_event.rb,v 1.20 2008-03-12 16:07:13 francis Exp $
class InfoRequestEvent < ActiveRecord::Base
belongs_to :info_request
diff --git a/app/models/outgoing_message.rb b/app/models/outgoing_message.rb
index bbbf1c7bb..3e21a8af7 100644
--- a/app/models/outgoing_message.rb
+++ b/app/models/outgoing_message.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 39
+# Schema version: 41
#
# Table name: outgoing_messages
#
@@ -21,7 +21,7 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: outgoing_message.rb,v 1.33 2008-03-06 01:23:38 francis Exp $
+# $Id: outgoing_message.rb,v 1.34 2008-03-12 16:07:13 francis Exp $
class OutgoingMessage < ActiveRecord::Base
belongs_to :info_request
diff --git a/app/models/post_redirect.rb b/app/models/post_redirect.rb
index 3b79e638f..b38a63644 100644
--- a/app/models/post_redirect.rb
+++ b/app/models/post_redirect.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 39
+# Schema version: 41
#
# Table name: post_redirects
#
@@ -25,7 +25,7 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: post_redirect.rb,v 1.21 2008-02-28 16:25:30 francis Exp $
+# $Id: post_redirect.rb,v 1.22 2008-03-12 16:07:13 francis Exp $
require 'openssl' # for random bytes function
diff --git a/app/models/public_body.rb b/app/models/public_body.rb
index 82eaa5822..031c1e476 100644
--- a/app/models/public_body.rb
+++ b/app/models/public_body.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 39
+# Schema version: 41
#
# Table name: public_bodies
#
@@ -22,7 +22,7 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: public_body.rb,v 1.34 2008-03-07 23:13:38 francis Exp $
+# $Id: public_body.rb,v 1.35 2008-03-12 16:07:13 francis Exp $
require 'csv'
require 'set'
diff --git a/app/models/public_body_tag.rb b/app/models/public_body_tag.rb
index 6dc60f886..bab41660f 100644
--- a/app/models/public_body_tag.rb
+++ b/app/models/public_body_tag.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 39
+# Schema version: 41
#
# Table name: public_body_tags
#
@@ -15,7 +15,7 @@
# 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.2 2008-02-27 14:01:30 francis Exp $
+# $Id: public_body_tag.rb,v 1.3 2008-03-12 16:07:13 francis Exp $
class PublicBodyTag < ActiveRecord::Base
validates_presence_of :public_body
diff --git a/app/models/user.rb b/app/models/user.rb
index 547ae4225..14a1d63e3 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 39
+# Schema version: 41
#
# Table name: users
#
@@ -20,7 +20,7 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: user.rb,v 1.34 2008-03-07 23:13:38 francis Exp $
+# $Id: user.rb,v 1.35 2008-03-12 16:07:13 francis Exp $
require 'digest/sha1'
@@ -85,6 +85,13 @@ class User < ActiveRecord::Base
end
def update_url_name
url_name = MySociety::Format.simplify_url_part(self.name)
+ if url_name.size > 32
+ url_name = url_name[0..31]
+ end
+ # For request with same name as others, tag on the request numeric id
+ while not User.find_by_url_name(url_name, :conditions => ["id <> ?", self.id] ).nil?
+ url_name += "_" + self.id.to_s
+ end
write_attribute(:url_name, url_name)
end
diff --git a/app/models/user_info_request_sent_alert.rb b/app/models/user_info_request_sent_alert.rb
index a739e3f11..1e629fd58 100644
--- a/app/models/user_info_request_sent_alert.rb
+++ b/app/models/user_info_request_sent_alert.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 39
+# Schema version: 41
#
# Table name: user_info_request_sent_alerts
#
@@ -16,7 +16,7 @@
# Copyright (c) 2008 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: user_info_request_sent_alert.rb,v 1.3 2008-02-27 14:01:30 francis Exp $
+# $Id: user_info_request_sent_alert.rb,v 1.4 2008-03-12 16:07:13 francis Exp $
class UserInfoRequestSentAlert < ActiveRecord::Base
belongs_to :user
diff --git a/app/views/user/show.rhtml b/app/views/user/show.rhtml
index 66c707433..21356f8f8 100644
--- a/app/views/user/show.rhtml
+++ b/app/views/user/show.rhtml
@@ -1,27 +1,29 @@
-<% @title = h(@display_users[0].name) %>
+<% @title = h(@display_user.name) %>
-<% if (@display_users.size > 1) %>
- <p>There are <strong><%=@display_users.size%> people</strong> who've used this site called <%=h(@display_users[0].name)%>.
+<% if (@same_name_users.size >= 1) %>
+ <p>This is <strong>one person</strong> who uses this site and has this name, you may
+ mean a different one:
+ <% for @same_name_user in @same_name_users %>
+ <%= user_link(@same_name_user) %>
+ <% end %>
<% end%>
-<% for display_user in @display_users %>
- <div class="single_user" id="user-<%=display_user.id.to_s%>">
- <h1><%=@title%></h1>
- <p class="subtitle">Joined on <%= simple_date(display_user.created_at) %></p>
+<div class="single_user" id="user-<%=@display_user.id.to_s%>">
+ <h1><%=@title%></h1>
+ <p class="subtitle">Joined on <%= simple_date(@display_user.created_at) %></p>
- <p><%= link_to "Send message to " + h(display_user.name), contact_user_url(:id => display_user.id) %></p>
+ <p><%= link_to "Send message to " + h(@display_user.name), contact_user_url(:id => @display_user.id) %></p>
- <% if display_user.info_requests.empty? %>
- <p><%= display_user == @user ? 'You have' : 'This person has' %>
- made no Freedom of Information requests using this site.</p>
+ <% if @display_user.info_requests.empty? %>
+ <p><%= @display_user == @user ? 'You have' : 'This person has' %>
+ made no Freedom of Information requests using this site.</p>
- <% else %>
- <h2>
- <%=pluralize(display_user.info_requests.size, "Freedom of Information request") %>
- </h2>
+ <% else %>
+ <h2>
+ <%=pluralize(@display_user.info_requests.size, "Freedom of Information request") %>
+ </h2>
- <%= render :partial => 'request/request_listing', :locals => { :info_requests => display_user.info_requests.sort { |a,b| b.created_at <=> a.created_at } } %>
- <% end %>
- </div>
-<% end %>
+ <%= render :partial => 'request/request_listing', :locals => { :info_requests => @display_user.info_requests.sort { |a,b| b.created_at <=> a.created_at } } %>
+ <% end %>
+</div>
diff --git a/db/migrate/042_unique_user_urls.rb b/db/migrate/042_unique_user_urls.rb
new file mode 100644
index 000000000..1350d1580
--- /dev/null
+++ b/db/migrate/042_unique_user_urls.rb
@@ -0,0 +1,17 @@
+class UniqueUserUrls < ActiveRecord::Migration
+ def self.up
+ # do last registered ones first, so the last ones get rubbish URLs
+ User.find(:all, :order => "id desc").each do |user|
+ user.update_url_name
+ user.save!
+ end
+ remove_index :users, :url_name
+ add_index :users, :url_name, :unique => true
+ end
+
+ def self.down
+ remove_index :users, :url_name
+ add_index :users, :url_name, :unique => false
+ end
+
+end
diff --git a/db/schema.rb b/db/schema.rb
index 49eec890b..00c77b946 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -9,7 +9,7 @@
#
# It's strongly recommended to check this file into your version control system.
-ActiveRecord::Schema.define(:version => 41) do
+ActiveRecord::Schema.define(:version => 42) do
create_table "incoming_messages", :force => true do |t|
t.integer "info_request_id", :null => false
@@ -134,6 +134,6 @@ ActiveRecord::Schema.define(:version => 41) do
t.text "url_name", :null => false
end
- add_index "users", ["url_name"], :name => "index_users_on_url_name"
+ add_index "users", ["url_name"], :name => "index_users_on_url_name", :unique => true
end
diff --git a/spec/controllers/user_controller_spec.rb b/spec/controllers/user_controller_spec.rb
index 66f883ef3..26d02615f 100644
--- a/spec/controllers/user_controller_spec.rb
+++ b/spec/controllers/user_controller_spec.rb
@@ -21,7 +21,7 @@ describe UserController, "when showing a user" do
it "should assign the user" do
get :show, :url_name => "bob_smith"
- assigns[:display_users].should == [ users(:bob_smith_user) ]
+ assigns[:display_user].should == users(:bob_smith_user)
end
# Error handling not quite good enough for this yet
diff --git a/todo.txt b/todo.txt
index 73e95bb28..584bdb9d2 100644
--- a/todo.txt
+++ b/todo.txt
@@ -1,6 +1,6 @@
Contact:
-Fix user pages properly
-Privacy policy
+ Privacy policy on new account page
+ Check messages look nice