Factorize require_organizer and require_{draft,open,closed}_vote
This commit is contained in:
parent
dc702d0723
commit
7731c0e59a
1 changed files with 32 additions and 9 deletions
41
vote.rb
41
vote.rb
|
|
@ -146,7 +146,8 @@ end
|
||||||
post '/votes/:id/edit' do
|
post '/votes/:id/edit' do
|
||||||
require_login
|
require_login
|
||||||
find_vote
|
find_vote
|
||||||
redirect '/votes/' + @vote.secure_id unless @vote.state == 'draft' and @vote.users.exists?(current_user.id)
|
require_organizer
|
||||||
|
require_draft_vote
|
||||||
@vote.title = params[:title]
|
@vote.title = params[:title]
|
||||||
@vote.description = params[:description]
|
@vote.description = params[:description]
|
||||||
@vote.save
|
@vote.save
|
||||||
|
|
@ -156,7 +157,8 @@ end
|
||||||
post '/votes/:id/candidates' do
|
post '/votes/:id/candidates' do
|
||||||
require_login
|
require_login
|
||||||
find_vote
|
find_vote
|
||||||
redirect '/votes/' + @vote.secure_id unless @vote.state == 'draft' and @vote.users.exists?(current_user.id)
|
require_organizer
|
||||||
|
require_draft_vote
|
||||||
@candidate = Candidate.new(name: params[:name],
|
@candidate = Candidate.new(name: params[:name],
|
||||||
description: params[:description])
|
description: params[:description])
|
||||||
@candidate.vote = @vote
|
@candidate.vote = @vote
|
||||||
|
|
@ -167,7 +169,8 @@ end
|
||||||
post '/votes/:id/candidates/:cid/delete' do
|
post '/votes/:id/candidates/:cid/delete' do
|
||||||
require_login
|
require_login
|
||||||
find_vote
|
find_vote
|
||||||
redirect '/votes/' + @vote.secure_id unless @vote.state == 'draft' and @vote.users.exists?(current_user.id)
|
require_organizer
|
||||||
|
require_draft_vote
|
||||||
@candidate = Candidate.find(params[:cid])
|
@candidate = Candidate.find(params[:cid])
|
||||||
@candidate.destroy
|
@candidate.destroy
|
||||||
redirect '/votes/' + @vote.secure_id
|
redirect '/votes/' + @vote.secure_id
|
||||||
|
|
@ -176,7 +179,8 @@ end
|
||||||
post '/votes/:id/open' do
|
post '/votes/:id/open' do
|
||||||
require_login
|
require_login
|
||||||
find_vote
|
find_vote
|
||||||
redirect '/votes/' + @vote.secure_id unless @vote.state == 'draft' and @vote.users.exists?(current_user.id)
|
require_organizer
|
||||||
|
require_draft_vote
|
||||||
@vote.state = 'open'
|
@vote.state = 'open'
|
||||||
@vote.save
|
@vote.save
|
||||||
redirect '/votes/' + @vote.secure_id
|
redirect '/votes/' + @vote.secure_id
|
||||||
|
|
@ -185,7 +189,8 @@ end
|
||||||
post '/votes/:id/draft' do
|
post '/votes/:id/draft' do
|
||||||
require_login
|
require_login
|
||||||
find_vote
|
find_vote
|
||||||
redirect '/votes/' + @vote.secure_id unless @vote.state == 'open' and @vote.users.exists?(current_user.id)
|
require_organizer
|
||||||
|
require_open_vote
|
||||||
@vote.ratings.each {|r| r.destroy}
|
@vote.ratings.each {|r| r.destroy}
|
||||||
@vote.state = 'draft'
|
@vote.state = 'draft'
|
||||||
@vote.save
|
@vote.save
|
||||||
|
|
@ -195,7 +200,8 @@ end
|
||||||
post '/votes/:id/close' do
|
post '/votes/:id/close' do
|
||||||
require_login
|
require_login
|
||||||
find_vote
|
find_vote
|
||||||
redirect '/votes/' + @vote.secure_id unless @vote.state == 'open' and @vote.users.exists?(current_user.id)
|
require_organizer
|
||||||
|
require_open_vote
|
||||||
@vote.state = 'closed'
|
@vote.state = 'closed'
|
||||||
@vote.save
|
@vote.save
|
||||||
redirect '/votes/' + @vote.secure_id
|
redirect '/votes/' + @vote.secure_id
|
||||||
|
|
@ -204,7 +210,8 @@ end
|
||||||
post '/votes/:id/reopen' do
|
post '/votes/:id/reopen' do
|
||||||
require_login
|
require_login
|
||||||
find_vote
|
find_vote
|
||||||
redirect '/votes/' + @vote.secure_id unless @vote.state == 'closed' and @vote.users.exists?(current_user.id)
|
require_organizer
|
||||||
|
require_closed_vote
|
||||||
@vote.state = 'open'
|
@vote.state = 'open'
|
||||||
@vote.save
|
@vote.save
|
||||||
redirect '/votes/' + @vote.secure_id
|
redirect '/votes/' + @vote.secure_id
|
||||||
|
|
@ -224,7 +231,7 @@ end
|
||||||
post '/votes/:id/organizers' do
|
post '/votes/:id/organizers' do
|
||||||
require_login
|
require_login
|
||||||
find_vote
|
find_vote
|
||||||
redirect '/votes/' + @vote.secure_id unless @vote.users.exists?(current_user.id)
|
require_organizer
|
||||||
user = User.find_by(email: params[:email])
|
user = User.find_by(email: params[:email])
|
||||||
@vote.users << user
|
@vote.users << user
|
||||||
redirect '/votes/' + @vote.secure_id
|
redirect '/votes/' + @vote.secure_id
|
||||||
|
|
@ -233,7 +240,7 @@ end
|
||||||
post '/votes/:id/delete' do
|
post '/votes/:id/delete' do
|
||||||
require_login
|
require_login
|
||||||
find_vote
|
find_vote
|
||||||
redirect '/votes/' + @vote.secure_id unless @vote.users.exists?(current_user.id)
|
require_organizer
|
||||||
@vote.destroy
|
@vote.destroy
|
||||||
redirect '/'
|
redirect '/'
|
||||||
end
|
end
|
||||||
|
|
@ -254,4 +261,20 @@ helpers do
|
||||||
def find_vote(params)
|
def find_vote(params)
|
||||||
@vote = Vote.find_by(secure_id: params[:id])
|
@vote = Vote.find_by(secure_id: params[:id])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def require_organizer
|
||||||
|
redirect '/votes/' + @vote.secure_id unless @vote.users.exists?(current_user.id)
|
||||||
|
end
|
||||||
|
|
||||||
|
def require_draft_vote
|
||||||
|
redirect '/votes/' + @vote.secure_id unless @vote.state == 'draft'
|
||||||
|
end
|
||||||
|
|
||||||
|
def require_open_vote
|
||||||
|
redirect '/votes/' + @vote.secure_id unless @vote.state == 'open'
|
||||||
|
end
|
||||||
|
|
||||||
|
def require_closed_vote
|
||||||
|
redirect '/votes/' + @vote.secure_id unless @vote.state == 'closed'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue