schild 0.4.2 → 0.5.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: 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