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
data/lib/web.rb ADDED
@@ -0,0 +1,98 @@
1
+ module Ig3tool
2
+
3
+ require 'mongrel'
4
+ require 'yaml'
5
+ require 'facets'
6
+
7
+ class WebHandler < Mongrel::HttpHandler
8
+ def decode_body(request)
9
+ if request.params[Mongrel::Const::REQUEST_METHOD] == "POST" then
10
+ type = request.params['CONTENT_TYPE'].sub(/;.*/,'')
11
+ res = case type
12
+ when "application/x-yaml","text/yaml", "text/x-yaml"
13
+ YAML.load request.body
14
+ when "application/x-www-form-urlencoded"
15
+ Mongrel::HttpRequest.query_parse request.body.read
16
+ else
17
+ warn "Warning: don't know how to handle Content-Type: #{type}"
18
+ {}
19
+ end
20
+ res.stringify_keys!
21
+ else
22
+ {}
23
+ end
24
+ end
25
+
26
+ def process(request, response)
27
+ path = request.params[Mongrel::Const::PATH_INFO]
28
+
29
+ # strip leading /, convert all remaining / to _
30
+ (path, params) = path.split('//')
31
+ params = (params || "").split("/")
32
+ command = path.tr('/', '_').sub(/_+$/,'').sub(/^_+/,"")
33
+
34
+ puts "Handling request for #{path}; params: #{params.inspect}"
35
+
36
+ begin
37
+
38
+ if command.empty? then
39
+ response.start(503) do |head,out|
40
+ messages = Ig3tool::Actions.public_methods.reject {|x| Object.respond_to? x or x.starts_with? "_" }
41
+ out << "Please enter a query. Possible commands: #{messages.sort.join(', ')}"
42
+ end
43
+ return
44
+ else
45
+ type = request.params[Mongrel::Const::REQUEST_METHOD]
46
+ extra = decode_body request
47
+ extra.update( :from_uri => params, :given_uri => params.size, :type => type)
48
+ puts "Extra params: #{extra.inspect}"
49
+
50
+ command = command + '!' if type == 'POST'
51
+
52
+ if command != "wannabe!" and command != "register!"
53
+ raise Token, "you need a key" if params.size < 1
54
+ token = params[0]
55
+ raise Token, "invalid key" if not Bitch.can_request?(params[0])
56
+ end
57
+
58
+ r = Ig3tool::Request.new
59
+ r.bitch = Bitch.bitch(token)
60
+ r.request = "REQ: " + command
61
+ r.request += " ; " + params.join(", ")
62
+ r.request += " ; " + extra.to_a.map{|e| e.join(" => ")}.join(", ")
63
+ r.save!
64
+
65
+ answer = Ig3tool::Actions.send(command, extra)
66
+ raised = false
67
+ end
68
+
69
+ rescue IG3Error, NoMethodError => boom
70
+ answer = { "type" => boom.class.to_s, "message" => boom.message }
71
+ raised = true
72
+ rescue Exception => boom
73
+ warn "==== EXCEPTION ===="
74
+ warn "ERROR OCCURED: #{boom.to_s}\n"
75
+ warn "Backtrace: \n"
76
+ warn boom.backtrace.collect {|x| "\t"+x}.join("\n")
77
+ warn "==== EXCEPTION ===="
78
+ answer = { "type" => "InternalError", "message" => boom.to_s, "backtrace" => boom.backtrace }
79
+ raised = true
80
+ end
81
+
82
+ code = raised ? 500 : 200
83
+ response.start(code) do |head,out|
84
+ case request.params['HTTP_ACCEPT']
85
+ when /text\/x-yaml/, /text\/yaml/, /application\/yaml/
86
+ head["Content-Type"] = "application/yaml"
87
+ out << answer.to_yaml
88
+
89
+ else # text dump
90
+ head["Content-Type"] = "text/plain"
91
+ out << answer.inspect
92
+ end
93
+ end
94
+ end
95
+
96
+ end
97
+
98
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ig3tool
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Pinte
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-03-05 00:00:00 +01:00
12
+ date: 2008-03-24 00:00:00 +01:00
13
13
  default_executable: ig3tool
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -19,7 +19,7 @@ dependencies:
19
19
  requirements:
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 0.1.0
22
+ version: 0.2.0
23
23
  version:
24
24
  description:
25
25
  email: igtool@infogroep.be
@@ -30,14 +30,51 @@ extensions: []
30
30
  extra_rdoc_files: []
31
31
 
32
32
  files:
33
+ - lib/actions
34
+ - lib/bib.rb
35
+ - lib/billing.rb
36
+ - lib/bitching.rb
37
+ - lib/config.rb
33
38
  - lib/glade
39
+ - lib/horrible_hack.rb
40
+ - lib/interne.rb
41
+ - lib/ldap.rb
34
42
  - lib/lib
43
+ - lib/log.rb
44
+ - lib/membership.rb
45
+ - lib/mymd5.rb
46
+ - lib/people.rb
47
+ - lib/printing.rb
48
+ - lib/request.rb
49
+ - lib/sales.rb
35
50
  - lib/ui
51
+ - lib/utils.rb
52
+ - lib/web.rb
36
53
  - bin/ig3tool
54
+ - lib/actions/bib.rb
55
+ - lib/actions/bitching.rb
56
+ - lib/actions/cultuur.rb
57
+ - lib/actions/interne.rb
58
+ - lib/actions/kaching.rb
59
+ - lib/actions/people.rb
60
+ - lib/actions/printing.rb
61
+ - lib/actions/product.rb
37
62
  - lib/glade/bib.glade
38
63
  - lib/glade/bibliotheek.glade
64
+ - lib/glade/cola_light_small.png
65
+ - lib/glade/cola_light_xsmall.png
66
+ - lib/glade/cola_small.png
67
+ - lib/glade/cola_xsmall.png
68
+ - lib/glade/doos_small.png
69
+ - lib/glade/doos_xsmall.png
39
70
  - lib/glade/icons
40
71
  - lib/glade/icons/cola.png
72
+ - lib/glade/icons/cola_light_small.png
73
+ - lib/glade/icons/cola_light_xsmall.png
74
+ - lib/glade/icons/cola_small.png
75
+ - lib/glade/icons/cola_xsmall.png
76
+ - lib/glade/icons/doos_small.png
77
+ - lib/glade/icons/doos_xsmall.png
41
78
  - lib/glade/icons/emblem-money.png
42
79
  - lib/glade/icons/emblem-package.png
43
80
  - lib/glade/icons/emblem-penning.xpm
@@ -47,6 +84,8 @@ files:
47
84
  - lib/glade/icons/members_klein.png
48
85
  - lib/glade/icons/members_xklein.png
49
86
  - lib/glade/icons/no.xpm
87
+ - lib/glade/icons/piggy_small.png
88
+ - lib/glade/icons/piggy_xsmall.png
50
89
  - lib/glade/icons/stock_book.svg
51
90
  - lib/glade/icons/stock_book_klein.png
52
91
  - lib/glade/icons/stock_book_xklein.png
@@ -63,8 +102,13 @@ files:
63
102
  - lib/glade/members.svg
64
103
  - lib/glade/members_klein.png
65
104
  - lib/glade/members_xklein.png
105
+ - lib/glade/money_small.png
106
+ - lib/glade/money_xsmall.png
107
+ - lib/glade/newinterne.glade
66
108
  - lib/glade/penningtool.glade
67
109
  - lib/glade/people.glade
110
+ - lib/glade/piggy_small.png
111
+ - lib/glade/piggy_xsmall.png
68
112
  - lib/glade/printen.glade
69
113
  - lib/glade/printer.png
70
114
  - lib/glade/printer_klein.png
@@ -90,6 +134,7 @@ files:
90
134
  - lib/ui/loginwindow.rb
91
135
  - lib/ui/memberswindow.rb
92
136
  - lib/ui/messagebox.rb
137
+ - lib/ui/newinterne.rb
93
138
  - lib/ui/peoplewindow.rb
94
139
  - lib/ui/printenwindow.rb
95
140
  - lib/ui/printingwindow.rb