Merge pull request #3048 from jaflutz/2930-draft-phase-processes
Adds draft phase functionality in legislation processes
This commit is contained in:
@@ -50,6 +50,8 @@ class Admin::Legislation::ProcessesController < Admin::Legislation::BaseControll
|
||||
:end_date,
|
||||
:debate_start_date,
|
||||
:debate_end_date,
|
||||
:draft_start_date,
|
||||
:draft_end_date,
|
||||
:draft_publication_date,
|
||||
:allegations_start_date,
|
||||
:allegations_end_date,
|
||||
@@ -57,6 +59,7 @@ class Admin::Legislation::ProcessesController < Admin::Legislation::BaseControll
|
||||
:proposals_phase_end_date,
|
||||
:result_publication_date,
|
||||
:debate_phase_enabled,
|
||||
:draft_phase_enabled,
|
||||
:allegations_phase_enabled,
|
||||
:proposals_phase_enabled,
|
||||
:draft_publication_enabled,
|
||||
|
||||
@@ -8,7 +8,7 @@ class Legislation::ProcessesController < Legislation::BaseController
|
||||
|
||||
def index
|
||||
@current_filter ||= 'open'
|
||||
@processes = ::Legislation::Process.send(@current_filter).published.page(params[:page])
|
||||
@processes = ::Legislation::Process.send(@current_filter).published.not_in_draft.page(params[:page])
|
||||
end
|
||||
|
||||
def show
|
||||
|
||||
@@ -15,7 +15,7 @@ class Legislation::Process < ActiveRecord::Base
|
||||
translates :additional_info, touch: true
|
||||
include Globalizable
|
||||
|
||||
PHASES_AND_PUBLICATIONS = %i(debate_phase allegations_phase proposals_phase draft_publication result_publication).freeze
|
||||
PHASES_AND_PUBLICATIONS = %i(draft_phase debate_phase allegations_phase proposals_phase draft_publication result_publication).freeze
|
||||
|
||||
has_many :draft_versions, -> { order(:id) }, class_name: 'Legislation::DraftVersion',
|
||||
foreign_key: 'legislation_process_id', dependent: :destroy
|
||||
@@ -29,6 +29,8 @@ class Legislation::Process < ActiveRecord::Base
|
||||
validates :end_date, presence: true
|
||||
validates :debate_start_date, presence: true, if: :debate_end_date?
|
||||
validates :debate_end_date, presence: true, if: :debate_start_date?
|
||||
validates :draft_start_date, presence: true, if: :draft_end_date?
|
||||
validates :draft_end_date, presence: true, if: :draft_start_date?
|
||||
validates :allegations_start_date, presence: true, if: :allegations_end_date?
|
||||
validates :allegations_end_date, presence: true, if: :allegations_start_date?
|
||||
validates :proposals_phase_end_date, presence: true, if: :proposals_phase_start_date?
|
||||
@@ -39,6 +41,11 @@ class Legislation::Process < ActiveRecord::Base
|
||||
scope :past, -> { where("end_date < ?", Date.current).order('id DESC') }
|
||||
|
||||
scope :published, -> { where(published: true) }
|
||||
scope :not_in_draft, -> { where("draft_phase_enabled = false or (draft_start_date IS NOT NULL and draft_end_date IS NOT NULL and (draft_start_date >= ? or draft_end_date <= ?))", Date.current, Date.current) }
|
||||
|
||||
def draft_phase
|
||||
Legislation::Process::Phase.new(draft_start_date, draft_end_date, draft_phase_enabled)
|
||||
end
|
||||
|
||||
def debate_phase
|
||||
Legislation::Process::Phase.new(debate_start_date, debate_end_date, debate_phase_enabled)
|
||||
@@ -85,6 +92,7 @@ class Legislation::Process < ActiveRecord::Base
|
||||
def valid_date_ranges
|
||||
errors.add(:end_date, :invalid_date_range) if end_date && start_date && end_date < start_date
|
||||
errors.add(:debate_end_date, :invalid_date_range) if debate_end_date && debate_start_date && debate_end_date < debate_start_date
|
||||
errors.add(:draft_end_date, :invalid_date_range) if draft_end_date && draft_start_date && draft_end_date < draft_start_date
|
||||
if allegations_end_date && allegations_start_date && allegations_end_date < allegations_start_date
|
||||
errors.add(:allegations_end_date, :invalid_date_range)
|
||||
end
|
||||
|
||||
@@ -17,6 +17,34 @@
|
||||
|
||||
<% end %>
|
||||
|
||||
<div class="small-12 medium-4 column">
|
||||
<label><%= t("admin.legislation.processes.form.draft_phase") %></label>
|
||||
<p class="help-text"><%= t("admin.legislation.processes.form.draft_phase_description") %></p>
|
||||
</div>
|
||||
|
||||
<div class="small-12 medium-3 column">
|
||||
<%= f.text_field :draft_start_date,
|
||||
label: t("admin.legislation.processes.form.start"),
|
||||
value: format_date_for_calendar_form(@process.draft_start_date),
|
||||
class: "js-calendar-full",
|
||||
id: "draft_start_date" %>
|
||||
</div>
|
||||
|
||||
<div class="small-12 medium-3 column">
|
||||
<%= f.text_field :draft_end_date,
|
||||
label: t("admin.legislation.processes.form.end"),
|
||||
value: format_date_for_calendar_form(@process.draft_end_date),
|
||||
class: "js-calendar-full",
|
||||
id: "draft_end_date" %>
|
||||
</div>
|
||||
<div class="small-12 medium-2 column margin-top">
|
||||
<%= f.check_box :draft_phase_enabled, checked: @process.draft_phase.enabled?, label: t("admin.legislation.processes.form.enabled") %>
|
||||
</div>
|
||||
|
||||
<div class="small-12 column">
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<div class="small-12 medium-4 column">
|
||||
<label><%= t("admin.legislation.processes.form.process") %></label>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user