This feature wasn't properly tested nor reviewed, and after reviewing
several pull requests with a similar status and considering this pull
request is related to the public area of the web, we've decided to
remove it before releasing version 1.1.
This commit reverts commit 4f50e67a.
135 lines
3.4 KiB
Ruby
135 lines
3.4 KiB
Ruby
class Legislation::ProcessesController < Legislation::BaseController
|
|
include RandomSeed
|
|
|
|
has_filters %w[open past], only: :index
|
|
has_filters %w[random winners], only: :proposals
|
|
|
|
load_and_authorize_resource
|
|
|
|
before_action :set_random_seed, only: :proposals
|
|
|
|
def index
|
|
@current_filter ||= "open"
|
|
@processes = ::Legislation::Process.send(@current_filter).published
|
|
.not_in_draft.order(start_date: :desc).page(params[:page])
|
|
end
|
|
|
|
def show
|
|
draft_version = @process.draft_versions.published.last
|
|
allegations_phase = @process.allegations_phase
|
|
|
|
if @process.homepage_enabled? && @process.homepage.present?
|
|
render :show
|
|
elsif allegations_phase.enabled? && allegations_phase.started? && draft_version.present?
|
|
redirect_to legislation_process_draft_version_path(@process, draft_version)
|
|
elsif @process.debate_phase.enabled?
|
|
redirect_to debate_legislation_process_path(@process)
|
|
elsif @process.proposals_phase.enabled?
|
|
redirect_to proposals_legislation_process_path(@process)
|
|
else
|
|
redirect_to allegations_legislation_process_path(@process)
|
|
end
|
|
end
|
|
|
|
def debate
|
|
set_process
|
|
@phase = :debate_phase
|
|
|
|
if @process.debate_phase.started? || (current_user&.administrator?)
|
|
render :debate
|
|
else
|
|
render :phase_not_open
|
|
end
|
|
end
|
|
|
|
def draft_publication
|
|
set_process
|
|
@phase = :draft_publication
|
|
|
|
if @process.draft_publication.started?
|
|
draft_version = @process.draft_versions.published.last
|
|
|
|
if draft_version.present?
|
|
redirect_to legislation_process_draft_version_path(@process, draft_version)
|
|
else
|
|
render :phase_empty
|
|
end
|
|
else
|
|
render :phase_not_open
|
|
end
|
|
end
|
|
|
|
def allegations
|
|
set_process
|
|
@phase = :allegations_phase
|
|
|
|
if @process.allegations_phase.started?
|
|
draft_version = @process.draft_versions.published.last
|
|
|
|
if draft_version.present?
|
|
redirect_to legislation_process_draft_version_path(@process, draft_version)
|
|
else
|
|
render :phase_empty
|
|
end
|
|
else
|
|
render :phase_not_open
|
|
end
|
|
end
|
|
|
|
def result_publication
|
|
set_process
|
|
@phase = :result_publication
|
|
|
|
if @process.result_publication.started?
|
|
final_version = @process.final_draft_version
|
|
|
|
if final_version.present?
|
|
redirect_to legislation_process_draft_version_path(@process, final_version)
|
|
else
|
|
render :phase_empty
|
|
end
|
|
else
|
|
render :phase_not_open
|
|
end
|
|
end
|
|
|
|
def milestones
|
|
@phase = :milestones
|
|
end
|
|
|
|
def proposals
|
|
set_process
|
|
@phase = :proposals_phase
|
|
|
|
@proposals = ::Legislation::Proposal.where(process: @process)
|
|
@proposals = @proposals.search(params[:search]) if params[:search].present?
|
|
|
|
@current_filter = "winners" if params[:filter].blank? && @proposals.winners.any?
|
|
|
|
if @current_filter == "random"
|
|
@proposals = @proposals.sort_by_random(session[:random_seed]).page(params[:page])
|
|
else
|
|
@proposals = @proposals.send(@current_filter).page(params[:page])
|
|
end
|
|
|
|
if @process.proposals_phase.started? || (current_user&.administrator?)
|
|
legislation_proposal_votes(@proposals)
|
|
render :proposals
|
|
else
|
|
render :phase_not_open
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def member_method?
|
|
params[:id].present?
|
|
end
|
|
|
|
def set_process
|
|
return if member_method?
|
|
|
|
@process = ::Legislation::Process.find(params[:process_id])
|
|
end
|
|
end
|