|
@@ -1,8 +1,8 @@
|
|
|
require "sequel"
|
|
|
require "sinatra"
|
|
|
-require 'newrelic_rpm'
|
|
|
+require 'newrelic_rpm' unless development? || testing?
|
|
|
require "slim"
|
|
|
-require "pry"
|
|
|
+require "pry" unless production?
|
|
|
require "envyable"
|
|
|
require "hashids"
|
|
|
require "set"
|
|
@@ -14,16 +14,27 @@ if ENV['RACK_ENV'] != "test"
|
|
|
end
|
|
|
|
|
|
class Schueler < Sequel::Model(:schueler)
|
|
|
- one_to_many :sprecher_stimmen, :key => :sprecher_id, :class => :Sprecher
|
|
|
- one_to_many :schuko_stimmen, :key => :schuko_id, :class => :Schuko
|
|
|
+ one_to_many :sprecher_stimmen, :class => :Sprecher
|
|
|
+ one_to_many :schuko_stimmen, :class => :Schuko
|
|
|
end
|
|
|
+
|
|
|
class Lehrer < Sequel::Model(:lehrer)
|
|
|
- one_to_many :lehrer_stimmen, :key => :lehrer_id, :class => :Verbindungslehrer
|
|
|
+ one_to_many :lehrer_stimmen, :class => :Verbindungslehrer
|
|
|
end
|
|
|
+
|
|
|
class Info < Sequel::Model(:infos);end
|
|
|
-class Sprecher < Sequel::Model(:sprecher);end
|
|
|
-class Schuko < Sequel::Model(:schuko);end
|
|
|
-class Verbindungslehrer < Sequel::Model(:verbindungslehrer);end
|
|
|
+
|
|
|
+class Sprecher < Sequel::Model(:sprecher)
|
|
|
+ many_to_one :schueler, :class => :Schueler
|
|
|
+end
|
|
|
+
|
|
|
+class Schuko < Sequel::Model(:schuko)
|
|
|
+ many_to_one :schueler, :class => :Schueler
|
|
|
+end
|
|
|
+
|
|
|
+class Verbindungslehrer < Sequel::Model(:verbindungslehrer)
|
|
|
+ many_to_one :lehrer, :key => :lehrer_id, :class => :Lehrer
|
|
|
+end
|
|
|
|
|
|
class SV < Sinatra::Application
|
|
|
configure do
|
|
@@ -66,6 +77,9 @@ class SV < Sinatra::Application
|
|
|
end
|
|
|
|
|
|
get '/' do
|
|
|
+ if Time.now > time_for('Oct 3, 2016, 18:00')
|
|
|
+ redirect to("/ergebnis")
|
|
|
+ end
|
|
|
infos = Info.all
|
|
|
slim :home, :locals => {:infos => infos}
|
|
|
end
|
|
@@ -111,7 +125,7 @@ class SV < Sinatra::Application
|
|
|
end
|
|
|
|
|
|
get '/ergebnis' do
|
|
|
- protected!
|
|
|
+ protected! if Time.now < time_for('Oct 3, 2016, 18:00')
|
|
|
sprecher, schuko, lehrer, waehler = [], [], [], 0
|
|
|
DB.transaction do
|
|
|
sprecher = Schueler.where(:sprecher => true).all
|
|
@@ -122,6 +136,15 @@ class SV < Sinatra::Application
|
|
|
slim :ergebnis, :locals => {:sprecher => sprecher, :schuko => schuko, :lehrer => lehrer, :waehler => waehler}
|
|
|
end
|
|
|
|
|
|
+ post "/hashcheck" do
|
|
|
+ redirect back if params[:stimm_hash].nil?
|
|
|
+ arrays = params[:stimm_hash].split("l").map{|a| hashids.decode a}
|
|
|
+ sprecher = Sprecher.where(:id => arrays[0])
|
|
|
+ schuko = Schuko.where(:id => arrays[1])
|
|
|
+ lehrer = Verbindungslehrer.where(:id => arrays[2])
|
|
|
+ slim :hashcheck, :locals => {:sprecher => sprecher, :schuko => schuko, :lehrer => lehrer}
|
|
|
+ end
|
|
|
+
|
|
|
post "/hashid" do
|
|
|
redirect to("/#{params[:hashid]}")
|
|
|
end
|
|
@@ -168,7 +191,7 @@ class SV < Sinatra::Application
|
|
|
stimmabgabe = DB.transaction do
|
|
|
sprecher && sprecher.to_set.each do |s|
|
|
|
if Schueler[s].sprecher
|
|
|
- sprecher_ids << DB[:sprecher].insert(:sprecher_id => s)
|
|
|
+ sprecher_ids << DB[:sprecher].insert(:schueler_id => s)
|
|
|
else
|
|
|
raise Sequel::Rollback
|
|
|
session[:flash] = [0, "Es wurde ein nichtaufgestellter Sprecher gewählt"]
|
|
@@ -177,7 +200,7 @@ class SV < Sinatra::Application
|
|
|
end
|
|
|
schuko && schuko.to_set.each do |s|
|
|
|
if Schueler[s].schuko
|
|
|
- schuko_ids << DB[:schuko].insert(:schuko_id => s)
|
|
|
+ schuko_ids << DB[:schuko].insert(:schueler_id => s)
|
|
|
else
|
|
|
raise Sequel::Rollback
|
|
|
session[:flash] = [0, "Es wurde ein nichtaufgestellter Vertreter zur Schulkonferenz gewählt"]
|