schild 0.3.4 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c3caf8e80d88d0955f138c05105ef13a85625b72
4
- data.tar.gz: 39f1ee756a916f12330c5c8ba3641b3a95718664
3
+ metadata.gz: 1061506b5c9dd404b7d55a8bc288b122ae84615f
4
+ data.tar.gz: 5eb3178ddf29a7d1d04a5a73254999efd38c5503
5
5
  SHA512:
6
- metadata.gz: 66005a333777272b7135204dc9384e6aad254e8381296cb9a88a9aa3719b6c793370ae4d72591fe76a2244e22f428092ab2a31ee74b2602ef5faa11e2f16384c
7
- data.tar.gz: 19cbce364c3c874b4d1231f42ca7c1dde1634c141b45b06b85cb31adca5af98bd71e75d4afe7a45077689d639832bba68a8c013f35b608e94412b1e0987a616d
6
+ metadata.gz: 7fb3c939ffd7798ec9db6ba5dbf65610d5bc6680c6258e71a70ca5320ce81197e2ec47330cb2162e1269ee5884a51bd99d0754e67da0e40ee52fac486be17103
7
+ data.tar.gz: ff70e93dcb964fd75c1d4c6efbf26b5363162303d62bb7a41a27c6d58e12256a461ec0b34bf6fcc38cf50cd2ec96c887f73cff6ff3632abf3eef8c4d7245a991
data/README.md CHANGED
@@ -62,6 +62,14 @@ require 'schild'
62
62
  include Schild
63
63
  ```
64
64
 
65
+ Um jedoch alle Hilfsmethoden nutzen zu können, die das `schild`-Gem zur
66
+ Verfügung stellt, noch besser folgenden Befehl verwenden, der seit
67
+ Version 0.4.0 zur Verfügung steht:
68
+
69
+ ```ruby
70
+ include SchildErweitert
71
+ ```
72
+
65
73
  Jetzt können praktisch alle Tabellen abgerufen und Daten ausgelesen werden. Dabei ist das DB-Objekt die Datenbank:
66
74
 
67
75
  ```ruby
@@ -1,3 +1,3 @@
1
1
  module Schild
2
- VERSION = "0.3.4"
2
+ VERSION = "0.4.0"
3
3
  end
data/lib/schild.rb CHANGED
@@ -67,10 +67,60 @@ module Schild
67
67
 
68
68
  # Stellt die Schüler-Tabelle samt Assoziationen bereit.
69
69
  class Schueler < Sequel::Model(:schueler)
70
- include SchildTypeSaver
71
-
72
70
  many_to_one :fachklasse, :class => :Fachklasse, :key => :Fachklasse_ID
73
71
  one_to_many :abschnitte, :class => :Abschnitt
72
+ one_to_one :bk_abschluss, :class => :BKAbschluss
73
+ one_to_many :bk_abschluss_leistungen, :class => :BKAbschlussFaecher
74
+ end
75
+
76
+ # Dient als Assoziation für Schüler und deren Klassenbezeichnung etc.
77
+ class Fachklasse < Sequel::Model(:eigeneschule_fachklassen)
78
+ one_to_many :schueler
79
+ end
80
+
81
+ # Assoziation für Lehrer, hauptsächlich für Klassenlehrer
82
+ class Klassenlehrer < Sequel::Model(:k_lehrer)
83
+ one_to_one :abschnitt, :primary_key=>:Kuerzel, :key=>:KlassenLehrer
84
+ end
85
+
86
+ # Ist die Assoziation, die Halbjahre, sog. Abschnitte zurückgibt.
87
+ class Abschnitt < Sequel::Model(:schuelerlernabschnittsdaten)
88
+ many_to_one :schueler, :class => :Schueler, :key => :Schueler_ID
89
+ one_to_many :noten, :class => :Noten
90
+ many_to_one :klassenlehrer, :class => :Klassenlehrer, :primary_key=>:Kuerzel, :key=>:KlassenLehrer
91
+ end
92
+
93
+ # Assoziation für Noten
94
+ class Noten < Sequel::Model(:schuelerleistungsdaten)
95
+ many_to_one :abschnitt, :class => :Abschnitt, :key => :Abschnitt_ID
96
+ many_to_one :fach, :class => :Faecher, :key => :Fach_ID
97
+ end
98
+
99
+ # Assoziation für Fächer
100
+ class Faecher < Sequel::Model(:eigeneschule_faecher)
101
+ one_to_one :noten
102
+ end
103
+
104
+ # Assoziation für BK-Abschluss des Schülers
105
+ class BKAbschluss < Sequel::Model(:schuelerbkabschluss)
106
+ one_to_one :schueler
107
+ end
108
+
109
+ # Assoziation für die Prüfungsfächer des Schülers
110
+ class BKAbschlussFaecher < Sequel::Model(:schuelerbkfaecher)
111
+ many_to_one :schueler
112
+ end
113
+
114
+ # Schul-Tabelle
115
+ class Schule < Sequel::Model(:eigeneschule)
116
+ end
117
+ end
118
+
119
+ module SchildErweitert
120
+ include Schild
121
+ # Stellt die Schüler-Tabelle samt Assoziationen bereit.
122
+ class Schueler < Schild::Schueler
123
+ include SchildTypeSaver
74
124
 
75
125
  # gibt das z.Zt. aktuelle Halbjahr zurück.
76
126
  def akt_halbjahr
@@ -94,11 +144,7 @@ module Schild
94
144
 
95
145
  # gibt +Herr+ oder +Frau+ als Anrede für Schüler zurück.
96
146
  def anrede
97
- if self.geschlecht == 3
98
- return "Herr"
99
- elsif self.geschlecht == 4
100
- return "Frau"
101
- end
147
+ self.geschlecht == 3 ? "Herr" : "Frau"
102
148
  end
103
149
 
104
150
  # gibt die passende Bezeichnung zurück Schüler
@@ -129,27 +175,19 @@ module Schild
129
175
  end
130
176
 
131
177
  # Dient als Assoziation für Schüler und deren Klassenbezeichnung etc.
132
- class Fachklasse < Sequel::Model(:eigeneschule_fachklassen)
178
+ class Fachklasse < Schild::Fachklasse
133
179
  include SchildTypeSaver
134
-
135
- one_to_many :schueler
136
180
  end
137
181
 
138
182
  # Assoziation für Lehrer, hauptsächlich für Klassenlehrer
139
- class Klassenlehrer < Sequel::Model(:k_lehrer)
183
+ class Klassenlehrer < Schild::Klassenlehrer
140
184
  include SchildTypeSaver
141
-
142
- one_to_one :abschnitt, :primary_key=>:Kuerzel, :key=>:KlassenLehrer
143
185
  end
144
186
 
145
187
  # Ist die Assoziation, die Halbjahre, sog. Abschnitte zurückgibt.
146
- class Abschnitt < Sequel::Model(:schuelerlernabschnittsdaten)
188
+ class Abschnitt < Schild::Abschnitt
147
189
  include SchildTypeSaver
148
190
 
149
- many_to_one :schueler, :class => :Schueler, :key => :Schueler_ID
150
- one_to_many :noten, :class => :Noten
151
- many_to_one :klassenlehrer, :class => :Klassenlehrer, :primary_key=>:Kuerzel, :key=>:KlassenLehrer
152
-
153
191
  dataset_module do
154
192
  # filtert den Datensatz nach Jahr
155
193
  def jahr(i)
@@ -212,12 +250,9 @@ module Schild
212
250
  end
213
251
 
214
252
  # Assoziation für Noten
215
- class Noten < Sequel::Model(:schuelerleistungsdaten)
253
+ class Noten < Schild::Noten
216
254
  include SchildTypeSaver
217
255
 
218
- many_to_one :abschnitt, :class => :Abschnitt, :key => :Abschnitt_ID
219
- many_to_one :fach, :class => :Faecher, :key => :Fach_ID
220
-
221
256
  # Notenbezeichnung als String
222
257
  def note
223
258
  case self.noten_krz
@@ -256,14 +291,67 @@ module Schild
256
291
  end
257
292
 
258
293
  # Assoziation für Fächer
259
- class Faecher < Sequel::Model(:eigeneschule_faecher)
294
+ class Faecher < Schild::Faecher
260
295
  include SchildTypeSaver
296
+ end
261
297
 
262
- one_to_one :noten
298
+ # Assoziation für BK-Abschlussdaten
299
+ class BKAbschluss < Schild::BKAbschluss
300
+ include SchildTypeSaver
301
+
302
+ # Ist der Schüler zugelassen?
303
+ def zulassung?
304
+ self.Zulassung == "+"
305
+ end
306
+
307
+ # Ist der Schüler für den Berufsabschluss zugelassen?
308
+ def zulassung_ba?
309
+ self.ZulassungBA == "+"
310
+ end
311
+
312
+ # Hat der Schüler den Berufsabschluss bestanden?
313
+ def bestanden_ba?
314
+ self.BestandenBA == "+"
315
+ end
316
+ end
317
+
318
+ # Assoziation für die jeweiligen BK-Prüfungsfächer
319
+ class BKAbschlussFaecher < Schild::BKAbschlussFaecher
320
+ include SchildTypeSaver
321
+
322
+ # Vornote des Prüfungsfachs
323
+ def vornote
324
+ self.Vornote.to_i
325
+ end
326
+
327
+ # Wurde das Fach schriftlich geprüft?
328
+ def fach_schriftlich?
329
+ self.FachSchriftlich == "+"
330
+ end
331
+
332
+ # Wurde das Fach mündlich geprüft?
333
+ def fach_muendlich?
334
+ self.MdlPruefung == "+"
335
+ end
336
+
337
+ # die schriftliche Note des Fachs
338
+ def note_schriftlich
339
+ self.NoteSchriftlich.to_i
340
+ end
341
+
342
+ # Die mündliche Note des Fachs
343
+ def note_muendlich
344
+ self.NoteMuendlich.to_i
345
+ end
346
+
347
+ # Die berechnete/festgelegte Abschlussnote für das Fach
348
+ def note_abschluss
349
+ self.NoteAbschluss.to_i
350
+ end
263
351
  end
264
352
 
265
353
  # Schul-Tabelle mit vereinfachtem Zugriff auf Datenfelder.
266
- class Schule < Sequel::Model(:eigeneschule)
354
+ class Schule < Schild::Schule
267
355
  include SchildTypeSaver
268
356
 
269
357
  # gibt die Schulnummer zurück
@@ -284,4 +372,3 @@ module Schild
284
372
  end
285
373
  end
286
374
  end
287
-
@@ -43,6 +43,50 @@ describe Schueler do
43
43
  fg = @sm.zweites_halbjahr(2013).faechergruppen.flatten.count
44
44
  fg.must_equal (@sm.zweites_halbjahr(2013).noten.select{|n|n.AufZeugnis == '+'}).count
45
45
  end
46
+
47
+ it 'gibt Zulassung zurück' do
48
+ Schueler[166].bk_abschluss.zulassung?.must_equal true
49
+ Schueler[19].bk_abschluss.zulassung?.must_equal false
50
+ end
51
+
52
+ it 'gibt Zulassung Berufsabschluss zurück' do
53
+ Schueler[166].bk_abschluss.zulassung_ba?.must_equal true
54
+ Schueler[19].bk_abschluss.zulassung_ba?.must_equal false
55
+ end
56
+
57
+ it 'gibt Berufsabschluss bestanden zurück' do
58
+ Schueler[166].bk_abschluss.bestanden_ba?.must_equal true
59
+ Schueler[19].bk_abschluss.bestanden_ba?.must_equal false
60
+ end
61
+
62
+ it 'gibt zurück, ob Fach schriftlich' do
63
+ Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "GSTE"}.fach_schriftlich?.must_equal true
64
+ Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "GSFK"}.fach_schriftlich?.must_equal false
65
+ end
66
+
67
+ it 'gibt zurück, ob Fach mündlich' do
68
+ Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "M"}.fach_muendlich?.must_equal true
69
+ Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "GSFK"}.fach_muendlich?.must_equal false
70
+ end
71
+
72
+ it 'gibt Note schriftlich zurück' do
73
+ Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "GSTE"}.note_schriftlich.must_equal 3
74
+ Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "GSFK"}.note_schriftlich.must_equal 0
75
+ end
76
+
77
+ it 'gibt Note mündlich zurück' do
78
+ Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "M"}.note_muendlich.must_equal 6
79
+ Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "GSFK"}.note_muendlich.must_equal 0
80
+ end
81
+
82
+ it 'gibt Abschlussnote zurück' do
83
+ Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "M"}.note_abschluss.must_equal 5
84
+ Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "GSFK"}.note_abschluss.must_equal 3
85
+ end
86
+
87
+ it 'gibt Abschlussfächer zurück' do
88
+ Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "GSTE"}.vornote.must_equal 4
89
+ end
46
90
  end
47
91
 
48
92
  describe 'gibt die korrekte Anzahl von Schülern über Klasse zurück' do
data/specs/spec_helper.rb CHANGED
@@ -6,4 +6,4 @@ require 'envyable'
6
6
  Envyable.load('./config/env.yml', 'local_test')
7
7
 
8
8
  require 'schild'
9
- include Schild
9
+ include SchildErweitert
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.3.4
4
+ version: 0.4.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-05-16 00:00:00.000000000 Z
11
+ date: 2015-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler