ig3tool 0.1.0 → 0.2.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.
Files changed (60) hide show
  1. data/bin/ig3tool +17 -21
  2. data/lib/actions/bib.rb +295 -0
  3. data/lib/actions/bitching.rb +19 -0
  4. data/lib/actions/cultuur.rb +3 -0
  5. data/lib/actions/interne.rb +98 -0
  6. data/lib/actions/kaching.rb +90 -0
  7. data/lib/actions/people.rb +178 -0
  8. data/lib/actions/printing.rb +125 -0
  9. data/lib/actions/product.rb +154 -0
  10. data/lib/bib.rb +94 -0
  11. data/lib/billing.rb +112 -0
  12. data/lib/bitching.rb +49 -0
  13. data/lib/config.rb +19 -0
  14. data/lib/glade/cola_light_small.png +0 -0
  15. data/lib/glade/cola_light_xsmall.png +0 -0
  16. data/lib/glade/cola_small.png +0 -0
  17. data/lib/glade/cola_xsmall.png +0 -0
  18. data/lib/glade/doos_small.png +0 -0
  19. data/lib/glade/doos_xsmall.png +0 -0
  20. data/lib/glade/icons/cola_light_small.png +0 -0
  21. data/lib/glade/icons/cola_light_xsmall.png +0 -0
  22. data/lib/glade/icons/cola_small.png +0 -0
  23. data/lib/glade/icons/cola_xsmall.png +0 -0
  24. data/lib/glade/icons/doos_small.png +0 -0
  25. data/lib/glade/icons/doos_xsmall.png +0 -0
  26. data/lib/glade/icons/piggy_small.png +0 -0
  27. data/lib/glade/icons/piggy_xsmall.png +0 -0
  28. data/lib/glade/money_small.png +0 -0
  29. data/lib/glade/money_xsmall.png +0 -0
  30. data/lib/glade/newinterne.glade +504 -0
  31. data/lib/glade/piggy_small.png +0 -0
  32. data/lib/glade/piggy_xsmall.png +0 -0
  33. data/lib/glade/sales.glade +89 -87
  34. data/lib/horrible_hack.rb +15 -0
  35. data/lib/interne.rb +111 -0
  36. data/lib/ldap.rb +104 -0
  37. data/lib/log.rb +25 -0
  38. data/lib/membership.rb +32 -0
  39. data/lib/mymd5.rb +95 -0
  40. data/lib/people.rb +143 -0
  41. data/lib/printing.rb +238 -0
  42. data/lib/request.rb +14 -0
  43. data/lib/sales.rb +158 -0
  44. data/lib/ui/automaatwindow.rb +2 -2
  45. data/lib/ui/bibliotheekwindow.rb +16 -17
  46. data/lib/ui/bibwindow.rb +15 -15
  47. data/lib/ui/gladehelper.rb +20 -6
  48. data/lib/ui/internewindow.rb +12 -9
  49. data/lib/ui/loginwindow.rb +2 -4
  50. data/lib/ui/memberswindow.rb +9 -9
  51. data/lib/ui/newinterne.rb +258 -0
  52. data/lib/ui/peoplewindow.rb +14 -16
  53. data/lib/ui/printenwindow.rb +11 -11
  54. data/lib/ui/printingwindow.rb +19 -20
  55. data/lib/ui/productswindow.rb +27 -15
  56. data/lib/ui/saleswindow.rb +21 -8
  57. data/lib/ui/toolwindow.rb +5 -3
  58. data/lib/utils.rb +106 -0
  59. data/lib/web.rb +98 -0
  60. metadata +48 -3
@@ -4,7 +4,7 @@ module Ig3tool
4
4
 
5
5
  ## - Constants ----
6
6
  MENU_PATH = ["Interne", "Interne"]
7
- ICON = "emblem-money.png"
7
+ ICON = "piggy_xsmall.png"
8
8
 
9
9
 
10
10
  def initialize
@@ -29,18 +29,21 @@ module Ig3tool
29
29
  @list.insert_column(-1, str, r, :text => i)
30
30
  end
31
31
 
32
- make_debugger_combo @debugger1
32
+ # Eerste box: standaard huidige debugger, kleur window
33
+ make_debugger_combo @debugger1, @window
34
+
35
+ # Tweede box: standaard kas
33
36
  make_debugger_combo @debugger2
37
+ @debugger2.active = 0
34
38
 
35
39
  @window.show_all
36
40
  end
37
41
 
38
- def make_debugger_combo(combo) # kas is ook een "debugger"
39
- super(combo)
42
+ def make_debugger_combo(combo, window = nil) # kas is ook een "debugger"
43
+ super(combo, window)
40
44
  r = combo.model.prepend
41
45
  r[0] = nil
42
46
  r[1] = "kas"
43
- combo.active = 0
44
47
  end
45
48
 
46
49
  def left_clicked
@@ -58,7 +61,7 @@ module Ig3tool
58
61
  return if username.nil?
59
62
 
60
63
  if username != "kas"
61
- saldo = $global["client"].interne(username)
64
+ saldo = $client.interne(username)
62
65
  @saldo.text = saldo.from_c.to_s
63
66
  else
64
67
  @saldo.text = ""
@@ -71,7 +74,7 @@ module Ig3tool
71
74
 
72
75
  username = nil if username == "kas"
73
76
 
74
- transactions = $global["client"].interne_log(username)
77
+ transactions = $client.interne_log(username)
75
78
  transactions.each do |t|
76
79
  r = m.append
77
80
  r[0] = t.system
@@ -108,8 +111,8 @@ module Ig3tool
108
111
  :amount => amount
109
112
  }
110
113
 
111
- new_saldo = $global["client"].interne_transfer! args
112
- @saldo.text = $global["client"].interne(from).from_c.to_s
114
+ new_saldo = $client.interne_transfer! args
115
+ @saldo.text = $client.interne(from).from_c.to_s
113
116
 
114
117
  # Fake Debugger1 changed -> updaten log kaderke
115
118
  debugger1_changed
@@ -10,8 +10,6 @@ module Ig3tool
10
10
  def initialize(client, &block)
11
11
  super("loginwindow.glade", "loginwindow")
12
12
 
13
- @c = client
14
-
15
13
  @username = @glade.get_widget("username")
16
14
  @password = @glade.get_widget("password")
17
15
  @apply = @glade.get_widget("apply")
@@ -27,12 +25,12 @@ module Ig3tool
27
25
  h = {"username" => @username.text, "password" => @password.text}
28
26
  @username.text = ""
29
27
  @password.text = ""
30
- @c.wannabe!(h)
28
+ $client.wannabe!(h)
31
29
  @loginwin.hide
32
30
  @success.call
33
31
  rescue Token => t
34
32
  puts "ERROR: #{t.message}"
35
- error_dialog(self, t)
33
+ Ig3tool::error_dialog(nil, t)
36
34
  end
37
35
  def cancel(widget)
38
36
  @username.text = ""
@@ -29,7 +29,7 @@ module Ig3tool
29
29
  @notification_label = _get_widget("notification_label")
30
30
 
31
31
  _get_widget("first_name").grab_focus
32
- statussen = $global["client"].person_statussen
32
+ statussen = $client.person_statussen
33
33
  make_status_combo(_get_widget("status"), statussen)
34
34
 
35
35
  Thread.new do
@@ -90,7 +90,7 @@ module Ig3tool
90
90
  end
91
91
 
92
92
  begin
93
- people = $global["client"].person_lookup(attrs)
93
+ people = $client.person_lookup(attrs)
94
94
  _set_people(people)
95
95
  rescue Exception => e
96
96
  _print_msg "Error: Lookup: #{$!}"
@@ -148,7 +148,7 @@ module Ig3tool
148
148
  begin
149
149
  FIELDS.each {|n| _get_widget(n).text = who.send(n.to_sym).to_s }
150
150
 
151
- ms = $global["client"].person_memberships(who.username)
151
+ ms = $client.person_memberships(who.username)
152
152
 
153
153
 
154
154
  if !ms.nil?
@@ -182,7 +182,7 @@ module Ig3tool
182
182
 
183
183
  def _delete(who, refresh = true)
184
184
  begin
185
- $global["client"].person_remove!({ :username => who.username })
185
+ $client.person_remove!({ :username => who.username })
186
186
  _clear
187
187
  _update_people if refresh
188
188
  rescue Exception => e
@@ -217,8 +217,8 @@ module Ig3tool
217
217
  if @selected_person.nil? or @selected_person.username != data[:username]
218
218
  # Indien hij nog niet bestaat, aanmaken in de database
219
219
  begin
220
- answer = $global["client"].person_add! data
221
- @selected_person = $global["client"].person_lookup("username" => data[:username])[0]
220
+ answer = $client.person_add! data
221
+ @selected_person = $client.person_lookup("username" => data[:username])[0]
222
222
  iter = _insert_person(@selected_person)
223
223
  @people_view.selection.select_iter(iter)
224
224
  rescue Exception => e
@@ -230,8 +230,8 @@ module Ig3tool
230
230
  else
231
231
  # Anders-> zorg voor update via people.real_id
232
232
  begin
233
- answer = $global["client"].person_update! data
234
- @selected_person = $global["client"].person_lookup("username" => data[:username])[0]
233
+ answer = $client.person_update! data
234
+ @selected_person = $client.person_lookup("username" => data[:username])[0]
235
235
  iter = _insert_person(@selected_person)
236
236
  @people_view.selection.select_iter(iter)
237
237
  rescue Exception => e
@@ -257,7 +257,7 @@ module Ig3tool
257
257
  r[0] = nil
258
258
  r[1] = "Loading..."
259
259
  end
260
- people = $global["client"].send(sym)
260
+ people = $client.send(sym)
261
261
  _set_people(people)
262
262
  end
263
263
 
@@ -0,0 +1,258 @@
1
+
2
+ require 'time'
3
+
4
+ module Ig3tool
5
+
6
+ class InterneWindow < GladeHelper
7
+ include GetText
8
+
9
+ MENU_PATH = ["Interne", "Interne"]
10
+ ICON = "piggy_xsmall.png"
11
+
12
+
13
+
14
+ def initialize
15
+ super("newinterne.glade")
16
+
17
+
18
+ @action = @glade.get_widget("action")
19
+ @notification = @glade.get_widget("notification")
20
+ @message = @glade.get_widget("message")
21
+ @amount = @glade.get_widget("amount")
22
+ @saldo = @glade.get_widget("saldo")
23
+ @from = @glade.get_widget("fromcombo")
24
+ @to = @glade.get_widget("tocombo")
25
+
26
+ @transactions = @glade.get_widget("transactions")
27
+ @transactions.model = @transactions_store = Gtk::ListStore.new(Object, String, String, String, String, String)
28
+ l = Gtk::CellRendererText.new
29
+ @transactions.insert_column(-1, "time", l) do |tvc, cell, m, iter|
30
+ cell.text = Time.parse(iter[0].time).strftime("%d/%m %H:%M")
31
+ end
32
+ @transactions.insert_column(-1, "amount", l) do |tvc, cell, m, iter|
33
+ cell.text = iter[0].amount.from_c.to_s
34
+ end
35
+ @transactions.insert_column(-1, "from", l) do |tvc, cell, m, iter|
36
+ cell.text = iter[0].donor
37
+ end
38
+ @transactions.insert_column(-1, "to", l) do |tvc, cell, m, iter|
39
+ cell.text = iter[0].recipient
40
+ end
41
+ @transactions.insert_column(-1, "message", l) do |tvc, cell, m, iter|
42
+ cell.text = iter[0].message
43
+ end
44
+
45
+ add_window_colorer(@from, @window)
46
+
47
+ @amount.text = "0.0"
48
+ #@window.signal_connect("activate-focus") do
49
+ # @notification.text = "refreshing..."
50
+ # _update_debuggers
51
+ # @notification.text = "refresh done"
52
+ #end
53
+
54
+ _update_debuggers
55
+ _update_transactions
56
+
57
+ end
58
+
59
+ def refresh(widget)
60
+ from = @from.active
61
+ fromusername = @internes[from-1].username
62
+ setaction(from, @to.active)
63
+ _update_debuggers_nothread
64
+ @from.active = from
65
+ puts "DEBUG: #{fromusername}"
66
+ interne = $client.interne(fromusername)
67
+ @saldo.text = interne.saldo.from_c.to_s unless from == 0
68
+ @saldo.text = "unlimited moneyz" if from == 0
69
+ if from == 0
70
+ _update_transactions
71
+ else
72
+ _update_transactions(fromusername)
73
+ end
74
+ end
75
+
76
+ def tochange(widget)
77
+ setaction(@from.active, @to.active)
78
+ end
79
+ def fromchange(widget)
80
+ setaction(@from.active, @to.active)
81
+ fromusername = @internes[@from.active-1].username
82
+ if @from.active != 0
83
+ interne = $client.interne(fromusername)
84
+ @saldo.text = interne.saldo.from_c.to_s
85
+ end
86
+ @saldo.text = "unlimited moneyz" if @from.active == 0
87
+ if @from.active == 0
88
+ _update_transactions
89
+ else
90
+ fromusername = @internes[@from.active - 1].username
91
+ _update_transactions(fromusername)
92
+ end
93
+ end
94
+ def tossmoney(widget)
95
+ if @from.active == 0
96
+ fromusername = "kas"
97
+ else
98
+ fromusername = @internes[@from.active-1].username
99
+ end
100
+ if @to.active == 0
101
+ tousername = "kas"
102
+ else
103
+ tousername = @internes[@to.active-1].username
104
+ end
105
+ begin
106
+ amount = @amount.text
107
+ raise Ig3tool::IG3Error, "uncorrect format for amount" unless amount =~ /\d+(\.\d{1,2}){0,1}/
108
+ $client.interne_transfer!("from" => fromusername, "to" => tousername, "amount" => @amount.text.strip.to_c, "message" => @message.text.strip)
109
+ _clear
110
+ _update_transactions(fromusername)
111
+ @notification.text = "transferred #{amount} EUR from #{fromusername} to #{tousername}"
112
+ rescue Exception => e
113
+ @notification.text = e.message
114
+ end
115
+ end
116
+ def setaction(from, to)
117
+ if from == 0
118
+ fromusername = "kas"
119
+ else
120
+ fromusername = @internes[from-1].username
121
+ end
122
+ if to == 0
123
+ tousername = "kas"
124
+ else
125
+ tousername = @internes[to-1].username
126
+ end
127
+ @action.set_markup("toss money from <b>#{fromusername}</b> to <b>#{tousername}</b>")
128
+ @action.set_markup("retract money from kas") if fromusername == "kas"
129
+ @action.set_markup("deposit money to your interne") if tousername == "kas"
130
+ @action.set_markup("money masturbation detected!") if from == to
131
+ end
132
+
133
+
134
+ private
135
+
136
+
137
+ def _clear
138
+ @amount.text = "0.0"
139
+ @message.text = ""
140
+ @saldo.text = ""
141
+ from = @from.active
142
+ to = @to.active
143
+ _update_debuggers
144
+ @from.active = from
145
+ @to.active = to
146
+ end
147
+
148
+ def _update_debuggers_nothread
149
+ begin
150
+ @internes = $client.internes
151
+ from_model = Gtk::ListStore.new(Object, String)
152
+ to_model = Gtk::ListStore.new(Object, String)
153
+
154
+ empty = from_model.append
155
+ empty[0] = nil
156
+ empty[1] = "kas"
157
+ empty2 = to_model.append
158
+ empty2[0] = nil
159
+ empty2[1] = "kas"
160
+
161
+ @internes.each do |s|
162
+ row = from_model.append
163
+ row[0] = s
164
+ row[1] = s.username
165
+ row2 = to_model.append
166
+ row2[0] = s
167
+ row2[1] = s.username
168
+ end
169
+
170
+ @from.model = from_model
171
+ @from.active = 0
172
+ @from.clear
173
+ renderer = Gtk::CellRendererText.new
174
+ @from.pack_start(renderer, true)
175
+ @from.set_attributes(renderer, :text => 1)
176
+ @to.model = to_model
177
+ @to.active = 0
178
+ @to.clear
179
+ renderer = Gtk::CellRendererText.new
180
+ @to.pack_start(renderer, true)
181
+ @to.set_attributes(renderer, :text => 1)
182
+ rescue Exception => e
183
+ @notification.text = e.to_s + e.message
184
+ end
185
+ end
186
+
187
+
188
+ def _update_debuggers
189
+ Thread.new do
190
+ begin
191
+ @internes = $client.internes
192
+ from_model = Gtk::ListStore.new(Object, String)
193
+ to_model = Gtk::ListStore.new(Object, String)
194
+
195
+ empty = from_model.append
196
+ empty[0] = nil
197
+ empty[1] = "kas"
198
+ empty2 = to_model.append
199
+ empty2[0] = nil
200
+ empty2[1] = "kas"
201
+
202
+ @internes.each do |s|
203
+ row = from_model.append
204
+ row[0] = s
205
+ row[1] = s.username
206
+ row2 = to_model.append
207
+ row2[0] = s
208
+ row2[1] = s.username
209
+ end
210
+
211
+ @from.model = from_model
212
+ @from.active = 0
213
+ @from.clear
214
+ renderer = Gtk::CellRendererText.new
215
+ @from.pack_start(renderer, true)
216
+ @from.set_attributes(renderer, :text => 1)
217
+ @to.model = to_model
218
+ @to.active = 0
219
+ @to.clear
220
+ renderer = Gtk::CellRendererText.new
221
+ @to.pack_start(renderer, true)
222
+ @to.set_attributes(renderer, :text => 1)
223
+ rescue Exception => e
224
+ @notification.text = e.to_s + e.message
225
+ end
226
+ end
227
+ end
228
+
229
+ def _update_transactions(name=nil)
230
+ @notification.text = "loading log..."
231
+ @transactions_store.clear
232
+ Thread.new do
233
+ begin
234
+ if name.nil?
235
+ transactionslines = $client.interne_log
236
+ else
237
+ transactionslines = $client.interne_log(name, 200)
238
+ end
239
+ transactionslines.each do |ll|
240
+ @transactions_store.append[0] = ll
241
+ end
242
+ rescue Exception => e
243
+ @notification.text = e.message
244
+ end
245
+ end
246
+ @notification.text = ""
247
+ end
248
+
249
+
250
+
251
+ end
252
+
253
+ register_window(InterneWindow)
254
+
255
+ end
256
+
257
+
258
+
@@ -16,8 +16,6 @@ module Ig3tool
16
16
  def initialize
17
17
  super("people.glade")
18
18
 
19
- @c = $global["client"]
20
-
21
19
  @username = @glade.get_widget("username")
22
20
  @firstname = @glade.get_widget("firstname")
23
21
  @lastname = @glade.get_widget("lastname")
@@ -81,7 +79,7 @@ module Ig3tool
81
79
  @notification.text = "please fill in a username..."
82
80
  else
83
81
 
84
- p = @c.person_lookup("username", username)[0]
82
+ p = $client.person_lookup("username", username)[0]
85
83
  if p.nil?
86
84
  @notification.text = "no user with username #{username} found..."
87
85
  else
@@ -94,7 +92,7 @@ module Ig3tool
94
92
  begin
95
93
  barc = @barcode.text
96
94
  clear_all(nil)
97
- p = @c.person_member(barc)
95
+ p = $client.person_member(barc)
98
96
  _show(p)
99
97
  rescue Exception => e
100
98
  @notification.text = "no user with barcode #{barc} found..."
@@ -142,7 +140,7 @@ module Ig3tool
142
140
  attrs["status"] = @statushashi[@status.active]
143
141
 
144
142
  begin
145
- @c.person_save!(attrs)
143
+ $client.person_save!(attrs)
146
144
  @notification.text = "Person succesfully saved, clearing the form..."
147
145
  sleep 2
148
146
  clear_all(nil)
@@ -178,7 +176,7 @@ module Ig3tool
178
176
  end
179
177
 
180
178
  begin
181
- people = @c.person_lookup(attrs)
179
+ people = $client.person_lookup(attrs)
182
180
  _show(people[0]) if people.size == 1
183
181
  _update_names(people)
184
182
  rescue Exception => e
@@ -229,7 +227,7 @@ module Ig3tool
229
227
  def _update_hist(username, clear=true)
230
228
  @history_store.clear if clear
231
229
  Thread.new do
232
- hist = @c.person_memberships(username)
230
+ hist = $client.person_memberships(username)
233
231
  hist.each do |m|
234
232
  @history_store.append[0] = m
235
233
  end
@@ -244,17 +242,17 @@ module Ig3tool
244
242
  if people.nil?
245
243
  case @statussearch.active
246
244
  when -1
247
- people = @c.person_everybody
245
+ people = $client.person_everybody
248
246
  when 0
249
- people = @c.person_everybody
247
+ people = $client.person_everybody
250
248
  when 1
251
- people = @c.person_debuggers
249
+ people = $client.person_debuggers
252
250
  when 2
253
- people = @c.person_members
251
+ people = $client.person_members
254
252
  when 3
255
- people = @c.person_nonmembers
253
+ people = $client.person_nonmembers
256
254
  when 4
257
- people = @c.person_honorarymembers
255
+ people = $client.person_honorarymembers
258
256
  end
259
257
  else
260
258
  @statussearch.active = -1
@@ -305,10 +303,10 @@ module Ig3tool
305
303
  end
306
304
  end
307
305
  @mobile.text = person["gsm"]
308
- #@status.text = @c.person_status(username)
309
- membership = @c.person_membership(person["username"])
306
+ #@status.text = $client.person_status(username)
307
+ membership = $client.person_membership(person["username"])
310
308
  @barcode.text = membership.barcode unless membership.nil?
311
- status = @c.person_status(person["username"])
309
+ status = $client.person_status(person["username"])
312
310
  @status.active = @statushash[status]
313
311
  _update_hist(person["username"])
314
312
  @notification.text = "the ig3tool imps found #{person["username"]}..."