ramaze.ch.oddb.org 1.0.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 (286) hide show
  1. data/History.txt +6 -0
  2. data/LICENSE +339 -0
  3. data/Manifest.txt +285 -0
  4. data/README.txt +45 -0
  5. data/Rakefile +28 -0
  6. data/bin/admin +69 -0
  7. data/bin/exportd +63 -0
  8. data/bin/migrate +461 -0
  9. data/bin/oddbd +62 -0
  10. data/data/fulltext/data/dicts/french/fulltext.aff +1057 -0
  11. data/data/fulltext/data/dicts/french/fulltext.dict +91189 -0
  12. data/data/fulltext/data/dicts/french/fulltext.stop +135 -0
  13. data/data/fulltext/data/dicts/german/fulltext.aff +1233 -0
  14. data/data/fulltext/data/dicts/german/fulltext.dict +287574 -0
  15. data/data/fulltext/data/dicts/german/fulltext.stop +133 -0
  16. data/data/fulltext/data/german_compound/README +15 -0
  17. data/data/fulltext/data/german_compound/compound.pl +63 -0
  18. data/data/fulltext/data/german_compound/german.stop +20 -0
  19. data/data/fulltext/data/ispell-german-compound.tar.gz +0 -0
  20. data/data/fulltext/redist/dict_french/Makefile +12 -0
  21. data/data/fulltext/redist/dict_french/README.french +1 -0
  22. data/data/fulltext/redist/dict_french/dict_french.sql.in +7 -0
  23. data/data/fulltext/redist/dict_french/dict_snowball.c +56 -0
  24. data/data/fulltext/redist/dict_french/french_stem.c +1222 -0
  25. data/data/fulltext/redist/dict_french/french_stem.h +16 -0
  26. data/data/fulltext/redist/dict_french/subinclude.h +2 -0
  27. data/data/fulltext/redist/dict_german/Makefile +12 -0
  28. data/data/fulltext/redist/dict_german/README.german +1 -0
  29. data/data/fulltext/redist/dict_german/dict_german.sql.in +7 -0
  30. data/data/fulltext/redist/dict_german/dict_snowball.c +56 -0
  31. data/data/fulltext/redist/dict_german/german_stem.c +527 -0
  32. data/data/fulltext/redist/dict_german/german_stem.h +16 -0
  33. data/data/fulltext/redist/dict_german/subinclude.h +1 -0
  34. data/data/fulltext/redist/french_stem.c +1222 -0
  35. data/data/fulltext/redist/french_stem.h +16 -0
  36. data/data/fulltext/redist/german_stem.c +527 -0
  37. data/data/fulltext/redist/german_stem.h +16 -0
  38. data/lib/fixes/ruby19.rb +21 -0
  39. data/lib/fixes/selenium.rb +20 -0
  40. data/lib/fixes/singular.rb +8 -0
  41. data/lib/fixes/yaml.rb +13 -0
  42. data/lib/oddb.rb +11 -0
  43. data/lib/oddb/business/company.rb +18 -0
  44. data/lib/oddb/business/invoice.rb +75 -0
  45. data/lib/oddb/business/price.rb +60 -0
  46. data/lib/oddb/config.rb +73 -0
  47. data/lib/oddb/drugs.rb +16 -0
  48. data/lib/oddb/drugs/active_agent.rb +37 -0
  49. data/lib/oddb/drugs/atc.rb +53 -0
  50. data/lib/oddb/drugs/composition.rb +41 -0
  51. data/lib/oddb/drugs/ddd.rb +24 -0
  52. data/lib/oddb/drugs/dose.rb +107 -0
  53. data/lib/oddb/drugs/galenic_form.rb +21 -0
  54. data/lib/oddb/drugs/galenic_group.rb +17 -0
  55. data/lib/oddb/drugs/package.rb +87 -0
  56. data/lib/oddb/drugs/part.rb +56 -0
  57. data/lib/oddb/drugs/product.rb +25 -0
  58. data/lib/oddb/drugs/sequence.rb +61 -0
  59. data/lib/oddb/drugs/substance.rb +31 -0
  60. data/lib/oddb/drugs/substance_group.rb +13 -0
  61. data/lib/oddb/drugs/unit.rb +12 -0
  62. data/lib/oddb/export.rb +4 -0
  63. data/lib/oddb/export/csv.rb +89 -0
  64. data/lib/oddb/export/l10n_sessions.rb +30 -0
  65. data/lib/oddb/export/rss.rb +44 -0
  66. data/lib/oddb/export/server.rb +58 -0
  67. data/lib/oddb/export/xls.rb +119 -0
  68. data/lib/oddb/export/yaml.rb +123 -0
  69. data/lib/oddb/html/state/drugs/admin/package.rb +189 -0
  70. data/lib/oddb/html/state/drugs/admin/product.rb +56 -0
  71. data/lib/oddb/html/state/drugs/admin/sequence.rb +259 -0
  72. data/lib/oddb/html/state/drugs/ajax/explain_ddd_price.rb +19 -0
  73. data/lib/oddb/html/state/drugs/ajax/explain_price.rb +19 -0
  74. data/lib/oddb/html/state/drugs/ajax/global.rb +18 -0
  75. data/lib/oddb/html/state/drugs/ajax/package_infos.rb +19 -0
  76. data/lib/oddb/html/state/drugs/ajax/remote_infos.rb +19 -0
  77. data/lib/oddb/html/state/drugs/atc_browser.rb +39 -0
  78. data/lib/oddb/html/state/drugs/atc_guidelines.rb +21 -0
  79. data/lib/oddb/html/state/drugs/compare.rb +52 -0
  80. data/lib/oddb/html/state/drugs/download_export.rb +18 -0
  81. data/lib/oddb/html/state/drugs/fachinfo.rb +21 -0
  82. data/lib/oddb/html/state/drugs/feedback.rb +94 -0
  83. data/lib/oddb/html/state/drugs/global.rb +266 -0
  84. data/lib/oddb/html/state/drugs/init.rb +18 -0
  85. data/lib/oddb/html/state/drugs/login.rb +17 -0
  86. data/lib/oddb/html/state/drugs/package.rb +32 -0
  87. data/lib/oddb/html/state/drugs/patinfo.rb +21 -0
  88. data/lib/oddb/html/state/drugs/products.rb +51 -0
  89. data/lib/oddb/html/state/drugs/result.rb +125 -0
  90. data/lib/oddb/html/state/global.rb +165 -0
  91. data/lib/oddb/html/state/global_predefine.rb +17 -0
  92. data/lib/oddb/html/state/limit.rb +17 -0
  93. data/lib/oddb/html/state/login.rb +56 -0
  94. data/lib/oddb/html/state/paypal/checkout.rb +130 -0
  95. data/lib/oddb/html/state/paypal/collect.rb +46 -0
  96. data/lib/oddb/html/state/paypal/redirect.rb +18 -0
  97. data/lib/oddb/html/state/register_export.rb +38 -0
  98. data/lib/oddb/html/state/register_poweruser.rb +17 -0
  99. data/lib/oddb/html/state/viral/admin.rb +76 -0
  100. data/lib/oddb/html/state/viral/poweruser.rb +16 -0
  101. data/lib/oddb/html/util/annotated_list.rb +39 -0
  102. data/lib/oddb/html/util/know_it_all.rb +28 -0
  103. data/lib/oddb/html/util/known_user.rb +55 -0
  104. data/lib/oddb/html/util/lookandfeel.rb +554 -0
  105. data/lib/oddb/html/util/need_all_input.rb +29 -0
  106. data/lib/oddb/html/util/session.rb +88 -0
  107. data/lib/oddb/html/util/sort.rb +72 -0
  108. data/lib/oddb/html/util/unsaved_helper.rb +20 -0
  109. data/lib/oddb/html/util/validator.rb +54 -0
  110. data/lib/oddb/html/view/ajax/json.rb +22 -0
  111. data/lib/oddb/html/view/alpha_header.rb +28 -0
  112. data/lib/oddb/html/view/document.rb +126 -0
  113. data/lib/oddb/html/view/drugs/admin/package.rb +237 -0
  114. data/lib/oddb/html/view/drugs/admin/product.rb +104 -0
  115. data/lib/oddb/html/view/drugs/admin/sequence.rb +312 -0
  116. data/lib/oddb/html/view/drugs/ajax/explain_ddd_price.rb +87 -0
  117. data/lib/oddb/html/view/drugs/ajax/explain_price.rb +61 -0
  118. data/lib/oddb/html/view/drugs/ajax/package_infos.rb +105 -0
  119. data/lib/oddb/html/view/drugs/ajax/remote_infos.rb +44 -0
  120. data/lib/oddb/html/view/drugs/atc_browser.rb +68 -0
  121. data/lib/oddb/html/view/drugs/atc_guidelines.rb +94 -0
  122. data/lib/oddb/html/view/drugs/compare.rb +95 -0
  123. data/lib/oddb/html/view/drugs/download_export.rb +28 -0
  124. data/lib/oddb/html/view/drugs/fachinfo.rb +46 -0
  125. data/lib/oddb/html/view/drugs/feedback.rb +231 -0
  126. data/lib/oddb/html/view/drugs/init.rb +51 -0
  127. data/lib/oddb/html/view/drugs/legend.rb +24 -0
  128. data/lib/oddb/html/view/drugs/package.rb +398 -0
  129. data/lib/oddb/html/view/drugs/patinfo.rb +46 -0
  130. data/lib/oddb/html/view/drugs/products.rb +97 -0
  131. data/lib/oddb/html/view/drugs/result.rb +296 -0
  132. data/lib/oddb/html/view/drugs/search.rb +33 -0
  133. data/lib/oddb/html/view/drugs/template.rb +15 -0
  134. data/lib/oddb/html/view/foot.rb +52 -0
  135. data/lib/oddb/html/view/google.rb +23 -0
  136. data/lib/oddb/html/view/google_ads.rb +40 -0
  137. data/lib/oddb/html/view/head.rb +78 -0
  138. data/lib/oddb/html/view/limit.rb +109 -0
  139. data/lib/oddb/html/view/list.rb +59 -0
  140. data/lib/oddb/html/view/login.rb +38 -0
  141. data/lib/oddb/html/view/navigation.rb +67 -0
  142. data/lib/oddb/html/view/offset_header.rb +35 -0
  143. data/lib/oddb/html/view/paypal/collect.rb +84 -0
  144. data/lib/oddb/html/view/paypal/redirect.rb +51 -0
  145. data/lib/oddb/html/view/paypal/register_form.rb +106 -0
  146. data/lib/oddb/html/view/register_export.rb +29 -0
  147. data/lib/oddb/html/view/register_poweruser.rb +29 -0
  148. data/lib/oddb/html/view/rss/feedback.rb +64 -0
  149. data/lib/oddb/html/view/rss_preview.rb +54 -0
  150. data/lib/oddb/html/view/search.rb +104 -0
  151. data/lib/oddb/html/view/snapback.rb +24 -0
  152. data/lib/oddb/html/view/template.rb +56 -0
  153. data/lib/oddb/import/excel.rb +45 -0
  154. data/lib/oddb/import/import.rb +39 -0
  155. data/lib/oddb/import/rtf.rb +410 -0
  156. data/lib/oddb/import/whocc.rb +173 -0
  157. data/lib/oddb/import/xml.rb +15 -0
  158. data/lib/oddb/model.rb +179 -0
  159. data/lib/oddb/persistence/odba.rb +33 -0
  160. data/lib/oddb/persistence/odba/business/company.rb +13 -0
  161. data/lib/oddb/persistence/odba/business/invoice.rb +15 -0
  162. data/lib/oddb/persistence/odba/drugs/atc.rb +15 -0
  163. data/lib/oddb/persistence/odba/drugs/galenic_form.rb +18 -0
  164. data/lib/oddb/persistence/odba/drugs/galenic_group.rb +13 -0
  165. data/lib/oddb/persistence/odba/drugs/package.rb +25 -0
  166. data/lib/oddb/persistence/odba/drugs/product.rb +13 -0
  167. data/lib/oddb/persistence/odba/drugs/sequence.rb +21 -0
  168. data/lib/oddb/persistence/odba/drugs/substance.rb +21 -0
  169. data/lib/oddb/persistence/odba/drugs/substance_group.rb +13 -0
  170. data/lib/oddb/persistence/odba/drugs/unit.rb +13 -0
  171. data/lib/oddb/persistence/odba/export.rb +26 -0
  172. data/lib/oddb/persistence/odba/model.rb +68 -0
  173. data/lib/oddb/persistence/odba/regulatory/authority.rb +13 -0
  174. data/lib/oddb/persistence/odba/regulatory/registration.rb +13 -0
  175. data/lib/oddb/persistence/odba/text/document.rb +11 -0
  176. data/lib/oddb/persistence/odba/util/code.rb +11 -0
  177. data/lib/oddb/persistence/odba/util/m10l_document.rb +13 -0
  178. data/lib/oddb/persistence/og.rb +16 -0
  179. data/lib/oddb/persistence/og/drugs/composition.rb +14 -0
  180. data/lib/oddb/persistence/og/drugs/product.rb +14 -0
  181. data/lib/oddb/persistence/og/drugs/sequence.rb +15 -0
  182. data/lib/oddb/persistence/og/model.rb +25 -0
  183. data/lib/oddb/persistence/og/util/multilingual.rb +13 -0
  184. data/lib/oddb/redist/rtf_tools/reader.rb +139 -0
  185. data/lib/oddb/regulatory/authority.rb +14 -0
  186. data/lib/oddb/regulatory/registration.rb +15 -0
  187. data/lib/oddb/remote/business/company.rb +23 -0
  188. data/lib/oddb/remote/drugs/active_agent.rb +27 -0
  189. data/lib/oddb/remote/drugs/atc.rb +32 -0
  190. data/lib/oddb/remote/drugs/dose.rb +8 -0
  191. data/lib/oddb/remote/drugs/galenic_form.rb +25 -0
  192. data/lib/oddb/remote/drugs/package.rb +126 -0
  193. data/lib/oddb/remote/drugs/part.rb +30 -0
  194. data/lib/oddb/remote/drugs/product.rb +19 -0
  195. data/lib/oddb/remote/drugs/sequence.rb +46 -0
  196. data/lib/oddb/remote/drugs/substance.rb +20 -0
  197. data/lib/oddb/remote/drugs/unit.rb +19 -0
  198. data/lib/oddb/remote/object.rb +36 -0
  199. data/lib/oddb/remote/text/document.rb +20 -0
  200. data/lib/oddb/remote/util/m10l_document.rb +22 -0
  201. data/lib/oddb/text/chapter.rb +27 -0
  202. data/lib/oddb/text/document.rb +43 -0
  203. data/lib/oddb/text/format.rb +37 -0
  204. data/lib/oddb/text/paragraph.rb +58 -0
  205. data/lib/oddb/text/picture.rb +93 -0
  206. data/lib/oddb/text/table.rb +68 -0
  207. data/lib/oddb/util.rb +8 -0
  208. data/lib/oddb/util/annotated_list.rb +37 -0
  209. data/lib/oddb/util/code.rb +69 -0
  210. data/lib/oddb/util/comparison.rb +36 -0
  211. data/lib/oddb/util/exporter.rb +8 -0
  212. data/lib/oddb/util/feedback.rb +23 -0
  213. data/lib/oddb/util/ipn.rb +48 -0
  214. data/lib/oddb/util/m10l_document.rb +38 -0
  215. data/lib/oddb/util/mail.rb +73 -0
  216. data/lib/oddb/util/money.rb +60 -0
  217. data/lib/oddb/util/multilingual.rb +70 -0
  218. data/lib/oddb/util/quanty.rb +4 -0
  219. data/lib/oddb/util/quanty/fact.rb +229 -0
  220. data/lib/oddb/util/quanty/main.rb +160 -0
  221. data/lib/oddb/util/quanty/parse.rb +853 -0
  222. data/lib/oddb/util/quanty/units.dump +0 -0
  223. data/lib/oddb/util/server.rb +117 -0
  224. data/lib/oddb/util/updater.rb +41 -0
  225. data/lib/oddb/util/ydim.rb +110 -0
  226. data/lib/oddb/util/yus.rb +46 -0
  227. data/test/business/test_company.rb +29 -0
  228. data/test/business/test_price.rb +46 -0
  229. data/test/drugs/test_active_agent.rb +53 -0
  230. data/test/drugs/test_atc.rb +54 -0
  231. data/test/drugs/test_composition.rb +88 -0
  232. data/test/drugs/test_ddd.rb +22 -0
  233. data/test/drugs/test_dose.rb +190 -0
  234. data/test/drugs/test_galenic_form.rb +41 -0
  235. data/test/drugs/test_package.rb +173 -0
  236. data/test/drugs/test_part.rb +32 -0
  237. data/test/drugs/test_product.rb +31 -0
  238. data/test/drugs/test_sequence.rb +140 -0
  239. data/test/drugs/test_substance.rb +51 -0
  240. data/test/drugs/test_substance_group.rb +27 -0
  241. data/test/export/test_rss.rb +94 -0
  242. data/test/export/test_server.rb +117 -0
  243. data/test/export/test_xls.rb +152 -0
  244. data/test/export/test_yaml.rb +120 -0
  245. data/test/import/data/html/whocc/A.html +56 -0
  246. data/test/import/data/html/whocc/A03.html +48 -0
  247. data/test/import/data/html/whocc/A03AB.html +48 -0
  248. data/test/import/data/html/whocc/A06AA.html +47 -0
  249. data/test/import/data/html/whocc/C03.html +47 -0
  250. data/test/import/data/html/whocc/login.html +77 -0
  251. data/test/import/data/xml/ATC_2006.xml +47 -0
  252. data/test/import/data/xml/ATC_2006_ddd.xml +35 -0
  253. data/test/import/test_excel.rb +34 -0
  254. data/test/import/test_rtf.rb +40 -0
  255. data/test/import/test_whocc.rb +315 -0
  256. data/test/remote/drugs/test_active_agent.rb +36 -0
  257. data/test/selenium/selenium-server.jar +0 -0
  258. data/test/selenium/test_atc_browser.rb +122 -0
  259. data/test/selenium/test_atc_guidelines.rb +96 -0
  260. data/test/selenium/test_collect.rb +138 -0
  261. data/test/selenium/test_compare.rb +206 -0
  262. data/test/selenium/test_fachinfo.rb +130 -0
  263. data/test/selenium/test_feedback.rb +196 -0
  264. data/test/selenium/test_init.rb +52 -0
  265. data/test/selenium/test_limit.rb +305 -0
  266. data/test/selenium/test_login.rb +67 -0
  267. data/test/selenium/test_package.rb +512 -0
  268. data/test/selenium/test_patinfo.rb +131 -0
  269. data/test/selenium/test_product.rb +80 -0
  270. data/test/selenium/test_products.rb +142 -0
  271. data/test/selenium/test_search.rb +715 -0
  272. data/test/selenium/test_sequence.rb +543 -0
  273. data/test/selenium/unit.rb +185 -0
  274. data/test/stub/http_server.rb +169 -0
  275. data/test/stub/model.rb +173 -0
  276. data/test/suite.rb +15 -0
  277. data/test/test_model.rb +83 -0
  278. data/test/util/test_code.rb +74 -0
  279. data/test/util/test_ipn.rb +117 -0
  280. data/test/util/test_mail.rb +86 -0
  281. data/test/util/test_multilingual.rb +97 -0
  282. data/test/util/test_server.rb +48 -0
  283. data/test/util/test_updater.rb +353 -0
  284. data/test/util/test_ydim.rb +115 -0
  285. data/test/util/test_yus.rb +79 -0
  286. metadata +418 -0
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::Limit -- de.oddb.org -- 20.12.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/state/global_predefine'
5
+ require 'oddb/html/state/login'
6
+ require 'oddb/html/view/limit'
7
+
8
+ module ODDB
9
+ module Html
10
+ module State
11
+ class Limit < Global
12
+ include State::LoginMethods
13
+ VIEW = View::Limit
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,56 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::Login -- de.oddb.org -- 26.10.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/state/viral/admin'
5
+ require 'oddb/html/state/viral/poweruser'
6
+ require 'oddb/html/view/login'
7
+ require 'yus/session'
8
+
9
+ module ODDB
10
+ module Html
11
+ module State
12
+ module LoginMethods
13
+ attr_accessor :desired_input
14
+ def login_
15
+ reconsider_permissions(@session.login)
16
+ if(@desired_input)
17
+ @session.valid_input.update @desired_input
18
+ trigger @desired_input[:event]
19
+ else
20
+ @session.desired_state || trigger(:home)
21
+ end
22
+ rescue Yus::UnknownEntityError
23
+ @errors.store(:email, create_error(:e_authentication_error, :email, nil))
24
+ self
25
+ rescue Yus::AuthenticationError
26
+ @errors.store(:pass, create_error(:e_authentication_error, :pass, nil))
27
+ self
28
+ end
29
+ private
30
+ def reconsider_permissions(user)
31
+ viral_modules(user) { |mod|
32
+ self.extend(mod)
33
+ }
34
+ end
35
+ def viral_modules(user)
36
+ [
37
+ ['.Admin', State::Viral::Admin],
38
+ ['.PowerUser', State::Viral::PowerUser],
39
+ ].each { |key, mod|
40
+ if(user.allowed?("login", ODDB.config.auth_domain + key))
41
+ yield mod
42
+ end
43
+ }
44
+ end
45
+ end
46
+ module Login
47
+ VIEW = View::Login
48
+ DIRECT_EVENT = :login
49
+ include LoginMethods
50
+ def login
51
+ self
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,130 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::PayPal::Checkout -- de.oddb.org -- 22.01.2008 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/state/global_predefine'
5
+ require 'oddb/html/state/drugs/download_export'
6
+ require 'oddb/html/state/login'
7
+ require 'oddb/html/state/paypal/collect'
8
+ require 'oddb/html/state/paypal/redirect'
9
+ require 'oddb/html/util/known_user'
10
+ require 'oddb/html/view/ajax/json'
11
+ require 'oddb/util/yus'
12
+
13
+ module ODDB
14
+ module Html
15
+ module State
16
+ module PayPal
17
+ class AjaxCheckout < Global
18
+ VOLATILE = true
19
+ VIEW = View::Ajax::Json
20
+ end
21
+ module Checkout
22
+ include State::LoginMethods
23
+ def ajax_autofill
24
+ email = @session.user_input(:email)
25
+ prefs = {}
26
+ keys = checkout_keys()
27
+ keys.delete(:email)
28
+ prefs.update ODDB::Util::Yus.get_preferences(email, keys)
29
+ prefs.store(:email, email) unless prefs.empty?
30
+ AjaxCheckout.new(@session, prefs)
31
+ end
32
+ def checkout
33
+ ## its possible that we know this user already -> log them in.
34
+ missing_keys = [:email, :pass] - @session.input_keys
35
+ if(@session.logged_in?)
36
+ @user = @session.user
37
+ elsif(missing_keys.empty?)
38
+ begin
39
+ @user ||= @session.login
40
+ reconsider_permissions(@user)
41
+ @session.force_login(@user)
42
+ rescue Yus::UnknownEntityError
43
+ # ignore: in this case we simply create a new user in 'create_user'
44
+ rescue Yus::AuthenticationError
45
+ @errors.store(:pass, create_error(:e_authentication_error, :pass, nil))
46
+ end
47
+ end
48
+ input = user_input(checkout_keys(), checkout_mandatory())
49
+ if(error?)
50
+ self
51
+ else
52
+ create_user(input)
53
+ @model.yus_name = @user.name
54
+ @model.save
55
+ State::PayPal::Redirect.new(@session, @model)
56
+ end
57
+ rescue SBSM::ProcessingError => err
58
+ @errors.store(err.key, err)
59
+ self
60
+ end
61
+ def checkout_mandatory
62
+ keys = [ :salutation, :name_last, :name_first, ]
63
+ unless(@session.logged_in?)
64
+ keys.push(:email, :pass, :confirm_pass)
65
+ end
66
+ keys
67
+ end
68
+ def checkout_keys
69
+ checkout_mandatory()
70
+ end
71
+ def collect
72
+ if(@session.is_crawler?)
73
+ trigger :home
74
+ else
75
+ invoice = Business::Invoice.find_by_id(@session.user_input(:invoice))
76
+ state = PayPal::Collect.new(@session, invoice)
77
+ # since the permissions of the current User may have changed, we
78
+ # need to reconsider his viral modules
79
+ if((user = @session.user).is_a?(Util::KnownUser))
80
+ reconsider_permissions(user)
81
+ end
82
+ if invoice
83
+ item = invoice.items.first
84
+ case item.type
85
+ when :export
86
+ if @session.allowed?('download', "#{ODDB.config.auth_domain}.#{item.text}") \
87
+ || invoice.status == 'completed'
88
+ extend State::Drugs::Events
89
+ state = _download item.text
90
+ else
91
+ ## wait for ipn
92
+ end
93
+ else
94
+ if(@session.allowed?('view', ODDB.config.auth_domain))
95
+ if(des = @session.desired_state)
96
+ state = des
97
+ else
98
+ state.extend Drugs::Events
99
+ end
100
+ end
101
+ end
102
+ end
103
+ state
104
+ end
105
+ end
106
+ def create_user(input)
107
+ hash = input.dup
108
+ ## don't store passwords in cookie vars...
109
+ hash.delete(:confirm_pass)
110
+ pass = hash.delete(:pass)
111
+ ## but store the rest of the input there
112
+ hash.each { |key, val| @session.set_cookie_input(key, val) }
113
+ email = hash.delete(:email)
114
+ unless(@user.is_a?(Util::KnownUser))
115
+ @user = ODDB::Util::Yus.create_user(email, pass)
116
+ end
117
+ hash.delete_if { |key, value| value.to_s.empty? }
118
+ @user.set_preferences(hash) unless(hash.empty?)
119
+ reconsider_permissions(@user)
120
+ @session.force_login(@user)
121
+ rescue Yus::DuplicateNameError => e
122
+ raise create_error(:e_duplicate_email, :email, input[:email])
123
+ rescue RuntimeError, Yus::YusError => e
124
+ raise create_error(e.message, :email, input[:email])
125
+ end
126
+ end
127
+ end
128
+ end
129
+ end
130
+ end
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::Paypal::Collect -- de.oddb.org -- 30.01.2008 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/state/global_predefine'
5
+ require 'oddb/html/view/paypal/collect'
6
+
7
+ module ODDB
8
+ module Html
9
+ module State
10
+ module PayPal
11
+ class Collect < Global
12
+ VIEW = View::PayPal::Collect
13
+ def collect
14
+ @model = Business::Invoice.find_by_id(@session.user_input(:invoice))
15
+ state = self
16
+ # since the permissions of the current User may have changed, we
17
+ # need to reconsider his viral modules
18
+ if((user = @session.user).is_a?(Util::KnownUser))
19
+ reconsider_permissions(user)
20
+ end
21
+ item = @model.items.first
22
+ case item.type
23
+ when :export
24
+ if @session.allowed?('download', "#{ODDB.config.auth_domain}.#{item.text}") \
25
+ || @model.status == 'completed'
26
+ extend State::Drugs::Events
27
+ state = _download(item.text)
28
+ else
29
+ ## wait for ipn
30
+ end
31
+ else
32
+ if(@session.allowed?('view', ODDB.config.auth_domain))
33
+ if(des = @session.desired_state)
34
+ state = des
35
+ else
36
+ state.extend Drugs::Events
37
+ end
38
+ end
39
+ end
40
+ state
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::PayPal::Redirect -- de.oddb.org -- 23.01.2008 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/state/global_predefine'
5
+ require 'oddb/html/view/paypal/redirect'
6
+
7
+ module ODDB
8
+ module Html
9
+ module State
10
+ module PayPal
11
+ class Redirect < State::Global
12
+ VIEW = View::PayPal::Redirect
13
+ VOLATILE = true
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::RegisterExport -- de.oddb.org -- 28.07.2008 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/state/global_predefine'
5
+ require 'oddb/html/util/need_all_input'
6
+ require 'oddb/html/view/register_export'
7
+
8
+ module ODDB
9
+ module Html
10
+ module State
11
+ class RegisterExport < Global
12
+ include Util::NeedAllInput
13
+ VIEW = View::RegisterExport
14
+ def init
15
+ super
16
+ @query = @session.persistent_user_input(:query)
17
+ @dstype = @session.persistent_user_input(:dstype) \
18
+ || ODDB.config.default_dstype
19
+ end
20
+ def direct_event
21
+ [:proceed_export, :query, @query, :dstype, @dstype]
22
+ end
23
+ def proceed_export
24
+ query = @session.persistent_user_input(:query)
25
+ dstype = @session.persistent_user_input(:dstype) \
26
+ || ODDB.config.default_dstype
27
+ filename = sprintf('%s_%s.csv', query.tr(' ', '-'), dstype)
28
+ if @model.is_a?(ODDB::Business::Invoice) \
29
+ && @model.items.any? { |item| item.text == filename }
30
+ self
31
+ else
32
+ super
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::RegisterPowerUser -- de.oddb.org -- 21.01.2008 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/state/global_predefine'
5
+ require 'oddb/html/util/need_all_input'
6
+ require 'oddb/html/view/register_poweruser'
7
+
8
+ module ODDB
9
+ module Html
10
+ module State
11
+ class RegisterPowerUser < Global
12
+ include Util::NeedAllInput
13
+ VIEW = View::RegisterPowerUser
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,76 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::Viral::Admin -- de.oddb.org -- 29.10.2007 -- hwyss@ywesee.com
3
+
4
+ require 'oddb/html/state/drugs/admin/package'
5
+ require 'oddb/html/state/drugs/admin/product'
6
+ require 'oddb/html/state/drugs/admin/sequence'
7
+ require 'oddb/html/util/unsaved_helper'
8
+ require 'sbsm/viralstate'
9
+
10
+ module ODDB
11
+ module Html
12
+ module State
13
+ module Viral
14
+ module Admin
15
+ include SBSM::ViralState
16
+ def atc_assign
17
+ email = @session.user.email
18
+ newstate = search
19
+ code = user_input(:code)
20
+ if(atc = ODDB::Drugs::Atc.find_by_code(code))
21
+ packages = newstate.model.find { |list| list.atc.nil? }
22
+ packages.each { |package|
23
+ if((seq = package.sequence) && seq.atc.nil?)
24
+ seq.atc = atc
25
+ seq.data_origins[:atc] = email
26
+ seq.save
27
+ end
28
+ }
29
+ packages.atc = atc
30
+ else
31
+ @errors.store :atc_assign, create_error(:e_unknown_atc, :atc_assign, code)
32
+ end
33
+ newstate
34
+ end
35
+ def limited?
36
+ false
37
+ end
38
+ def new_package
39
+ if((uid = @session.user_input(:uid)) \
40
+ && (sequence = ODDB::Drugs::Sequence.find_by_uid(uid)))
41
+ pac = ODDB::Drugs::Package.new
42
+ pac.sequence = Util::UnsavedHelper.new(sequence)
43
+ part = ODDB::Drugs::Part.new
44
+ part.package = Util::UnsavedHelper.new(pac)
45
+ pac.parts.push part
46
+ Drugs::Admin::NewPackage.new(@session, pac)
47
+ end
48
+ end
49
+ def new_sequence
50
+ if((uid = @session.user_input(:uid)) \
51
+ && (product = ODDB::Drugs::Product.find_by_uid(uid)))
52
+ seq = ODDB::Drugs::Sequence.new
53
+ seq.product = Util::UnsavedHelper.new(product)
54
+ Drugs::Admin::NewSequence.new(@session, seq)
55
+ end
56
+ end
57
+ def _package(code)
58
+ if(package = _package_by_code(code))
59
+ State::Drugs::Admin::Package.new(@session, package)
60
+ end
61
+ end
62
+ def _product(uid)
63
+ if(product = ODDB::Drugs::Product.find_by_uid(uid))
64
+ State::Drugs::Admin::Product.new(@session, product)
65
+ end
66
+ end
67
+ def _sequence(uid)
68
+ if(sequence = ODDB::Drugs::Sequence.find_by_uid(uid))
69
+ State::Drugs::Admin::Sequence.new(@session, sequence)
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::State::Viral::PowerUser -- de.oddb.org -- 23.01.2008 -- hwyss@ywesee.com
3
+
4
+ require 'sbsm/viralstate'
5
+
6
+ module ODDB
7
+ module Html
8
+ module State
9
+ module Viral
10
+ module PowerUser
11
+ include SBSM::ViralState
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::Util::AnnotatedList -- de.oddb.org -- 06.12.2006 -- hwyss@ywesee.com
3
+
4
+ module ODDB
5
+ module Html
6
+ module Util
7
+ class AnnotatedList < Array
8
+ def initialize(annotations = {})
9
+ if(annotations.is_a?(Hash))
10
+ super()
11
+ @annotations = annotations
12
+ else
13
+ super
14
+ @annotations = {}
15
+ end
16
+ end
17
+ def sort_by(*args, &block)
18
+ _delegate(super(*args, &block))
19
+ end
20
+ def [](*args, &block)
21
+ _delegate(super(*args, &block))
22
+ end
23
+ def method_missing(key, *args)
24
+ mname = key.id2name
25
+ if(args.size == 1 && /=$/.match(mname))
26
+ mname.chop!
27
+ @annotations[mname.to_sym] = args.first
28
+ else
29
+ @annotations[key]
30
+ end
31
+ end
32
+ private
33
+ def _delegate(content)
34
+ self.dup.clear.concat(content)
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end