complete voting portal

adds 'import votes' to rooms
This commit is contained in:
Kiara Grouwstra 2023-01-24 14:28:14 +01:00
parent 16d2ec77ed
commit 4ab670ed87
9 changed files with 69 additions and 14 deletions

View File

@ -1,5 +1,5 @@
class MainController < ApplicationController
before_action :set_user_room, only: [:join, :users, :stream]
before_action :set_user_room, only: [:join, :users, :stream, :stemmen]
def index
end
@ -33,14 +33,18 @@ class MainController < ApplicationController
end
def stemmen
@votes = Vote.where(room_id: @room.id, user_id: @user.id)
@votes = Vote.where(room_id: @room.id, user_id: @user.id).order(created_at: :desc)
render :votes
end
private
def set_user_room
@user = User.find_by token: params[:token]
@room = Room.find(@user.room_id)
if @user.nil?
redirect_to 'https://bij1.org/', status: :unauthorized
else
@room = Room.find(@user.room_id)
end
end
end

View File

@ -141,6 +141,9 @@ class UsersController < ApplicationController
# DELETE /rooms/1/users.json
def destroy_all
@users.each do |user|
Vote.where(user_id: user.id).each do |vote|
vote.destroy
end
user.destroy
end
respond_to do |format|

View File

@ -1,16 +1,16 @@
class UsersController < ApplicationController
class VotesController < ApplicationController
http_basic_authenticate_with name: Rails.application.config.admin_name,
password: Rails.application.config.admin_password
before_action :set_room, only: [:bulk]
# GET /rooms/:room_id/users/bulk
# GET /rooms/:room_id/votes/bulk
def bulk
@sample = "voter_email,short_name,voter_login_id,voter_password\ninfo@bij1.org,mijn-stemming,1,abcdABCD1234\n"
@sample = "info@bij1.org,mijn-stemming,1,abcdABCD1234"
end
# POST /rooms/:room_id/users/bulk
# POST /rooms/:room_id/users/bulk.json
# POST /rooms/:room_id/votes/bulk
# POST /rooms/:room_id/votes/bulk.json
def create_bulk
room_id = params[:room_id]
votes_csv = params[:votes_csv]

View File

@ -3,14 +3,14 @@
<h1>Stemmingen</h1>
<ul>
<% @votes.each do |vote| %>
<% @votes.each do |vote| %>
<li>
<a href="https://stemmen.bij1.org/helios/e/<%= vote.short_name %>/vote?voter_id=<%= vote.voter_login_id %>&password=<%= vote.voter_password %>">
<%= vote.short_name %>
<a href="https://stemmen.bij1.org/helios/e/<%= vote.election_slug %>/vote?voter_id=<%= vote.voter_login_id %>&password=<%= vote.voter_password %>">
<%= vote.election_slug %>
</a>
</li>
<% end %>
</url>
</ul>
<br>

View File

@ -32,5 +32,7 @@
<%= link_to 'Show Users', room_users_path(@room) %> |
<%= link_to 'Edit', edit_room_path(@room) %> |
<%= link_to 'Import Users', bulk_new_room_users_path, method: :get %> |
<%= link_to 'Import Votes', bulk_new_room_votes_path, method: :get %> |
<%= link_to 'Present Users', room_present_users_path(@room) %> |
<%= link_to 'Back', rooms_path %>

View File

@ -1,7 +1,7 @@
<h1>Bulk Users: <%= @room.name %></h1>
<p>
csv formaat voor bulk import: email,name,moderator,vote,proxy,invited,presence. kolom volgorde maakt niet uit. komma-separated met header.
csv formaat voor bulk import: <code>email,name,moderator,vote,proxy,invited,presence</code>. kolom volgorde maakt niet uit. komma-separated met header.
<% if false %>
download een sample <%= link_to "hier", "/bbb.csv" %>.
<% end %>

View File

@ -0,0 +1,46 @@
<h1>Bulk Votes: <%= @room.name %></h1>
<p>
csv formaat voor bulk import, in die volgorde, komma-separated en zonder header: <code>voter_email,short_name,voter_login_id,voter_password</code>
<% if false %>
download een sample <%= link_to "hier", "/votes.csv" %>.
<% end %>
</p>
<ul>
<li><code>voter_email</code> is het email adres van de stemmer, om de credentials terug te koppelen aan het juiste lid.</li>
<li><code>short_name</code> is de naam van de stemming</li>
<li><code>voter_login_id</code> is de login id van de stemmer in het stem systeem</li>
<li><code>voter_password</code> is het wachtwoord van de stemmer in het stem systeem</li>
</ul>
<p>
De gegevens hiervoor zijn te verkrijgen via commando, gegeven SSH toegang tot de database server:
</p>
<ul>
<li>
<code>ssh db.bij1.net "sudo psql -U postgres helios -c \"SELECT voter_email, short_name, voter_login_id, voter_password FROM helios_voter JOIN helios_election ON election_id = helios_election.id WHERE helios_election.uuid IN ('UUID1', 'UUID2', ...);\" -tAF,"</code>
</li>
</ul>
<p>
... waar <code>'UUID1', 'UUID2', ...</code> vervangen dient te worden door de UUIDs van de stemmingen van deze kamer, in de URLs te vinden in <a href="https://stemmen.bij1.org/helios/elections/administered">Helios</a>.
</p>
<p>
Gebruikers vinden vervolgens hun stem links op de volgende URL, waar <code>TOKEN</code> dient te worden vervangen door hun Ingang token:
</p>
<ul>
<li>
<code>https://vergadering.bij1.org/ingang/TOKEN/stemmen</code>
</li>
</ul>
<%= form_with(local: true) do |form| %>
<div class="field">
<%= form.text_area :votes_csv, value: @sample %>
</div>
<div class="actions">
<%= form.submit %>
</div>
<%= link_to 'Back', room_users_path %>
<% end %>

View File

@ -1,7 +1,6 @@
class CreateVotes < ActiveRecord::Migration[6.0]
def change
create_table :votes do |t|
t.primary_key :id
t.references :room, null: false, foreign_key: true
t.references :user, null: false, foreign_key: true
t.string :election_slug

1
public/votes.csv Normal file
View File

@ -0,0 +1 @@
info@bij1.org,mijn-stemming,1,abcdABCD1234
1 info@bij1.org mijn-stemming 1 abcdABCD1234