##// END OF EJS Templates
Makes 'This week' filter work with any starting day of week (#7097)....
Jean-Philippe Lang -
r5476:57f63d513c2b
parent child
Show More
@@ -623,12 +623,10 class Query < ActiveRecord::Base
623 when "t"
623 when "t"
624 sql = date_range_clause(db_table, db_field, 0, 0)
624 sql = date_range_clause(db_table, db_field, 0, 0)
625 when "w"
625 when "w"
626 from = l(:general_first_day_of_week) == '7' ?
626 first_day_of_week = l(:general_first_day_of_week).to_i
627 # week starts on sunday
627 day_of_week = Date.today.cwday
628 ((Date.today.cwday == 7) ? Time.now.at_beginning_of_day : Time.now.at_beginning_of_week - 1.day) :
628 days_ago = (day_of_week >= first_day_of_week ? day_of_week - first_day_of_week : day_of_week + 7 - first_day_of_week)
629 # week starts on monday (Rails default)
629 sql = date_range_clause(db_table, db_field, - days_ago, - days_ago + 6)
630 Time.now.at_beginning_of_week
631 sql = "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date(from), connection.quoted_date(from + 7.days)]
632 when "~"
630 when "~"
633 sql = "LOWER(#{db_table}.#{db_field}) LIKE '%#{connection.quote_string(value.first.to_s.downcase)}%'"
631 sql = "LOWER(#{db_table}.#{db_field}) LIKE '%#{connection.quote_string(value.first.to_s.downcase)}%'"
634 when "!~"
632 when "!~"
@@ -191,6 +191,29 class QueryTest < ActiveSupport::TestCase
191 result.each {|issue| assert issue.subject.downcase.include?('unable') }
191 result.each {|issue| assert issue.subject.downcase.include?('unable') }
192 end
192 end
193
193
194 def test_range_for_this_week_with_week_starting_on_monday
195 I18n.locale = :fr
196 assert_equal '1', I18n.t(:general_first_day_of_week)
197
198 Date.stubs(:today).returns(Date.parse('2011-04-29'))
199
200 query = Query.new(:project => Project.find(1), :name => '_')
201 query.add_filter('due_date', 'w', [''])
202 assert query.statement.include?("issues.due_date > '2011-04-24 23:59:59' AND issues.due_date <= '2011-05-01 23:59:59")
203 I18n.locale = :en
204 end
205
206 def test_range_for_this_week_with_week_starting_on_sunday
207 I18n.locale = :en
208 assert_equal '7', I18n.t(:general_first_day_of_week)
209
210 Date.stubs(:today).returns(Date.parse('2011-04-29'))
211
212 query = Query.new(:project => Project.find(1), :name => '_')
213 query.add_filter('due_date', 'w', [''])
214 assert query.statement.include?("issues.due_date > '2011-04-23 23:59:59' AND issues.due_date <= '2011-04-30 23:59:59")
215 end
216
194 def test_operator_does_not_contains
217 def test_operator_does_not_contains
195 query = Query.new(:project => Project.find(1), :name => '_')
218 query = Query.new(:project => Project.find(1), :name => '_')
196 query.add_filter('subject', '!~', ['uNable'])
219 query.add_filter('subject', '!~', ['uNable'])
General Comments 0
You need to be logged in to leave comments. Login now