ig3tool 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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"]}..."