schild 0.3.4 → 0.4.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: 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