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
|
||||
require_login
|
||||
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.description = params[:description]
|
||||
@vote.save
|
||||
|
|
@ -156,7 +157,8 @@ end
|
|||
post '/votes/:id/candidates' do
|
||||
require_login
|
||||
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],
|
||||
description: params[:description])
|
||||
@candidate.vote = @vote
|
||||
|
|
@ -167,7 +169,8 @@ end
|
|||
post '/votes/:id/candidates/:cid/delete' do
|
||||
require_login
|
||||
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.destroy
|
||||
redirect '/votes/' + @vote.secure_id
|
||||
|
|
@ -176,7 +179,8 @@ end
|
|||
post '/votes/:id/open' do
|
||||
require_login
|
||||
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.save
|
||||
redirect '/votes/' + @vote.secure_id
|
||||
|
|
@ -185,7 +189,8 @@ end
|
|||
post '/votes/:id/draft' do
|
||||
require_login
|
||||
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.state = 'draft'
|
||||
@vote.save
|
||||
|
|
@ -195,7 +200,8 @@ end
|
|||
post '/votes/:id/close' do
|
||||
require_login
|
||||
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.save
|
||||
redirect '/votes/' + @vote.secure_id
|
||||
|
|
@ -204,7 +210,8 @@ end
|
|||
post '/votes/:id/reopen' do
|
||||
require_login
|
||||
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.save
|
||||
redirect '/votes/' + @vote.secure_id
|
||||
|
|
@ -224,7 +231,7 @@ end
|
|||
post '/votes/:id/organizers' do
|
||||
require_login
|
||||
find_vote
|
||||
redirect '/votes/' + @vote.secure_id unless @vote.users.exists?(current_user.id)
|
||||
require_organizer
|
||||
user = User.find_by(email: params[:email])
|
||||
@vote.users << user
|
||||
redirect '/votes/' + @vote.secure_id
|
||||
|
|
@ -233,7 +240,7 @@ end
|
|||
post '/votes/:id/delete' do
|
||||
require_login
|
||||
find_vote
|
||||
redirect '/votes/' + @vote.secure_id unless @vote.users.exists?(current_user.id)
|
||||
require_organizer
|
||||
@vote.destroy
|
||||
redirect '/'
|
||||
end
|
||||
|
|
@ -254,4 +261,20 @@ helpers do
|
|||
def find_vote(params)
|
||||
@vote = Vote.find_by(secure_id: params[:id])
|
||||
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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue