Browse Source

Makes 'This week' filter work with any starting day of week (#7097).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5596 e93f8b46-1217-0410-a6f0-8f06a7374b81
tags/1.2.0
Jean-Philippe Lang 13 years ago
parent
commit
57f63d513c
2 changed files with 27 additions and 6 deletions
  1. 4
    6
      app/models/query.rb
  2. 23
    0
      test/unit/query_test.rb

+ 4
- 6
app/models/query.rb View File

@@ -623,12 +623,10 @@ class Query < ActiveRecord::Base
when "t"
sql = date_range_clause(db_table, db_field, 0, 0)
when "w"
from = l(:general_first_day_of_week) == '7' ?
# week starts on sunday
((Date.today.cwday == 7) ? Time.now.at_beginning_of_day : Time.now.at_beginning_of_week - 1.day) :
# week starts on monday (Rails default)
Time.now.at_beginning_of_week
sql = "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date(from), connection.quoted_date(from + 7.days)]
first_day_of_week = l(:general_first_day_of_week).to_i
day_of_week = Date.today.cwday
days_ago = (day_of_week >= first_day_of_week ? day_of_week - first_day_of_week : day_of_week + 7 - first_day_of_week)
sql = date_range_clause(db_table, db_field, - days_ago, - days_ago + 6)
when "~"
sql = "LOWER(#{db_table}.#{db_field}) LIKE '%#{connection.quote_string(value.first.to_s.downcase)}%'"
when "!~"

+ 23
- 0
test/unit/query_test.rb View File

@@ -191,6 +191,29 @@ class QueryTest < ActiveSupport::TestCase
result.each {|issue| assert issue.subject.downcase.include?('unable') }
end
def test_range_for_this_week_with_week_starting_on_monday
I18n.locale = :fr
assert_equal '1', I18n.t(:general_first_day_of_week)
Date.stubs(:today).returns(Date.parse('2011-04-29'))
query = Query.new(:project => Project.find(1), :name => '_')
query.add_filter('due_date', 'w', [''])
assert query.statement.include?("issues.due_date > '2011-04-24 23:59:59' AND issues.due_date <= '2011-05-01 23:59:59")
I18n.locale = :en
end
def test_range_for_this_week_with_week_starting_on_sunday
I18n.locale = :en
assert_equal '7', I18n.t(:general_first_day_of_week)
Date.stubs(:today).returns(Date.parse('2011-04-29'))
query = Query.new(:project => Project.find(1), :name => '_')
query.add_filter('due_date', 'w', [''])
assert query.statement.include?("issues.due_date > '2011-04-23 23:59:59' AND issues.due_date <= '2011-04-30 23:59:59")
end
def test_operator_does_not_contains
query = Query.new(:project => Project.find(1), :name => '_')
query.add_filter('subject', '!~', ['uNable'])

Loading…
Cancel
Save