will_filter 3.0.3 → 3.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/app/controllers/will_filter/filter_controller.rb +6 -0
- data/app/models/will_filter/filter.rb +36 -4
- data/app/views/will_filter/filter/_conditions.html.erb +4 -1
- data/lib/core_ext/active_record/base.rb +1 -1
- data/lib/generators/will_filter/templates/config.yml +28 -0
- data/lib/will_filter/config.rb +4 -0
- metadata +39 -119
- data/.loadpath +0 -12
- data/.project +0 -18
- data/CHANGELOG.rdoc +0 -1
- data/Gemfile +0 -6
- data/Gemfile.lock +0 -73
- data/LICENSE +0 -18
- data/README.rdoc +0 -74
- data/Rakefile +0 -54
- data/VERSION +0 -1
- data/config.ru +0 -4
- data/db/development.sqlite3 +0 -0
- data/db/migrate/20090730070119_create_will_filter_tables.rb +0 -19
- data/db/seeds.rb +0 -7
- data/db/test.sqlite3 +0 -0
- data/doc/README_FOR_APP +0 -2
- data/examples/README +0 -1
- data/lib/tasks/.gitkeep +0 -0
- data/pkg/will_filter-0.1.0.gem +0 -0
- data/pkg/will_filter-0.1.1.gem +0 -0
- data/script/rails +0 -6
- data/test/functional/models/will_filter/filter_test.rb +0 -297
- data/test/performance/browsing_test.rb +0 -9
- data/test/test_helper.rb +0 -71
- data/uninstall.rb +0 -24
- data/will_filter.gemspec +0 -7
@@ -64,6 +64,8 @@ module WillFilter
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def save_filter
|
67
|
+
raise WillFilter::FilterException.new("Saving functions are disabled") unless WillFilter::Config.saving_enabled?
|
68
|
+
|
67
69
|
params.delete(:wf_id)
|
68
70
|
|
69
71
|
wf_filter = WillFilter::Filter.deserialize_from_params(params)
|
@@ -79,6 +81,8 @@ module WillFilter
|
|
79
81
|
end
|
80
82
|
|
81
83
|
def update_filter
|
84
|
+
raise WillFilter::FilterException.new("Saving functions are disabled") unless WillFilter::Config.saving_enabled?
|
85
|
+
|
82
86
|
wf_filter = WillFilter::Filter.find_by_id(params.delete(:wf_id))
|
83
87
|
wf_filter.deserialize_from_params(params)
|
84
88
|
wf_filter.validate!
|
@@ -93,6 +97,8 @@ module WillFilter
|
|
93
97
|
end
|
94
98
|
|
95
99
|
def delete_filter
|
100
|
+
raise WillFilter::FilterException.new("Saving functions are disabled") unless WillFilter::Config.saving_enabled?
|
101
|
+
|
96
102
|
wf_filter = WillFilter::Filter.find_by_id(params[:wf_id])
|
97
103
|
wf_filter.destroy if wf_filter
|
98
104
|
|
@@ -31,8 +31,13 @@ module WillFilter
|
|
31
31
|
#############################################################################
|
32
32
|
# Basics
|
33
33
|
#############################################################################
|
34
|
-
def initialize(model_class)
|
34
|
+
def initialize(model_class = nil)
|
35
35
|
super()
|
36
|
+
|
37
|
+
if WillFilter::Config.require_filter_extensions? and self.class.name == "WillFilter::Filter"
|
38
|
+
raise WillFilter::FilterException.new("Your configuration requires you to subclass the filter. Default filter cannot be created.")
|
39
|
+
end
|
40
|
+
|
36
41
|
self.model_class_name = model_class.to_s
|
37
42
|
end
|
38
43
|
|
@@ -89,8 +94,16 @@ module WillFilter
|
|
89
94
|
[]
|
90
95
|
end
|
91
96
|
|
97
|
+
# For extra security, this method must be overloaded by the extending class.
|
92
98
|
def model_class
|
93
|
-
|
99
|
+
if WillFilter::Config.require_filter_extensions?
|
100
|
+
raise WillFilter::FilterException.new("model_class method must be overloaded in the extending class.")
|
101
|
+
end
|
102
|
+
|
103
|
+
if model_class_name.blank?
|
104
|
+
raise WillFilter::FilterException.new("model_class_name was not specified.")
|
105
|
+
end
|
106
|
+
|
94
107
|
@model_class ||= model_class_name.constantize
|
95
108
|
end
|
96
109
|
|
@@ -188,6 +201,8 @@ module WillFilter
|
|
188
201
|
|
189
202
|
def order
|
190
203
|
@order ||= default_order
|
204
|
+
@order = default_order unless contains_column?(@order.to_sym)
|
205
|
+
@order
|
191
206
|
end
|
192
207
|
|
193
208
|
def default_order_type
|
@@ -196,6 +211,8 @@ module WillFilter
|
|
196
211
|
|
197
212
|
def order_type
|
198
213
|
@order_type ||= default_order_type
|
214
|
+
@order_type = default_order_type unless ['asc', 'desc'].include?(@order_type.to_s)
|
215
|
+
@order_type
|
199
216
|
end
|
200
217
|
|
201
218
|
def order_clause
|
@@ -380,15 +397,30 @@ module WillFilter
|
|
380
397
|
def self.deserialize_from_params(params)
|
381
398
|
params = HashWithIndifferentAccess.new(params) unless params.is_a?(HashWithIndifferentAccess)
|
382
399
|
params[:wf_type] = self.name unless params[:wf_type]
|
383
|
-
params[:wf_type].constantize
|
400
|
+
filter_class = params[:wf_type].constantize
|
401
|
+
filter_instance = filter_class.new
|
402
|
+
|
403
|
+
unless filter_instance.kind_of?(WillFilter::Filter)
|
404
|
+
raise WillFilter::FilterException.new("Invalid filter class. Filter classes must extand WillFilter::Filter.")
|
405
|
+
end
|
406
|
+
|
407
|
+
if WillFilter::Config.require_filter_extensions?
|
408
|
+
filter_instance.deserialize_from_params(params)
|
409
|
+
else
|
410
|
+
filter_class.new(params[:wf_model]).deserialize_from_params(params)
|
411
|
+
end
|
384
412
|
end
|
385
413
|
|
386
414
|
def deserialize_from_params(params)
|
387
415
|
params = HashWithIndifferentAccess.new(params) unless params.is_a?(HashWithIndifferentAccess)
|
416
|
+
|
417
|
+
# Validate sanity of user provided parameters
|
418
|
+
params.delete(:wf_order_type) unless [ 'asc', 'desc' ].include? params[:wf_order_type]
|
419
|
+
params.delete(:wf_order) unless self.class.columns.map(&:name).include? params[:wf_order]
|
420
|
+
|
388
421
|
@conditions = []
|
389
422
|
@match = params[:wf_match] || :all
|
390
423
|
@key = params[:wf_key] || self.id.to_s
|
391
|
-
self.model_class_name = params[:wf_model] if params[:wf_model]
|
392
424
|
|
393
425
|
@per_page = params[:wf_per_page] || default_per_page
|
394
426
|
@page = params[:page] || 1
|
@@ -3,9 +3,12 @@
|
|
3
3
|
<%= hidden_field_tag(:wf_dirty, "false") %>
|
4
4
|
<%= hidden_field_tag(:wf_submitted, "false") %>
|
5
5
|
<%= hidden_field_tag(:wf_name, wf_filter.name) %>
|
6
|
-
<%= hidden_field_tag(:wf_model, wf_filter.model_class_name) %>
|
7
6
|
<%= hidden_field_tag(:wf_export_format, "") %>
|
8
7
|
<%= hidden_field_tag(:wf_export_fields, "") %>
|
8
|
+
|
9
|
+
<% unless WillFilter::Config.require_filter_extensions? %>
|
10
|
+
<%= hidden_field_tag(:wf_model, wf_filter.model_class_name) %>
|
11
|
+
<% end %>
|
9
12
|
|
10
13
|
<div class="wf_header">
|
11
14
|
<% if wf_filter.show_save_options? %>
|
@@ -10,6 +10,34 @@
|
|
10
10
|
#############################################################################
|
11
11
|
|
12
12
|
defaults: &defaults
|
13
|
+
|
14
|
+
###########################################################################
|
15
|
+
#
|
16
|
+
# require_filter_extension makes the filter into an abstract class
|
17
|
+
# and will require you to subclass it in order for the filter to be
|
18
|
+
# serializeable. The following will no longer work:
|
19
|
+
#
|
20
|
+
# @users = User.filter(:params => params)
|
21
|
+
#
|
22
|
+
# Use your own filter class instead:
|
23
|
+
#
|
24
|
+
# @users = User.filter(:params => params, :filter => UserFilter)
|
25
|
+
#
|
26
|
+
# In the subclass you must provide the model name to be filtered by overloading:
|
27
|
+
#
|
28
|
+
# def model_class
|
29
|
+
# User
|
30
|
+
# end
|
31
|
+
#
|
32
|
+
###########################################################################
|
33
|
+
|
34
|
+
require_filter_extensions: false
|
35
|
+
|
36
|
+
###########################################################################
|
37
|
+
# If you would like to see some JavaScript effects
|
38
|
+
# provide your own effects class and implement required methods
|
39
|
+
###########################################################################
|
40
|
+
|
13
41
|
effects_options:
|
14
42
|
enabled: false
|
15
43
|
script_path: "/will_filter/javascripts/will_filter_prototype_effects.js"
|
data/lib/will_filter/config.rb
CHANGED
metadata
CHANGED
@@ -1,75 +1,22 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: will_filter
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 3.0.4
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 3
|
8
|
-
- 0
|
9
|
-
- 3
|
10
|
-
version: 3.0.3
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Michael Berkovich
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
- !ruby/object:Gem::Dependency
|
22
|
-
prerelease: false
|
23
|
-
type: :runtime
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 7
|
30
|
-
segments:
|
31
|
-
- 3
|
32
|
-
- 0
|
33
|
-
- 0
|
34
|
-
version: 3.0.0
|
35
|
-
name: rails
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
prerelease: false
|
39
|
-
type: :runtime
|
40
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
hash: 1923831917
|
46
|
-
segments:
|
47
|
-
- 3
|
48
|
-
- 0
|
49
|
-
- pre
|
50
|
-
- 2
|
51
|
-
version: 3.0.pre2
|
52
|
-
name: will_paginate
|
53
|
-
version_requirements: *id002
|
54
|
-
description: Rails engine for filtering ActiveRecord model objects.
|
55
|
-
email: theiceberk@gmail.com
|
12
|
+
date: 2012-04-06 00:00:00.000000000Z
|
13
|
+
dependencies: []
|
14
|
+
description:
|
15
|
+
email:
|
56
16
|
executables: []
|
57
|
-
|
58
17
|
extensions: []
|
59
|
-
|
60
|
-
|
61
|
-
- LICENSE
|
62
|
-
- README.rdoc
|
63
|
-
files:
|
64
|
-
- .loadpath
|
65
|
-
- .project
|
66
|
-
- CHANGELOG.rdoc
|
67
|
-
- Gemfile
|
68
|
-
- Gemfile.lock
|
69
|
-
- LICENSE
|
70
|
-
- README.rdoc
|
71
|
-
- Rakefile
|
72
|
-
- VERSION
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
73
20
|
- app/controllers/application_controller.rb
|
74
21
|
- app/controllers/will_filter/calendar_controller.rb
|
75
22
|
- app/controllers/will_filter/exporter_controller.rb
|
@@ -99,7 +46,6 @@ files:
|
|
99
46
|
- app/views/will_filter/filter/containers/_numeric_range.html.erb
|
100
47
|
- app/views/will_filter/filter/containers/_text.html.erb
|
101
48
|
- app/views/will_filter/filter/index.html.erb
|
102
|
-
- config.ru
|
103
49
|
- config/application.rb
|
104
50
|
- config/boot.rb
|
105
51
|
- config/database.yml
|
@@ -109,12 +55,22 @@ files:
|
|
109
55
|
- config/environments/test.rb
|
110
56
|
- config/routes.rb
|
111
57
|
- config/will_filter/config.yml
|
112
|
-
-
|
113
|
-
-
|
114
|
-
-
|
115
|
-
-
|
116
|
-
-
|
117
|
-
-
|
58
|
+
- public/404.html
|
59
|
+
- public/422.html
|
60
|
+
- public/500.html
|
61
|
+
- public/favicon.ico
|
62
|
+
- public/robots.txt
|
63
|
+
- public/will_filter/images/buttons.png
|
64
|
+
- public/will_filter/images/calendar.png
|
65
|
+
- public/will_filter/images/clock.png
|
66
|
+
- public/will_filter/images/close.gif
|
67
|
+
- public/will_filter/images/results_table_th_active.gif
|
68
|
+
- public/will_filter/images/sort_arrow_all.gif
|
69
|
+
- public/will_filter/images/sort_bg.gif
|
70
|
+
- public/will_filter/images/spinner.gif
|
71
|
+
- public/will_filter/javascripts/will_filter.js
|
72
|
+
- public/will_filter/javascripts/will_filter_prototype_effects.js
|
73
|
+
- public/will_filter/stylesheets/will_filter.css
|
118
74
|
- lib/application_helper.rb
|
119
75
|
- lib/core_ext/active_record/base.rb
|
120
76
|
- lib/core_ext/array.rb
|
@@ -122,9 +78,7 @@ files:
|
|
122
78
|
- lib/generators/will_filter/templates/config.yml
|
123
79
|
- lib/generators/will_filter/templates/create_will_filter_tables.rb
|
124
80
|
- lib/generators/will_filter/will_filter_generator.rb
|
125
|
-
- lib/tasks/.gitkeep
|
126
81
|
- lib/tasks/will_filter_tasks.rake
|
127
|
-
- lib/will_filter.rb
|
128
82
|
- lib/will_filter/calendar.rb
|
129
83
|
- lib/will_filter/common_methods.rb
|
130
84
|
- lib/will_filter/config.rb
|
@@ -146,63 +100,29 @@ files:
|
|
146
100
|
- lib/will_filter/filter_condition.rb
|
147
101
|
- lib/will_filter/filter_container.rb
|
148
102
|
- lib/will_filter/filter_exception.rb
|
149
|
-
-
|
150
|
-
- pkg/will_filter-0.1.1.gem
|
151
|
-
- public/404.html
|
152
|
-
- public/422.html
|
153
|
-
- public/500.html
|
154
|
-
- public/favicon.ico
|
155
|
-
- public/robots.txt
|
156
|
-
- public/will_filter/images/buttons.png
|
157
|
-
- public/will_filter/images/calendar.png
|
158
|
-
- public/will_filter/images/clock.png
|
159
|
-
- public/will_filter/images/close.gif
|
160
|
-
- public/will_filter/images/results_table_th_active.gif
|
161
|
-
- public/will_filter/images/sort_arrow_all.gif
|
162
|
-
- public/will_filter/images/sort_bg.gif
|
163
|
-
- public/will_filter/images/spinner.gif
|
164
|
-
- public/will_filter/javascripts/will_filter.js
|
165
|
-
- public/will_filter/javascripts/will_filter_prototype_effects.js
|
166
|
-
- public/will_filter/stylesheets/will_filter.css
|
167
|
-
- script/rails
|
168
|
-
- test/functional/models/will_filter/filter_test.rb
|
169
|
-
- test/performance/browsing_test.rb
|
170
|
-
- test/test_helper.rb
|
171
|
-
- uninstall.rb
|
172
|
-
- will_filter.gemspec
|
173
|
-
has_rdoc: true
|
103
|
+
- lib/will_filter.rb
|
174
104
|
homepage: http://github.com/berk/will_filter
|
175
105
|
licenses: []
|
176
|
-
|
177
106
|
post_install_message:
|
178
107
|
rdoc_options: []
|
179
|
-
|
180
|
-
require_paths:
|
108
|
+
require_paths:
|
181
109
|
- lib
|
182
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
183
111
|
none: false
|
184
|
-
requirements:
|
185
|
-
- -
|
186
|
-
- !ruby/object:Gem::Version
|
187
|
-
|
188
|
-
|
189
|
-
- 0
|
190
|
-
version: "0"
|
191
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - ! '>='
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0'
|
116
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
192
117
|
none: false
|
193
|
-
requirements:
|
194
|
-
- -
|
195
|
-
- !ruby/object:Gem::Version
|
196
|
-
|
197
|
-
segments:
|
198
|
-
- 0
|
199
|
-
version: "0"
|
118
|
+
requirements:
|
119
|
+
- - ! '>='
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
200
122
|
requirements: []
|
201
|
-
|
202
123
|
rubyforge_project:
|
203
|
-
rubygems_version: 1.
|
124
|
+
rubygems_version: 1.8.11
|
204
125
|
signing_key:
|
205
126
|
specification_version: 3
|
206
127
|
summary: Rails engine for filtering ActiveRecord model objects.
|
207
128
|
test_files: []
|
208
|
-
|
data/.loadpath
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<loadpath>
|
3
|
-
<pathentry path="" type="src"/>
|
4
|
-
<pathentry path="org.rubypeople.rdt.launching.RUBY_CONTAINER" type="con"/>
|
5
|
-
<pathentry path="GEM_LIB/activerecord-2.3.2/lib" type="var"/>
|
6
|
-
<pathentry path="GEM_LIB/rake-0.8.4/lib" type="var"/>
|
7
|
-
<pathentry path="GEM_LIB/activeresource-2.3.2/lib" type="var"/>
|
8
|
-
<pathentry path="GEM_LIB/rails-2.3.2/lib" type="var"/>
|
9
|
-
<pathentry path="GEM_LIB/actionmailer-2.3.2/lib" type="var"/>
|
10
|
-
<pathentry path="GEM_LIB/actionpack-2.3.2/lib" type="var"/>
|
11
|
-
<pathentry path="GEM_LIB/activesupport-2.3.2/lib" type="var"/>
|
12
|
-
</loadpath>
|
data/.project
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<projectDescription>
|
3
|
-
<name>will_filter</name>
|
4
|
-
<comment></comment>
|
5
|
-
<projects>
|
6
|
-
</projects>
|
7
|
-
<buildSpec>
|
8
|
-
<buildCommand>
|
9
|
-
<name>org.rubypeople.rdt.core.rubybuilder</name>
|
10
|
-
<arguments>
|
11
|
-
</arguments>
|
12
|
-
</buildCommand>
|
13
|
-
</buildSpec>
|
14
|
-
<natures>
|
15
|
-
<nature>org.rubypeople.rdt.core.rubynature</nature>
|
16
|
-
<nature>org.radrails.rails.core.railsnature</nature>
|
17
|
-
</natures>
|
18
|
-
</projectDescription>
|
data/CHANGELOG.rdoc
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
== 0.1.0, released 2011-05-29
|
data/Gemfile
DELETED
data/Gemfile.lock
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: http://rubygems.org/
|
3
|
-
specs:
|
4
|
-
abstract (1.0.0)
|
5
|
-
actionmailer (3.0.7)
|
6
|
-
actionpack (= 3.0.7)
|
7
|
-
mail (~> 2.2.15)
|
8
|
-
actionpack (3.0.7)
|
9
|
-
activemodel (= 3.0.7)
|
10
|
-
activesupport (= 3.0.7)
|
11
|
-
builder (~> 2.1.2)
|
12
|
-
erubis (~> 2.6.6)
|
13
|
-
i18n (~> 0.5.0)
|
14
|
-
rack (~> 1.2.1)
|
15
|
-
rack-mount (~> 0.6.14)
|
16
|
-
rack-test (~> 0.5.7)
|
17
|
-
tzinfo (~> 0.3.23)
|
18
|
-
activemodel (3.0.7)
|
19
|
-
activesupport (= 3.0.7)
|
20
|
-
builder (~> 2.1.2)
|
21
|
-
i18n (~> 0.5.0)
|
22
|
-
activerecord (3.0.7)
|
23
|
-
activemodel (= 3.0.7)
|
24
|
-
activesupport (= 3.0.7)
|
25
|
-
arel (~> 2.0.2)
|
26
|
-
tzinfo (~> 0.3.23)
|
27
|
-
activeresource (3.0.7)
|
28
|
-
activemodel (= 3.0.7)
|
29
|
-
activesupport (= 3.0.7)
|
30
|
-
activesupport (3.0.7)
|
31
|
-
arel (2.0.10)
|
32
|
-
builder (2.1.2)
|
33
|
-
erubis (2.6.6)
|
34
|
-
abstract (>= 1.0.0)
|
35
|
-
i18n (0.5.0)
|
36
|
-
mail (2.2.19)
|
37
|
-
activesupport (>= 2.3.6)
|
38
|
-
i18n (>= 0.4.0)
|
39
|
-
mime-types (~> 1.16)
|
40
|
-
treetop (~> 1.4.8)
|
41
|
-
mime-types (1.16)
|
42
|
-
polyglot (0.3.1)
|
43
|
-
rack (1.2.3)
|
44
|
-
rack-mount (0.6.14)
|
45
|
-
rack (>= 1.0.0)
|
46
|
-
rack-test (0.5.7)
|
47
|
-
rack (>= 1.0)
|
48
|
-
rails (3.0.7)
|
49
|
-
actionmailer (= 3.0.7)
|
50
|
-
actionpack (= 3.0.7)
|
51
|
-
activerecord (= 3.0.7)
|
52
|
-
activeresource (= 3.0.7)
|
53
|
-
activesupport (= 3.0.7)
|
54
|
-
bundler (~> 1.0)
|
55
|
-
railties (= 3.0.7)
|
56
|
-
railties (3.0.7)
|
57
|
-
actionpack (= 3.0.7)
|
58
|
-
activesupport (= 3.0.7)
|
59
|
-
rake (>= 0.8.7)
|
60
|
-
thor (~> 0.14.4)
|
61
|
-
rake (0.9.1)
|
62
|
-
thor (0.14.6)
|
63
|
-
treetop (1.4.9)
|
64
|
-
polyglot (>= 0.3.1)
|
65
|
-
tzinfo (0.3.27)
|
66
|
-
will_paginate (3.0.pre2)
|
67
|
-
|
68
|
-
PLATFORMS
|
69
|
-
ruby
|
70
|
-
|
71
|
-
DEPENDENCIES
|
72
|
-
rails (~> 3.0.0)
|
73
|
-
will_paginate (~> 3.0.pre2)
|
data/LICENSE
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
Copyright (c) 2011 Michael Berkovich
|
2
|
-
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
4
|
-
this software and associated documentation files (the "Software"), to deal in
|
5
|
-
the Software without restriction, including without limitation the rights to
|
6
|
-
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
7
|
-
the Software, and to permit persons to whom the Software is furnished to do so,
|
8
|
-
subject to the following conditions:
|
9
|
-
|
10
|
-
The above copyright notice and this permission notice shall be included in all
|
11
|
-
copies or substantial portions of the Software.
|
12
|
-
|
13
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
15
|
-
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
16
|
-
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
17
|
-
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
18
|
-
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
= WillFilter
|
2
|
-
|
3
|
-
will_filter is a Rails engine plugin that extends the functionality of will_paginate by adding filters to your pages.
|
4
|
-
|
5
|
-
== Preamble
|
6
|
-
|
7
|
-
If you ever had to build an admin tool for your web site that displayed a list of objects that can be filtered using
|
8
|
-
various criteria, this plugin will make your life easier. Adding a filtered page can now be
|
9
|
-
a matter of adding two lines of code - one to your controller and one to your view. See examples below.
|
10
|
-
|
11
|
-
For advanced samples of how to use the filters, please download and install the following project:
|
12
|
-
|
13
|
-
http://github.com/berk/will_filter_examples
|
14
|
-
|
15
|
-
== Installation Instructions
|
16
|
-
|
17
|
-
Add the following gems to your Gemfile:
|
18
|
-
|
19
|
-
gem "will_paginate", "~> 3.0.pre2"
|
20
|
-
gem 'will_filter', "~> 3.0.0"
|
21
|
-
|
22
|
-
And run:
|
23
|
-
|
24
|
-
$ bundle install
|
25
|
-
|
26
|
-
To configure and initialize will_filter engine, run the following commands:
|
27
|
-
|
28
|
-
$ rails generate will_filter
|
29
|
-
$ rake db:migrate
|
30
|
-
|
31
|
-
== Examples
|
32
|
-
|
33
|
-
To add a filtered result-set to your controller use the following method call:
|
34
|
-
|
35
|
-
class OrderController < ApplicationController
|
36
|
-
|
37
|
-
def index
|
38
|
-
@orders = Order.filter(:params => params)
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
Note: 'Order' is a Rails ActiveRecord model
|
44
|
-
|
45
|
-
Now all you have to do is create a view for this action and add the following tag where you want the filter to be rendered:
|
46
|
-
|
47
|
-
<%= will_filter(@orders) %>
|
48
|
-
|
49
|
-
And optionally you can do (for results table):
|
50
|
-
|
51
|
-
<%= will_filter_table_tag(@orders) %>
|
52
|
-
|
53
|
-
That's it. This will render a filter box with various conditions, operators and values for the model object you selected.
|
54
|
-
|
55
|
-
Below are a couple of screenshot of what the filter looks like when it is rendered on a page:
|
56
|
-
|
57
|
-
http://wiki.tr8n.org/images/d/da/Will_filter_1.png
|
58
|
-
|
59
|
-
http://wiki.tr8n.org/images/e/ec/Will_filter_2.png
|
60
|
-
|
61
|
-
will_filter_examples project contains some samples that show you how to customize filters and much more
|
62
|
-
|
63
|
-
git://github.com/berk/will_filter_examples.git
|
64
|
-
|
65
|
-
Live will_filter_examples application is running here:
|
66
|
-
|
67
|
-
http://wf.tr8n.org
|
68
|
-
|
69
|
-
If you have any questions, comments or suggestions, email me at michael@geni.com
|
70
|
-
|
71
|
-
== Authors and credits
|
72
|
-
|
73
|
-
Authors:: Michael Berkovich
|
74
|
-
|
data/Rakefile
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
#--
|
2
|
-
# Copyright (c) 2011 Michael Berkovich
|
3
|
-
#
|
4
|
-
# Permission is hereby granted, free of charge, to any person obtaining
|
5
|
-
# a copy of this software and associated documentation files (the
|
6
|
-
# "Software"), to deal in the Software without restriction, including
|
7
|
-
# without limitation the rights to use, copy, modify, merge, publish,
|
8
|
-
# distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
-
# permit persons to whom the Software is furnished to do so, subject to
|
10
|
-
# the following conditions:
|
11
|
-
#
|
12
|
-
# The above copyright notice and this permission notice shall be
|
13
|
-
# included in all copies or substantial portions of the Software.
|
14
|
-
#
|
15
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
-
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
-
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
-
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
-
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
-
#++
|
23
|
-
|
24
|
-
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
25
|
-
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
26
|
-
|
27
|
-
require 'rake/testtask'
|
28
|
-
|
29
|
-
Rake::TestTask.new do |test|
|
30
|
-
test.pattern = 'test/**/*_test.rb'
|
31
|
-
test.libs << 'test'
|
32
|
-
end
|
33
|
-
|
34
|
-
begin
|
35
|
-
require 'jeweler'
|
36
|
-
Jeweler::Tasks.new do |s|
|
37
|
-
s.name = "will_filter"
|
38
|
-
s.summary = "Rails engine for filtering ActiveRecord model objects."
|
39
|
-
s.email = "theiceberk@gmail.com"
|
40
|
-
s.homepage = "http://github.com/berk/will_filter"
|
41
|
-
s.description = "Rails engine for filtering ActiveRecord model objects."
|
42
|
-
s.authors = ["Michael Berkovich"]
|
43
|
-
end
|
44
|
-
Jeweler::GemcutterTasks.new
|
45
|
-
rescue LoadError
|
46
|
-
puts "Jeweler not available. Install it with: sudo gem install jeweler"
|
47
|
-
end
|
48
|
-
|
49
|
-
#require File.expand_path('../config/application', __FILE__)
|
50
|
-
#require 'rake'
|
51
|
-
#
|
52
|
-
#WillFilter::Application.load_tasks
|
53
|
-
|
54
|
-
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
3.0.3
|
data/config.ru
DELETED
data/db/development.sqlite3
DELETED
Binary file
|
@@ -1,19 +0,0 @@
|
|
1
|
-
class CreateWillFilterTables < ActiveRecord::Migration
|
2
|
-
def self.up
|
3
|
-
create_table :wf_filters do |t|
|
4
|
-
t.string :type
|
5
|
-
t.string :name
|
6
|
-
t.text :data
|
7
|
-
t.integer :user_id
|
8
|
-
t.string :model_class_name
|
9
|
-
|
10
|
-
t.timestamps
|
11
|
-
end
|
12
|
-
|
13
|
-
add_index :wf_filters, [:user_id]
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.down
|
17
|
-
drop_table :wf_filters
|
18
|
-
end
|
19
|
-
end
|
data/db/seeds.rb
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
# This file should contain all the record creation needed to seed the database with its default values.
|
2
|
-
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
|
3
|
-
#
|
4
|
-
# Examples:
|
5
|
-
#
|
6
|
-
# cities = City.create([{ :name => 'Chicago' }, { :name => 'Copenhagen' }])
|
7
|
-
# Mayor.create(:name => 'Daley', :city => cities.first)
|
data/db/test.sqlite3
DELETED
Binary file
|
data/doc/README_FOR_APP
DELETED
data/examples/README
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
Please install will_filter_examples project to see how to configure the model_filters.
|
data/lib/tasks/.gitkeep
DELETED
File without changes
|
data/pkg/will_filter-0.1.0.gem
DELETED
Binary file
|
data/pkg/will_filter-0.1.1.gem
DELETED
Binary file
|
data/script/rails
DELETED
@@ -1,6 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
3
|
-
|
4
|
-
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
5
|
-
require File.expand_path('../../config/boot', __FILE__)
|
6
|
-
require 'rails/commands'
|
@@ -1,297 +0,0 @@
|
|
1
|
-
require File.expand_path('../../../../test_helper', __FILE__)
|
2
|
-
|
3
|
-
module WillFilter
|
4
|
-
class FilterTest < ActiveSupport::TestCase
|
5
|
-
|
6
|
-
test "boolean container" do
|
7
|
-
params = {:wf_type=>"UserFilter",
|
8
|
-
:wf_c0=>:admin,
|
9
|
-
:wf_o0=>:is,
|
10
|
-
:wf_v0_0=>"1"}
|
11
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
12
|
-
assert_equal 1, filter.conditions.size
|
13
|
-
assert_equal 2, filter.sql_conditions.size
|
14
|
-
assert_equal " users.admin = ? ", filter.sql_conditions.first
|
15
|
-
assert_equal true, filter.sql_conditions.last
|
16
|
-
|
17
|
-
params = {:wf_type=>"UserFilter",
|
18
|
-
:wf_c0=>:admin,
|
19
|
-
:wf_o0=>:is,
|
20
|
-
:wf_v0_0=>"0"}
|
21
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
22
|
-
assert_equal 1, filter.conditions.size
|
23
|
-
assert_equal 2, filter.sql_conditions.size
|
24
|
-
assert_equal " users.admin = ? ", filter.sql_conditions.first
|
25
|
-
assert_equal false, filter.sql_conditions.last
|
26
|
-
end
|
27
|
-
|
28
|
-
test "date range container" do
|
29
|
-
params = {:wf_type=>"UserFilter",
|
30
|
-
:wf_c0=>:birth_date,
|
31
|
-
:wf_o0=>:is_in_the_range,
|
32
|
-
:wf_v0_0=>"1971-11-09",
|
33
|
-
:wf_v0_1=>"1974-11-09"}
|
34
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
35
|
-
assert_equal 1, filter.conditions.size
|
36
|
-
assert_equal 3, filter.sql_conditions.size
|
37
|
-
assert_equal " (users.birth_date >= ? and users.birth_date <= ?) ", filter.sql_conditions.first
|
38
|
-
end
|
39
|
-
|
40
|
-
test "date time range container" do
|
41
|
-
params = {:wf_type=>"UserFilter",
|
42
|
-
:wf_c0=>:created_at,
|
43
|
-
:wf_o0=>:is_in_the_range,
|
44
|
-
:wf_v0_0=>"1971-11-09 8:00",
|
45
|
-
:wf_v0_1=>"1971-11-09 12:00"}
|
46
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
47
|
-
assert_equal 1, filter.conditions.size
|
48
|
-
assert_equal 3, filter.sql_conditions.size
|
49
|
-
assert_equal " (users.created_at >= ? and users.created_at <= ?) ", filter.sql_conditions.first
|
50
|
-
end
|
51
|
-
|
52
|
-
test "date time container" do
|
53
|
-
params = {:wf_type=>"UserFilter",
|
54
|
-
:wf_c0=>:created_at,
|
55
|
-
:wf_o0=>:is,
|
56
|
-
:wf_v0_0=>"1971-11-09 8:00"}
|
57
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
58
|
-
assert_equal 1, filter.conditions.size
|
59
|
-
assert_equal 2, filter.sql_conditions.size
|
60
|
-
assert_equal " users.created_at = ? ", filter.sql_conditions.first
|
61
|
-
|
62
|
-
params = {:wf_type=>"UserFilter",
|
63
|
-
:wf_c0=>:created_at,
|
64
|
-
:wf_o0=>:is_not,
|
65
|
-
:wf_v0_0=>"1971-11-09 8:00"}
|
66
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
67
|
-
assert_equal 1, filter.conditions.size
|
68
|
-
assert_equal 2, filter.sql_conditions.size
|
69
|
-
assert_equal " users.created_at <> ? ", filter.sql_conditions.first
|
70
|
-
|
71
|
-
params = {:wf_type=>"UserFilter",
|
72
|
-
:wf_c0=>:created_at,
|
73
|
-
:wf_o0=>:is_after,
|
74
|
-
:wf_v0_0=>"1971-11-09 8:00"}
|
75
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
76
|
-
assert_equal 1, filter.conditions.size
|
77
|
-
assert_equal 2, filter.sql_conditions.size
|
78
|
-
assert_equal " users.created_at > ? ", filter.sql_conditions.first
|
79
|
-
|
80
|
-
params = {:wf_type=>"UserFilter",
|
81
|
-
:wf_c0=>:created_at,
|
82
|
-
:wf_o0=>:is_before,
|
83
|
-
:wf_v0_0=>"1971-11-09 8:00"}
|
84
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
85
|
-
assert_equal 1, filter.conditions.size
|
86
|
-
assert_equal 2, filter.sql_conditions.size
|
87
|
-
assert_equal " users.created_at < ? ", filter.sql_conditions.first
|
88
|
-
end
|
89
|
-
|
90
|
-
test "date container" do
|
91
|
-
params = {:wf_type=>"UserFilter",
|
92
|
-
:wf_c0=>:birth_date,
|
93
|
-
:wf_o0=>:is,
|
94
|
-
:wf_v0_0=>"1971-11-09"}
|
95
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
96
|
-
assert_equal 1, filter.conditions.size
|
97
|
-
assert_equal 2, filter.sql_conditions.size
|
98
|
-
assert_equal " users.birth_date = ? ", filter.sql_conditions.first
|
99
|
-
|
100
|
-
params = {:wf_type=>"UserFilter",
|
101
|
-
:wf_c0=>:birth_date,
|
102
|
-
:wf_o0=>:is_not,
|
103
|
-
:wf_v0_0=>"1971-11-09 8:00"}
|
104
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
105
|
-
assert_equal 1, filter.conditions.size
|
106
|
-
assert_equal 2, filter.sql_conditions.size
|
107
|
-
assert_equal " users.birth_date <> ? ", filter.sql_conditions.first
|
108
|
-
|
109
|
-
params = {:wf_type=>"UserFilter",
|
110
|
-
:wf_c0=>:birth_date,
|
111
|
-
:wf_o0=>:is_after,
|
112
|
-
:wf_v0_0=>"1971-11-09 8:00"}
|
113
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
114
|
-
assert_equal 1, filter.conditions.size
|
115
|
-
assert_equal 2, filter.sql_conditions.size
|
116
|
-
assert_equal " users.birth_date > ? ", filter.sql_conditions.first
|
117
|
-
|
118
|
-
params = {:wf_type=>"UserFilter",
|
119
|
-
:wf_c0=>:birth_date,
|
120
|
-
:wf_o0=>:is_before,
|
121
|
-
:wf_v0_0=>"1971-11-09 8:00"}
|
122
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
123
|
-
assert_equal 1, filter.conditions.size
|
124
|
-
assert_equal 2, filter.sql_conditions.size
|
125
|
-
assert_equal " users.birth_date < ? ", filter.sql_conditions.first
|
126
|
-
end
|
127
|
-
|
128
|
-
test "numeric delimited container" do
|
129
|
-
params = {:wf_type=>"UserFilter",
|
130
|
-
:wf_c0=>:id,
|
131
|
-
:wf_o0=>:is_in,
|
132
|
-
:wf_v0_0=>"1,2,3,4,5,6"}
|
133
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
134
|
-
assert_equal 1, filter.conditions.size
|
135
|
-
assert_equal 2, filter.sql_conditions.size
|
136
|
-
assert_equal " users.id in (?) ", filter.sql_conditions.first
|
137
|
-
end
|
138
|
-
|
139
|
-
test "numeric range container" do
|
140
|
-
params = {:wf_type=>"UserFilter",
|
141
|
-
:wf_c0=>:id,
|
142
|
-
:wf_o0=>:is_in_the_range,
|
143
|
-
:wf_v0_0=>"1",
|
144
|
-
:wf_v0_1=>"10"}
|
145
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
146
|
-
assert_equal 1, filter.conditions.size
|
147
|
-
assert_equal 3, filter.sql_conditions.size
|
148
|
-
assert_equal " (users.id >= ? and users.id <= ?) ", filter.sql_conditions.first
|
149
|
-
end
|
150
|
-
|
151
|
-
test "numeric container" do
|
152
|
-
params = {:wf_type=>"UserFilter",
|
153
|
-
:wf_c0=>:id,
|
154
|
-
:wf_o0=>:is,
|
155
|
-
:wf_v0_0=>"1"}
|
156
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
157
|
-
assert_equal 1, filter.conditions.size
|
158
|
-
assert_equal 2, filter.sql_conditions.size
|
159
|
-
assert_equal " users.id = ? ", filter.sql_conditions.first
|
160
|
-
|
161
|
-
params = {:wf_type=>"UserFilter",
|
162
|
-
:wf_c0=>:id,
|
163
|
-
:wf_o0=>:is_not,
|
164
|
-
:wf_v0_0=>"1"}
|
165
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
166
|
-
assert_equal 1, filter.conditions.size
|
167
|
-
assert_equal 2, filter.sql_conditions.size
|
168
|
-
assert_equal " users.id <> ? ", filter.sql_conditions.first
|
169
|
-
|
170
|
-
params = {:wf_type=>"UserFilter",
|
171
|
-
:wf_c0=>:id,
|
172
|
-
:wf_o0=>:is_less_than,
|
173
|
-
:wf_v0_0=>"1"}
|
174
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
175
|
-
assert_equal 1, filter.conditions.size
|
176
|
-
assert_equal 2, filter.sql_conditions.size
|
177
|
-
assert_equal " users.id < ? ", filter.sql_conditions.first
|
178
|
-
|
179
|
-
params = {:wf_type=>"UserFilter",
|
180
|
-
:wf_c0=>:id,
|
181
|
-
:wf_o0=>:is_greater_than,
|
182
|
-
:wf_v0_0=>"1"}
|
183
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
184
|
-
assert_equal 1, filter.conditions.size
|
185
|
-
assert_equal 2, filter.sql_conditions.size
|
186
|
-
assert_equal " users.id > ? ", filter.sql_conditions.first
|
187
|
-
end
|
188
|
-
|
189
|
-
test "single date container" do
|
190
|
-
params = {:wf_type=>"UserFilter",
|
191
|
-
:wf_c0=>:created_at,
|
192
|
-
:wf_o0=>:is_on,
|
193
|
-
:wf_v0_0=>"1971-11-09"}
|
194
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
195
|
-
assert_equal 1, filter.conditions.size
|
196
|
-
assert_equal 3, filter.sql_conditions.size
|
197
|
-
assert_equal " users.created_at >= ? and users.created_at < ? ", filter.sql_conditions.first
|
198
|
-
|
199
|
-
params = {:wf_type=>"UserFilter",
|
200
|
-
:wf_c0=>:created_at,
|
201
|
-
:wf_o0=>:is_not_on,
|
202
|
-
:wf_v0_0=>"1971-11-09"}
|
203
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
204
|
-
assert_equal 1, filter.conditions.size
|
205
|
-
assert_equal 3, filter.sql_conditions.size
|
206
|
-
assert_equal " users.created_at < ? and users.created_at >= ? ", filter.sql_conditions.first
|
207
|
-
end
|
208
|
-
|
209
|
-
test "text delimited container" do
|
210
|
-
params = {:wf_type=>"UserFilter",
|
211
|
-
:wf_c0=>:name,
|
212
|
-
:wf_o0=>:is_in,
|
213
|
-
:wf_v0_0=>"a,b,c,d,e,f,g"}
|
214
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
215
|
-
assert_equal 1, filter.conditions.size
|
216
|
-
assert_equal 2, filter.sql_conditions.size
|
217
|
-
assert_equal " users.name in (?) ", filter.sql_conditions.first
|
218
|
-
|
219
|
-
params = {:wf_type=>"UserFilter",
|
220
|
-
:wf_c0=>:name,
|
221
|
-
:wf_o0=>:is_not_in,
|
222
|
-
:wf_v0_0=>"a,b,c,d,e,f,g"}
|
223
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
224
|
-
assert_equal 1, filter.conditions.size
|
225
|
-
assert_equal 2, filter.sql_conditions.size
|
226
|
-
assert_equal " users.name not in (?) ", filter.sql_conditions.first
|
227
|
-
end
|
228
|
-
|
229
|
-
test "text container" do
|
230
|
-
params = {:wf_type=>"UserFilter",
|
231
|
-
:wf_c0=>:name,
|
232
|
-
:wf_o0=>:is,
|
233
|
-
:wf_v0_0=>"Mike"}
|
234
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
235
|
-
assert_equal 2, filter.sql_conditions.size
|
236
|
-
assert_equal " users.name = ? ", filter.sql_conditions.first
|
237
|
-
assert_equal "Mike", filter.sql_conditions.last
|
238
|
-
|
239
|
-
params = {:wf_type=>"UserFilter",
|
240
|
-
:wf_c0=>:name,
|
241
|
-
:wf_o0=>:is_not,
|
242
|
-
:wf_v0_0=>"Mike"}
|
243
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
244
|
-
assert_equal 2, filter.sql_conditions.size
|
245
|
-
assert_equal " users.name <> ? ", filter.sql_conditions.first
|
246
|
-
|
247
|
-
params = {:wf_type=>"UserFilter",
|
248
|
-
:wf_c0=>:name,
|
249
|
-
:wf_o0=>:contains,
|
250
|
-
:wf_v0_0=>"Mike"}
|
251
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
252
|
-
assert_equal 2, filter.sql_conditions.size
|
253
|
-
assert_equal " users.name like ? ", filter.sql_conditions.first
|
254
|
-
|
255
|
-
params = {:wf_type=>"UserFilter",
|
256
|
-
:wf_c0=>:name,
|
257
|
-
:wf_o0=>:does_not_contain,
|
258
|
-
:wf_v0_0=>"Mike"}
|
259
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
260
|
-
assert_equal 2, filter.sql_conditions.size
|
261
|
-
assert_equal " users.name not like ? ", filter.sql_conditions.first
|
262
|
-
|
263
|
-
params = {:wf_type=>"UserFilter",
|
264
|
-
:wf_c0=>:name,
|
265
|
-
:wf_o0=>:starts_with,
|
266
|
-
:wf_v0_0=>"Mike"}
|
267
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
268
|
-
assert_equal 2, filter.sql_conditions.size
|
269
|
-
assert_equal " users.name like ? ", filter.sql_conditions.first
|
270
|
-
assert_equal "Mike%", filter.sql_conditions.last
|
271
|
-
|
272
|
-
params = {:wf_type=>"UserFilter",
|
273
|
-
:wf_c0=>:name,
|
274
|
-
:wf_o0=>:ends_with,
|
275
|
-
:wf_v0_0=>"Mike"}
|
276
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
277
|
-
assert_equal 2, filter.sql_conditions.size
|
278
|
-
assert_equal " users.name like ? ", filter.sql_conditions.first
|
279
|
-
assert_equal "%Mike", filter.sql_conditions.last
|
280
|
-
end
|
281
|
-
|
282
|
-
test "compound filter" do
|
283
|
-
params = {:wf_type=>"UserFilter",
|
284
|
-
:wf_c0=>:name,
|
285
|
-
:wf_o0=>:is,
|
286
|
-
:wf_v0_0=>"Mike",
|
287
|
-
:wf_c1=>:birth_date,
|
288
|
-
:wf_o1=>:is_before,
|
289
|
-
:wf_v1_0=>"1971-11-09 8:00"
|
290
|
-
}
|
291
|
-
filter = WillFilter::Filter.deserialize_from_params(params)
|
292
|
-
assert_equal 3, filter.sql_conditions.size
|
293
|
-
assert_equal " users.name = ? AND users.birth_date < ? ", filter.sql_conditions.first
|
294
|
-
end
|
295
|
-
|
296
|
-
end
|
297
|
-
end
|
data/test/test_helper.rb
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
ENV["RAILS_ENV"] = "test"
|
2
|
-
require File.expand_path('../../config/environment', __FILE__)
|
3
|
-
require 'rails/test_help'
|
4
|
-
|
5
|
-
class ActiveSupport::TestCase
|
6
|
-
# Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
|
7
|
-
#
|
8
|
-
# Note: You'll currently still have to declare fixtures explicitly in integration tests
|
9
|
-
# -- they do not yet inherit this setting
|
10
|
-
fixtures :all
|
11
|
-
|
12
|
-
# Add more helper methods to be used by all tests here...
|
13
|
-
end
|
14
|
-
|
15
|
-
# Dummy UserFilter object for testing filter containers
|
16
|
-
class UserFilter < WillFilter::Filter
|
17
|
-
def table_name
|
18
|
-
"users"
|
19
|
-
end
|
20
|
-
|
21
|
-
def definition
|
22
|
-
{:id=>
|
23
|
-
{:is_provided=>"nil",
|
24
|
-
:is_not_provided=>"nil",
|
25
|
-
:is=>"numeric",
|
26
|
-
:is_not=>"numeric",
|
27
|
-
:is_less_than=>"numeric",
|
28
|
-
:is_greater_than=>"numeric",
|
29
|
-
:is_in_the_range=>"numeric_range",
|
30
|
-
:is_in=>"numeric_delimited",
|
31
|
-
:is_filtered_by=>:filter_list},
|
32
|
-
:name=>
|
33
|
-
{:is_provided=>"nil",
|
34
|
-
:is_not_provided=>"nil",
|
35
|
-
:is=>"text",
|
36
|
-
:is_not=>"text",
|
37
|
-
:contains=>"text",
|
38
|
-
:does_not_contain=>"text",
|
39
|
-
:starts_with=>"text",
|
40
|
-
:ends_with=>"text",
|
41
|
-
:is_in=>"text_delimited",
|
42
|
-
:is_not_in=>"text_delimited"},
|
43
|
-
:admin=>
|
44
|
-
{:is_provided=>"nil",
|
45
|
-
:is_not_provided=>"nil",
|
46
|
-
:is=>"boolean"
|
47
|
-
},
|
48
|
-
:birth_date =>
|
49
|
-
{:is_provided=>"nil",
|
50
|
-
:is_not_provided=>"nil",
|
51
|
-
:is=>"date",
|
52
|
-
:is_not=>"date",
|
53
|
-
:is_after=>"date",
|
54
|
-
:is_before=>"date",
|
55
|
-
:is_in_the_range=>"date_range"
|
56
|
-
},
|
57
|
-
:created_at=>
|
58
|
-
{:is_provided=>"nil",
|
59
|
-
:is_not_provided=>"nil",
|
60
|
-
:is=>"date_time",
|
61
|
-
:is_not=>"date_time",
|
62
|
-
:is_after=>"date_time",
|
63
|
-
:is_before=>"date_time",
|
64
|
-
:is_in_the_range=>"date_time_range",
|
65
|
-
:is_on=>"single_date",
|
66
|
-
:is_not_on=>"single_date"}
|
67
|
-
}
|
68
|
-
end
|
69
|
-
|
70
|
-
|
71
|
-
end
|
data/uninstall.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
#--
|
2
|
-
# Copyright (c) 2010 Michael Berkovich, Geni Inc
|
3
|
-
#
|
4
|
-
# Permission is hereby granted, free of charge, to any person obtaining
|
5
|
-
# a copy of this software and associated documentation files (the
|
6
|
-
# "Software"), to deal in the Software without restriction, including
|
7
|
-
# without limitation the rights to use, copy, modify, merge, publish,
|
8
|
-
# distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
-
# permit persons to whom the Software is furnished to do so, subject to
|
10
|
-
# the following conditions:
|
11
|
-
#
|
12
|
-
# The above copyright notice and this permission notice shall be
|
13
|
-
# included in all copies or substantial portions of the Software.
|
14
|
-
#
|
15
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
-
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
-
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
-
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
-
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
-
#++
|
23
|
-
|
24
|
-
# Uninstall hook code here
|