Skip to content

Commit f804aed

Browse files
committed
more refactoring of message and blacklist models
1 parent 5f5b1ad commit f804aed

File tree

2 files changed

+49
-24
lines changed

2 files changed

+49
-24
lines changed

app/models/blacklist.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,16 @@ class Blacklist < ActiveRecord::Base
22
has_many :blacklisted_terms
33

44
validates_presence_of :title
5+
6+
def self.all_terms
7+
self.all.collect {|b|
8+
b.all_terms
9+
}.flatten
10+
end
11+
12+
def all_terms
13+
blacklisted_terms.collect {|bt|
14+
bt.term
15+
}
16+
end
517
end

app/models/message.rb

Lines changed: 37 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,18 @@ class Message
1616
key :line, Integer
1717

1818
LIMIT = 100
19+
scope :not_deleted, :deleted => [false, nil]
20+
scope :by_blacklisted_terms, lambda { |terms|
21+
where(:message.nin => terms.collect { |term| /#{Regexp.escape term}/})
22+
}
23+
scope :by_blacklist, lambda {|blacklist| by_blacklisted_terms(blacklist.all_terms)}
24+
#scope :by_blacklist, lambda {|blacklist|
25+
# where(:message.nin => blacklist.all_terms.collect { |term|
26+
# /#{Regexp.escape term}/
27+
# })
28+
#}
29+
scope :page, lambda {|number| skip(self.get_offset(number))}
30+
scope :default_scope, fields(:full_message => 0).order("_id DESC").not_deleted.limit(LIMIT)
1931

2032
def self.get_conditions_from_date(timeframe)
2133
conditions = {}
@@ -37,34 +49,30 @@ def self.get_conditions_from_date(timeframe)
3749
def self.all_of_blacklist id, page = 1
3850
page = 1 if page.blank?
3951

40-
conditions = Hash.new
41-
42-
(blacklist = BlacklistedTerm.get_all_as_condition_hash(false, id)).blank? ? nil : conditions[:message] = blacklist;
43-
44-
conditions[:deleted] = [false, nil]
45-
46-
return self.all :limit => LIMIT, :order => "_id DESC", :conditions => conditions, :offset => self.get_offset(page), :fields => { :full_message => 0 }
52+
b = Blacklist.find(id)
53+
#return by_blacklist(b).not_deleted.limit(LIMIT).order("_id DESC").offset(self.get_offset(page)).fields(:full_message => 0).all
54+
return by_blacklist(b).default_scope.page(page).all
4755
end
4856

4957
def self.count_of_blacklist id
50-
conditions = Hash.new
58+
b = Blacklist.find(id)
5159

52-
(blacklist = BlacklistedTerm.get_all_as_condition_hash(false, id)).blank? ? nil : conditions[:message] = blacklist;
53-
conditions[:deleted] = [false, nil]
54-
55-
return self.count :conditions => conditions
60+
return by_blacklist(b).count
5661
end
5762

5863
def self.all_with_blacklist page = 1, limit = LIMIT
5964
page = 1 if page.blank?
6065

61-
conditions = Hash.new
66+
#conditions = Hash.new
6267

63-
(blacklist = BlacklistedTerm.get_all_as_condition_hash).blank? ? nil : conditions[:message] = blacklist;
68+
#(blacklist = BlacklistedTerm.get_all_as_condition_hash).blank? ? nil : conditions[:message] = blacklist;
6469

65-
conditions[:deleted] = [false, nil]
70+
#conditions[:deleted] = [false, nil]
71+
72+
#return self.all :limit => limit, :order => "_id DESC", :conditions => conditions, :offset => self.get_offset(page), :fields => { :full_message => 0 }
6673

67-
return self.all :limit => limit, :order => "_id DESC", :conditions => conditions, :offset => self.get_offset(page), :fields => { :full_message => 0 }
74+
terms = Blacklist.all_terms
75+
Message.by_blacklisted_terms(terms).default_scope.page(page)
6876
end
6977

7078
def self.all_by_quickfilter filters, page = 1, limit = LIMIT, conditions_only = false
@@ -74,10 +82,12 @@ def self.all_by_quickfilter filters, page = 1, limit = LIMIT, conditions_only =
7482

7583
unless filters.blank?
7684
# Message
77-
conditions = (filters[:message].blank? ? conditions : conditions.where(:message => /#{Regexp.escape(filters[:message].strip)}/))
85+
conditions = conditions.where(:message => /#{Regexp.escape(filters[:message].strip)}/) unless filters[:message].blank?
86+
#conditions = (filters[:message].blank? ? conditions : conditions.where(:message => /#{Regexp.escape(filters[:message].strip)}/))
7887

7988
# Time Frame
80-
conditions = (filters[:date].blank? ? conditions : conditions.where(:created_at => get_conditions_from_date(filters[:date])))
89+
conditions = conditions.where(:created_at => get_conditions_from_date(filters[:date])) unless filters[:date].blank?
90+
#conditions = (filters[:date].blank? ? conditions : conditions.where(:created_at => get_conditions_from_date(filters[:date])))
8191

8292
#unless filters[:date_from].blank?
8393
# from = Chronic::parse(filters[:date_from]).to_i
@@ -90,20 +100,23 @@ def self.all_by_quickfilter filters, page = 1, limit = LIMIT, conditions_only =
90100
#end
91101

92102
# Facility
93-
conditions = (filters[:facility].blank? ? conditions : conditions.where(:facility => filters[:facility].to_i))
103+
conditions = conditions.where(:facility => filters[:facility].to_i) unless filters[:facility].blank?
104+
#conditions = (filters[:facility].blank? ? conditions : conditions.where(:facility => filters[:facility].to_i))
94105

95106
# Severity
96-
conditions = (filters[:severity].blank? ? conditions : conditions.where(:level => filters[:severity].to_i))
107+
conditions = conditions.where(:level => filters[:severity].to_i) unless filters[:severity].blank?
108+
#conditions = (filters[:severity].blank? ? conditions : conditions.where(:level => filters[:severity].to_i))
97109

98110
# Host
99-
conditions = (filters[:host].blank? ? conditions : conditions.where(:host => filters[:host]))
111+
conditions = conditions.where(:host => filters[:host]) unless filters[:host].blank?
112+
#conditions = (filters[:host].blank? ? conditions : conditions.where(:host => filters[:host]))
100113
end
101-
102-
conditions = conditions.where(:deleted => [false, nil])
114+
115+
Rails.logger.warn("CONDITIONS FOR MONGO: #{conditions.inspect}")
103116

104117
return (conditions_only ?
105118
conditions :
106-
conditions.limit(limit).offset(self.get_offset(page)).order("_id DESC").fields(:full_message => 0)
119+
conditions.default_scope.page(page)
107120
)
108121
end
109122

0 commit comments

Comments
 (0)