22
33module Archived
44 class Petition < ActiveRecord ::Base
5+ include DeprecatedAttributes
6+
57 OPEN_STATE = 'open'
68 CLOSED_STATE = 'closed'
79 HIDDEN_STATE = 'hidden'
@@ -21,12 +23,13 @@ class Petition < ActiveRecord::Base
2123 has_many :signatures
2224 has_many :sponsors , -> { where ( sponsor : true ) } , class_name : "Signature"
2325
24- validates :title , presence : true , length : { maximum : 150 }
25- validates :description , presence : true , length : { maximum : 1000 }
26+ validates :action , presence : true , length : { maximum : 150 }
27+ validates :background , length : { maximum : 300 } , allow_blank : true
28+ validates :additional_details , length : { maximum : 1000 } , allow_blank : true
2629 validates :state , presence : true , inclusion : STATES
2730 validates :closed_at , presence : true , unless : :rejected?
2831
29- extend Searchable ( :title , :description )
32+ extend Searchable ( :action , :background , :additional_details )
3033 include Browseable
3134
3235 filter :parliament
@@ -36,13 +39,16 @@ class Petition < ActiveRecord::Base
3639 facet :open , -> { for_state ( OPEN_STATE ) . by_most_signatures }
3740 facet :closed , -> { for_state ( CLOSED_STATE ) . by_most_signatures }
3841 facet :rejected , -> { for_state ( REJECTED_STATE ) . by_most_signatures }
42+ facet :with_response , -> { with_response . by_most_signatures }
3943 facet :by_most_signatures , -> { by_most_signatures }
4044 facet :by_created_at , -> { by_created_at }
4145
4246 default_scope { preload ( :parliament ) }
4347
4448 delegate :threshold_for_response , :threshold_for_debate , to : :parliament
4549
50+ deprecate_attribute :title , :description , :response , :reason_for_rejection
51+
4652 class << self
4753 def for_state ( state )
4854 where ( state : state )
@@ -55,14 +61,10 @@ def by_created_at
5561 def by_most_signatures
5662 reorder ( signature_count : :desc )
5763 end
58- end
59-
60- def action
61- super || title
62- end
6364
64- def action?
65- super || title?
65+ def with_response
66+ where . not ( government_response_at : nil )
67+ end
6668 end
6769
6870 def open?
@@ -91,6 +93,10 @@ def closed_early_due_to_election?
9193 closed_at == parliament . dissolution_at
9294 end
9395
96+ def government_response?
97+ government_response_at && government_response
98+ end
99+
94100 def threshold_for_debate_reached?
95101 signature_count >= parliament . threshold_for_debate
96102 end
0 commit comments