Sfoglia il codice sorgente

kleine änderungen und ergebnisse

hmt 8 anni fa
parent
commit
a50d9bc99f
3 ha cambiato i file con 50 aggiunte e 4 eliminazioni
  1. 23 0
      specs/route_spec.rb
  2. 25 2
      sv.rb
  3. 2 2
      views/hashid.slim

+ 23 - 0
specs/route_spec.rb

@@ -221,4 +221,27 @@ describe "verlauf schüler" do
       end
     end
   end
+
+  describe "nach der Wahl" do
+    before do
+      Schueler.create(:hashid => "a", :vorname => "A", :klasse => "A1", :schuko => true, :sprecher => true)
+      Sprecher.create(:sprecher_id => "a")
+      Sprecher.create(:sprecher_id => "a")
+      Schueler.create(:hashid => "b", :vorname => "B", :klasse => "B1", :schuko => true, :sprecher => true)
+      Schuko.create(:schuko_id => "b")
+      Verbindungslehrer.create(:lehrer_id => 1)
+      Verbindungslehrer.create(:lehrer_id => 1)
+    end
+
+    it "Korrekte Wahlergebnisse nach Auszählung" do
+      Lehrer.first.lehrer_stimmen.count.must_equal 2
+      Lehrer[2].lehrer_stimmen.count.must_equal 0
+      a = Schueler["a"]
+      a.sprecher_stimmen.count.must_equal 2
+      a.schuko_stimmen.count.must_equal 0
+      b = Schueler["b"]
+      b.sprecher_stimmen.count.must_equal 0
+      b.schuko_stimmen.count.must_equal 1
+    end
+  end
 end

+ 25 - 2
sv.rb

@@ -13,8 +13,13 @@ if ENV['RACK_ENV'] != "test"
   DB = Sequel.connect(:adapter=>'postgres', :host=>ENV['SV_HOST'], :database=>ENV['SV_DB'], :user=>ENV['SV_USER'], :password=>ENV['SV_PASSWORD'], :sslmode => "require")
 end
 
-class Schueler < Sequel::Model(:schueler);end
-class Lehrer < Sequel::Model(:lehrer);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
+end
+class Lehrer < Sequel::Model(:lehrer)
+  one_to_many :lehrer_stimmen, :key => :lehrer_id, :class => :Verbindungslehrer
+end
 class Info < Sequel::Model(:infos);end
 class Sprecher < Sequel::Model(:sprecher);end
 class Schuko < Sequel::Model(:schuko);end
@@ -54,6 +59,12 @@ class SV < Sinatra::Application
     'Es ist ein Fehler aufgetreten. Sollte das nochmal passieren, schreiben Sie mir doch bitte eine eMail: bk@hmt.im'
   end
 
+  before do
+    if session[:flash] && session[:flash][0] == 0
+      logger.info session[:flash][1]
+    end
+  end
+
   get '/' do
     infos = Info.all
     slim :home, :locals => {:infos => infos}
@@ -99,6 +110,18 @@ class SV < Sinatra::Application
     slim :info, :locals => {:infos => infos}
   end
 
+  get '/ergebnis' do
+    protected!
+    sprecher, schuko, lehrer, waehler = [], [], [], 0
+    DB.transaction do
+      sprecher = Schueler.where(:sprecher => true).all
+      schuko = Schueler.where(:schuko => true).all
+      lehrer = Lehrer.all
+      waehler = Schueler.where(:gewaehlt => true).count
+    end
+    slim :ergebnis, :locals => {:sprecher => sprecher, :schuko => schuko, :lehrer => lehrer, :waehler => waehler}
+  end
+
   post "/hashid" do
     redirect to("/#{params[:hashid]}")
   end

+ 2 - 2
views/hashid.slim

@@ -109,7 +109,7 @@ h1 SV-Wahlen 2016
           |Sie können
           b<>zwei
           |Personen wählen:
-          -sprecher=Schueler.where(:sprecher).all
+          -sprecher=Schueler.where(:sprecher).all.shuffle
           -if sprecher.count > 0
             .form-group
               .col-sm-offset-1.col-sm-9
@@ -126,7 +126,7 @@ h1 SV-Wahlen 2016
           |Sie können
           b<>acht
           |Personen wählen:
-          -schuko=Schueler.where(:schuko).all
+          -schuko=Schueler.where(:schuko).all.shuffle
           -if schuko.count > 0
             .form-group
               .col-sm-offset-1.col-sm-9