diff options
author | francis <francis> | 2008-09-13 22:06:58 +0000 |
---|---|---|
committer | francis <francis> | 2008-09-13 22:06:58 +0000 |
commit | fbac01ec333aaf20e6ee1e256bd1051f958a6f1b (patch) | |
tree | c036e34b811da6a8bbafe6fd17ef08be09238503 | |
parent | a327ea1d0b6f6d74ceab7a90bf022d6c95735fe7 (diff) |
Sort by time, not just by date when sorting by created_at
-rw-r--r-- | app/models/info_request_event.rb | 16 | ||||
-rw-r--r-- | app/models/public_body.rb | 11 | ||||
-rw-r--r-- | app/models/user.rb | 11 |
3 files changed, 29 insertions, 9 deletions
diff --git a/app/models/info_request_event.rb b/app/models/info_request_event.rb index 109a71b84..641b744dd 100644 --- a/app/models/info_request_event.rb +++ b/app/models/info_request_event.rb @@ -21,7 +21,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.57 2008-09-13 18:01:27 francis Exp $ +# $Id: info_request_event.rb,v 1.58 2008-09-13 22:06:58 francis Exp $ class InfoRequestEvent < ActiveRecord::Base belongs_to :info_request @@ -63,10 +63,12 @@ class InfoRequestEvent < ActiveRecord::Base # Full text search indexing acts_as_xapian :texts => [ :search_text_main, :title ], - :values => [ [ :created_at, 0, "created_at", :date ], - [ :described_at_numeric, 1, "described_at", :number ], # XXX using :number for lack of :datetime support in Xapian values - [ :request, 2, "request_collapse", :string ], - [ :request_title_collapse, 3, "request_title_collapse", :string ] + :values => [ + [ :created_at, 0, "range_search", :date ], # for QueryParser range searches e.g. 01/01/2008..14/01/2008 + [ :created_at_numeric, 1, "created_at", :number ], # for sorting + [ :described_at_numeric, 2, "described_at", :number ], # XXX using :number for lack of :datetime support in Xapian values + [ :request, 3, "request_collapse", :string ], + [ :request_title_collapse, 4, "request_title_collapse", :string ] ], :terms => [ [ :calculated_state, 'S', "status" ], [ :requested_by, 'B', "requested_by" ], @@ -113,6 +115,10 @@ class InfoRequestEvent < ActiveRecord::Base # format it here as no datetime support in Xapian's value ranges return self.described_at.strftime("%Y%m%d%H%M%S") end + def created_at_numeric + # format it here as no datetime support in Xapian's value ranges + return self.created_at.strftime("%Y%m%d%H%M%S") + end def search_text_main text = '' if self.event_type == 'sent' diff --git a/app/models/public_body.rb b/app/models/public_body.rb index d5a059e63..c1ec8df0e 100644 --- a/app/models/public_body.rb +++ b/app/models/public_body.rb @@ -23,7 +23,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.105 2008-09-13 15:35:37 francis Exp $ +# $Id: public_body.rb,v 1.106 2008-09-13 22:06:58 francis Exp $ require 'csv' require 'set' @@ -157,8 +157,15 @@ class PublicBody < ActiveRecord::Base end acts_as_xapian :texts => [ :name, :short_name ], - :values => [ [ :created_at, 0, "created_at", :date ] ], + :values => [ + [ :created_at, 0, "range_search", :date ], # for QueryParser range searches e.g. 01/01/2008..14/01/2008 + [ :created_at_numeric, 1, "created_at", :number ] # for sorting + ], :terms => [ [ :variety, 'V', "variety" ] ] + def created_at_numeric + # format it here as no datetime support in Xapian's value ranges + return self.created_at.strftime("%Y%m%d%H%M%S") + end def variety "authority" end diff --git a/app/models/user.rb b/app/models/user.rb index 579ab7265..c14913d73 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -22,7 +22,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.67 2008-09-11 10:37:37 francis Exp $ +# $Id: user.rb,v 1.68 2008-09-13 22:06:58 francis Exp $ require 'digest/sha1' @@ -49,8 +49,15 @@ class User < ActiveRecord::Base ] acts_as_xapian :texts => [ :name ], - :values => [ [ :created_at, 0, "created_at", :date ] ], + :values => [ + [ :created_at, 0, "range_search", :date ], # for QueryParser range searches e.g. 01/01/2008..14/01/2008 + [ :created_at_numeric, 1, "created_at", :number ] # for sorting + ], :terms => [ [ :variety, 'V', "variety" ] ] + def created_at_numeric + # format it here as no datetime support in Xapian's value ranges + return self.created_at.strftime("%Y%m%d%H%M%S") + end def variety "user" end |