schild 0.4.2 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7188395c3591fa7a646c4dd4e653144124bf978e
4
- data.tar.gz: aa08080c0aecca22f6b2bdb0e96f35c89f81c1de
3
+ metadata.gz: 806113777b9bbc25eb38105d179742884490e49a
4
+ data.tar.gz: a0828e0a253cab9379e28c21e09635d1cfd74a46
5
5
  SHA512:
6
- metadata.gz: ddaddbd639bccf00b6d5705c35c836e8080b09ff8471e6674045543947620298df280fd229217094c82e7ea12d9f8096b7e2cc522aa9c229ef34bc08dc426765
7
- data.tar.gz: f25838637bdd24dde2f745dd09de5b4535b2a7c4b5eb4584e01a28955c1acf29652263affeb31ed9a6c48413201ffa5f5d821a324fcb44e92e140c5e7b573357
6
+ metadata.gz: 633f4aeda86b695e08e54187ef7f0fa1eb43a4d37b68ed6244104e918471d581450c9a87797edc4eb5dd8d2a49490e443a4d68ea22d4405495c3249d8d8bf7a3
7
+ data.tar.gz: f9f3ebbeb374cb3f0ebca5bd5698fb43bf3a2e55edc4eddcdbece887a4bbc333549cc4989e9786f7d1022ccf76283afbb5acf5f90112fb2c39ff1ef6969fbd5b
@@ -1,3 +1,3 @@
1
1
  module Schild
2
- VERSION = "0.4.2"
2
+ VERSION = "0.5.0"
3
3
  end
data/lib/schild.rb CHANGED
@@ -44,8 +44,9 @@ module SchildTypeSaver
44
44
  def create_null_object(klass, column)
45
45
  k = DB.schema_type_class(klass.db_schema[column][:type])
46
46
  if k.class == Array
47
- # Sequel stellt :datetime als [Time, DateTime] dar
48
- DateTime.new(1899)
47
+ # Sequel stellt :datetime als [Time, DateTime] dar, deswegen die Abfrage nach Array
48
+ # Schild verwendet Time Objekte, wir machen das auch
49
+ Time.new(1899)
49
50
  elsif k == Integer
50
51
  0
51
52
  else
@@ -57,31 +58,31 @@ end
57
58
 
58
59
  # Mixin für Notenbezeichnungen
59
60
  module NotenHelfer
60
- # Notenbezeichnung als String
61
- def note_s(ziffer)
62
- case ziffer
63
- when "1", "1+", "1-"
64
- "sehr gut"
65
- when "2", "2+", "2-"
66
- "gut"
67
- when "3", "3+", "3-"
68
- "befriedigend"
69
- when "4", "4+", "4-"
70
- "ausreichend"
71
- when "5", "5+", "5-"
72
- "mangelhaft"
73
- when "6"
74
- "ungenügend"
75
- when 'NB'
76
- "––––––"
77
- when "E1"
78
- "mit besonderem Erfolg teilgenommen"
79
- when "E2"
80
- "mit Erfolg teilgenommen"
81
- when 'E3'
82
- "teilgenommen"
83
- end
61
+ # Notenbezeichnung als String
62
+ def note_s(ziffer)
63
+ case ziffer
64
+ when "1", "1+", "1-"
65
+ "sehr gut"
66
+ when "2", "2+", "2-"
67
+ "gut"
68
+ when "3", "3+", "3-"
69
+ "befriedigend"
70
+ when "4", "4+", "4-"
71
+ "ausreichend"
72
+ when "5", "5+", "5-"
73
+ "mangelhaft"
74
+ when "6"
75
+ "ungenügend"
76
+ when 'NB'
77
+ "––––––"
78
+ when "E1"
79
+ "mit besonderem Erfolg teilgenommen"
80
+ when "E2"
81
+ "mit Erfolg teilgenommen"
82
+ when 'E3'
83
+ "teilgenommen"
84
84
  end
85
+ end
85
86
  end
86
87
 
87
88
  # Das Schild Modul, das alle Klassen für die Datenbankanbindung bereitstellt
@@ -89,11 +90,6 @@ module Schild
89
90
  # ist die Datenbank-Verbindung. Alle Daten können über diese Konstante abgerufen werden
90
91
  DB = Sequel.connect(:adapter=>ENV['S_ADAPTER'], :host=>ENV['S_HOST'], :user=>ENV['S_USER'], :password=>ENV['S_PASSWORD'], :database=>ENV['S_DB'])
91
92
 
92
- # Stellt eine Verbindung zu einem Schild-Server her. Sollte nur aufgerufen werden, wenn wechselnde Verbindungen nötig sind.
93
- def self.connect
94
- Sequel.connect(:adapter=>ENV['S_ADAPTER'], :host=>ENV['S_HOST'], :user=>ENV['S_USER'], :password=>ENV['S_PASSWORD'], :database=>ENV['S_DB'])
95
- end
96
-
97
93
  # Stellt die Schüler-Tabelle samt Assoziationen bereit.
98
94
  class Schueler < Sequel::Model(:schueler)
99
95
  many_to_one :fachklasse, :class => :Fachklasse, :key => :Fachklasse_ID
@@ -103,6 +99,7 @@ module Schild
103
99
  one_to_one :abi_abschluss, :class => :AbiAbschluss
104
100
  one_to_many :abi_abschluss_leistungen, :class => :AbiAbschlussFaecher
105
101
  one_to_many :vermerke, :class => :Vermerke
102
+ one_to_one :schuelerfoto, :class => :Schuelerfotos
106
103
  end
107
104
 
108
105
  # Dient als Assoziation für Schüler und deren Klassenbezeichnung etc.
@@ -167,6 +164,11 @@ module Schild
167
164
  many_to_one :Schueler
168
165
  end
169
166
 
167
+ # Schülerfotos als jpg
168
+ class Schuelerfotos < Sequel::Model(:schuelerfotos)
169
+ one_to_one :schueler
170
+ end
171
+
170
172
  # Schul-Tabelle
171
173
  class Schule < Sequel::Model(:eigeneschule)
172
174
  end
@@ -217,9 +219,21 @@ module SchildErweitert
217
219
  self.volljaehrig == "+"
218
220
  end
219
221
 
222
+ # gibt an, ob der Schüler zu einem Zeitpunkt *datum* volljährig war.
223
+ def volljaehrig_bei?(datum)
224
+ geb, datum = self.geburtsdatum.to_date, datum.to_date
225
+ (datum.year - geb.year - ((datum.month > geb.month || (datum.month == geb.month && datum.day >= geb.day)) ? 0 : 1)) >= 18
226
+ end
227
+
228
+ # fragt ab, ob in Schild ein Foto als hinterlegt eingetragen ist.
220
229
  def foto_vorhanden?
221
230
  self.foto_vorhanden == "+"
222
231
  end
232
+
233
+ # gibt, wenn vorhanden, ein Foto als jpg-String zurück, ansonsten nil.
234
+ def foto
235
+ self.foto_vorhanden? ? self.schuelerfoto.foto : nil
236
+ end
223
237
  end
224
238
 
225
239
  # Dient als Assoziation für Schüler und deren Klassenbezeichnung etc.
@@ -386,6 +400,10 @@ module SchildErweitert
386
400
  include SchildTypeSaver
387
401
  end
388
402
 
403
+ class Schuelerfotos < Schild::Schuelerfotos
404
+ include SchildTypeSaver
405
+ end
406
+
389
407
  # Schul-Tabelle mit vereinfachtem Zugriff auf Datenfelder.
390
408
  class Schule < Schild::Schule
391
409
  include SchildTypeSaver
@@ -24,7 +24,7 @@ describe Schueler do
24
24
  it 'gibt Konferenzdatum zurück (Lernabschnitte)' do
25
25
  # offenbar keine in der Testdatenbank eingetragen
26
26
  # deshalb Default-Objekt anfordern
27
- @sm.halbjahr(2013,1).konferenzdatum.must_be_instance_of DateTime
27
+ @sm.halbjahr(2013,1).konferenzdatum.must_be_instance_of Time
28
28
  end
29
29
 
30
30
  it 'gibt berufsbezogene Fächer aus den angegebenen Lernabschnitten zurück' do
@@ -117,6 +117,12 @@ describe Schueler do
117
117
  end
118
118
 
119
119
  #schuelerabifaecher kann wegen mangelnder daten nicht getestet werden
120
+
121
+ # in der Testdatenbank sind leider keine Schülerfotos
122
+ it 'gibt das Schülerfoto als jpg zurück' do
123
+ skip
124
+ @sm.foto.must_be_instance_of String
125
+ end
120
126
  end
121
127
 
122
128
  describe 'gibt die korrekte Anzahl von Schülern über Klasse zurück' do
@@ -138,6 +144,11 @@ describe Schueler do
138
144
  @sm.volljaehrig?.must_equal true
139
145
  end
140
146
 
147
+ it 'gibt an, ob Schüler im Vergelich zu *datum* volljährig ist' do
148
+ @sm.volljaehrig_bei?(@sm.halbjahr(2013,2).zeugnis_datum).must_equal false
149
+ Schueler[24].volljaehrig_bei?(Time.new).must_equal true
150
+ end
151
+
141
152
  it 'gibt zurück, ob ein Foto vorhanden ist' do
142
153
  @sm.foto_vorhanden?.must_equal false
143
154
  end
@@ -7,8 +7,8 @@ describe Schueler do
7
7
  @sm = Schueler.where(:Status => 2, :Geloescht => "-", :Gesperrt => "-").first
8
8
  end
9
9
 
10
- it 'gibt ein DateTime bei Daten zurück' do
11
- @sm.geburtsdatum.must_be_instance_of DateTime
10
+ it 'gibt ein Time-Objekt bei Daten zurück' do
11
+ @sm.geburtsdatum.must_be_instance_of Time
12
12
  end
13
13
 
14
14
  it 'gibt String für Text zurück' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schild
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - HMT
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-30 00:00:00.000000000 Z
11
+ date: 2015-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler