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 +4 -4
- data/lib/schild/version.rb +1 -1
- data/lib/schild.rb +49 -31
- data/specs/schueler_spec.rb +12 -1
- data/specs/type_safe_spec.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 806113777b9bbc25eb38105d179742884490e49a
|
4
|
+
data.tar.gz: a0828e0a253cab9379e28c21e09635d1cfd74a46
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 633f4aeda86b695e08e54187ef7f0fa1eb43a4d37b68ed6244104e918471d581450c9a87797edc4eb5dd8d2a49490e443a4d68ea22d4405495c3249d8d8bf7a3
|
7
|
+
data.tar.gz: f9f3ebbeb374cb3f0ebca5bd5698fb43bf3a2e55edc4eddcdbece887a4bbc333549cc4989e9786f7d1022ccf76283afbb5acf5f90112fb2c39ff1ef6969fbd5b
|
data/lib/schild/version.rb
CHANGED
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
|
-
|
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
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
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
|
data/specs/schueler_spec.rb
CHANGED
@@ -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
|
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
|
data/specs/type_safe_spec.rb
CHANGED
@@ -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
|
11
|
-
@sm.geburtsdatum.must_be_instance_of
|
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
|
+
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-
|
11
|
+
date: 2015-10-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|