diff options
-rw-r--r-- | app/models/track_thing.rb | 72 |
1 files changed, 37 insertions, 35 deletions
diff --git a/app/models/track_thing.rb b/app/models/track_thing.rb index 38de18bd3..e9365ad77 100644 --- a/app/models/track_thing.rb +++ b/app/models/track_thing.rb @@ -46,6 +46,14 @@ class TrackThing < ActiveRecord::Base 'feed' ] + # When constructing a new track, use this to avoid duplicates / double posting + def TrackThing.find_existing(tracking_user, track) + if tracking_user.nil? + return nil + end + return TrackThing.find(:first, :conditions => [ 'tracking_user_id = ? and track_query = ? and track_type = ?', tracking_user.id, track.track_query, track.track_type ] ) + end + def TrackThing.track_type_description(track_type) if track_type == 'request_updates' _("Individual requests") @@ -61,34 +69,6 @@ class TrackThing < ActiveRecord::Base raise "internal error " + track_type end end - def track_type_description - TrackThing.track_type_description(self.track_type) - end - - def track_query_description - filter_description = query_filter_description('(variety:sent OR variety:followup_sent OR variety:response OR variety:comment)', - :no_query => N_("all requests or comments"), - :query => N_("all requests or comments matching text '{{query}}'")) - return filter_description if filter_description - filter_description = query_filter_description('(latest_status:successful OR latest_status:partially_successful)', - :no_query => N_("requests which are successful"), - :query => N_("requests which are successful matching text '{{query}}'")) - return filter_description if filter_description - return _("anything matching text '{{query}}'", :query => track_query) - end - - # Return a readable query description for queries involving commonly used filter clauses - def query_filter_description(string, options) - parsed_query = track_query.gsub(string, '') - if parsed_query != track_query - parsed_query.strip! - if parsed_query.empty? - _(options[:no_query]) - else - _(options[:query], :query => parsed_query) - end - end - end def TrackThing.create_track_for_request(info_request) track_thing = TrackThing.new @@ -154,6 +134,35 @@ class TrackThing < ActiveRecord::Base return track_thing end + def track_type_description + TrackThing.track_type_description(self.track_type) + end + + def track_query_description + filter_description = query_filter_description('(variety:sent OR variety:followup_sent OR variety:response OR variety:comment)', + :no_query => N_("all requests or comments"), + :query => N_("all requests or comments matching text '{{query}}'")) + return filter_description if filter_description + filter_description = query_filter_description('(latest_status:successful OR latest_status:partially_successful)', + :no_query => N_("requests which are successful"), + :query => N_("requests which are successful matching text '{{query}}'")) + return filter_description if filter_description + return _("anything matching text '{{query}}'", :query => track_query) + end + + # Return a readable query description for queries involving commonly used filter clauses + def query_filter_description(string, options) + parsed_query = track_query.gsub(string, '') + if parsed_query != track_query + parsed_query.strip! + if parsed_query.empty? + _(options[:no_query]) + else + _(options[:query], :query => parsed_query) + end + end + end + # Return hash of text parameters describing the request etc. def params if @params.nil? @@ -284,13 +293,6 @@ class TrackThing < ActiveRecord::Base return @params end - # When constructing a new track, use this to avoid duplicates / double posting - def TrackThing.find_existing(tracking_user, track) - if tracking_user.nil? - return nil - end - return TrackThing.find(:first, :conditions => [ 'tracking_user_id = ? and track_query = ? and track_type = ?', tracking_user.id, track.track_query, track.track_type ] ) - end end |