Selaa lähdekoodia

neue Assoziation: Schülerfotos. Schueler#foto gibt das Foto als jpg-String zurück

hmt 9 vuotta sitten
vanhempi
sitoutus
7cbf9aeb7e
2 muutettua tiedostoa jossa 46 lisäystä ja 24 poistoa
  1. 40 24
      lib/schild.rb
  2. 6 0
      specs/schueler_spec.rb

+ 40 - 24
lib/schild.rb

@@ -58,31 +58,31 @@ end
 
 # Mixin für Notenbezeichnungen
 module NotenHelfer
-    # Notenbezeichnung als String
-    def note_s(ziffer)
-      case ziffer
-      when "1", "1+", "1-"
-        "sehr gut"
-      when "2", "2+", "2-"
-        "gut"
-      when "3", "3+", "3-"
-        "befriedigend"
-      when "4", "4+", "4-"
-        "ausreichend"
-      when "5", "5+", "5-"
-        "mangelhaft"
-      when "6"
-        "ungenügend"
-      when 'NB'
-        "––––––"
-      when "E1"
-        "mit besonderem Erfolg teilgenommen"
-      when "E2"
-        "mit Erfolg teilgenommen"
-      when 'E3'
-        "teilgenommen"
-      end
+  # Notenbezeichnung als String
+  def note_s(ziffer)
+    case ziffer
+    when "1", "1+", "1-"
+      "sehr gut"
+    when "2", "2+", "2-"
+      "gut"
+    when "3", "3+", "3-"
+      "befriedigend"
+    when "4", "4+", "4-"
+      "ausreichend"
+    when "5", "5+", "5-"
+      "mangelhaft"
+    when "6"
+      "ungenügend"
+    when 'NB'
+      "––––––"
+    when "E1"
+      "mit besonderem Erfolg teilgenommen"
+    when "E2"
+      "mit Erfolg teilgenommen"
+    when 'E3'
+      "teilgenommen"
     end
+  end
 end
 
 # Das Schild Modul, das alle Klassen für die Datenbankanbindung bereitstellt
@@ -99,6 +99,7 @@ module Schild
     one_to_one :abi_abschluss, :class => :AbiAbschluss
     one_to_many :abi_abschluss_leistungen, :class => :AbiAbschlussFaecher
     one_to_many :vermerke, :class => :Vermerke
+    one_to_one :schuelerfoto, :class => :Schuelerfotos
   end
 
   # Dient als Assoziation für Schüler und deren Klassenbezeichnung etc.
@@ -163,6 +164,11 @@ module Schild
     many_to_one :Schueler
   end
 
+  # Schülerfotos als jpg
+  class Schuelerfotos < Sequel::Model(:schuelerfotos)
+    one_to_one :schueler
+  end
+
   # Schul-Tabelle
   class Schule < Sequel::Model(:eigeneschule)
   end
@@ -219,9 +225,15 @@ module SchildErweitert
       (datum.year - geb.year - ((datum.month > geb.month || (datum.month == geb.month && datum.day >= geb.day)) ? 0 : 1)) >= 18
     end
 
+    # fragt ab, ob in Schild ein Foto als hinterlegt eingetragen ist.
     def foto_vorhanden?
       self.foto_vorhanden == "+"
     end
+
+    # gibt, wenn vorhanden, ein Foto als jpg-String zurück, ansonsten nil.
+    def foto
+      self.foto_vorhanden? ? self.schuelerfoto.foto : nil
+    end
   end
 
   # Dient als Assoziation für Schüler und deren Klassenbezeichnung etc.
@@ -388,6 +400,10 @@ module SchildErweitert
     include SchildTypeSaver
   end
 
+  class Schuelerfotos < Schild::Schuelerfotos
+    include SchildTypeSaver
+  end
+
   # Schul-Tabelle mit vereinfachtem Zugriff auf Datenfelder.
   class Schule < Schild::Schule
     include SchildTypeSaver

+ 6 - 0
specs/schueler_spec.rb

@@ -117,6 +117,12 @@ describe Schueler do
     end
 
     #schuelerabifaecher kann wegen mangelnder daten nicht getestet werden
+
+    # in der Testdatenbank sind leider keine Schülerfotos
+    it 'gibt das Schülerfoto als jpg zurück' do
+      skip
+      @sm.foto.must_be_instance_of String
+    end
   end
 
   describe 'gibt die korrekte Anzahl von Schülern über Klasse zurück' do