kaui 2.1.0 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (269) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +8 -7
  3. data/Rakefile +4 -2
  4. data/app/assets/config/kaui_manifest.js +45 -0
  5. data/app/assets/javascripts/jquery.spin.js +76 -0
  6. data/app/assets/javascripts/kaui/kaui.js +76 -0
  7. data/app/assets/javascripts/kaui_application.js +25 -0
  8. data/app/assets/javascripts/spin.js +76 -0
  9. data/app/assets/stylesheets/bootstrap_and_overrides.scss +240 -0
  10. data/app/assets/stylesheets/kaui/{account.less → account.scss} +4 -0
  11. data/app/assets/stylesheets/kaui/{audit.less → audit.scss} +5 -1
  12. data/app/assets/stylesheets/kaui/{common.less → common.scss} +17 -15
  13. data/app/assets/stylesheets/kaui/{datatable.less → datatable.scss} +6 -3
  14. data/app/assets/stylesheets/kaui/{header.less → header.scss} +16 -12
  15. data/app/assets/stylesheets/kaui/{home.less → home.scss} +7 -4
  16. data/app/assets/stylesheets/kaui/{invoice.less → invoice.scss} +7 -3
  17. data/app/assets/stylesheets/kaui/kaui.scss +265 -0
  18. data/app/assets/stylesheets/kaui/kaui_bootstrap.scss +3 -0
  19. data/app/assets/stylesheets/kaui/{overdue.less → overdue.scss} +3 -1
  20. data/app/assets/stylesheets/kaui/{payment.less → payment.scss} +3 -0
  21. data/app/assets/stylesheets/kaui/{subscription.less → subscription.scss} +4 -1
  22. data/app/assets/stylesheets/kaui/{tags.less → tags.scss} +9 -5
  23. data/app/assets/stylesheets/kaui/timeline.scss +7 -0
  24. data/app/assets/stylesheets/kaui/tooltip.scss +15 -0
  25. data/app/controllers/kaui/account_children_controller.rb +25 -28
  26. data/app/controllers/kaui/account_custom_fields_controller.rb +16 -15
  27. data/app/controllers/kaui/account_emails_controller.rb +28 -25
  28. data/app/controllers/kaui/account_tags_controller.rb +37 -34
  29. data/app/controllers/kaui/account_timelines_controller.rb +38 -33
  30. data/app/controllers/kaui/accounts_controller.rb +268 -250
  31. data/app/controllers/kaui/admin_allowed_users_controller.rb +105 -99
  32. data/app/controllers/kaui/admin_controller.rb +32 -31
  33. data/app/controllers/kaui/admin_tenants_controller.rb +434 -388
  34. data/app/controllers/kaui/audit_logs_controller.rb +86 -83
  35. data/app/controllers/kaui/bundle_tags_controller.rb +24 -20
  36. data/app/controllers/kaui/bundles_controller.rb +96 -82
  37. data/app/controllers/kaui/chargebacks_controller.rb +36 -33
  38. data/app/controllers/kaui/charges_controller.rb +23 -20
  39. data/app/controllers/kaui/credits_controller.rb +28 -25
  40. data/app/controllers/kaui/custom_fields_controller.rb +172 -38
  41. data/app/controllers/kaui/engine_controller.rb +2 -1
  42. data/app/controllers/kaui/engine_controller_util.rb +130 -117
  43. data/app/controllers/kaui/home_controller.rb +230 -217
  44. data/app/controllers/kaui/invoice_items_controller.rb +43 -39
  45. data/app/controllers/kaui/invoice_tags_controller.rb +24 -20
  46. data/app/controllers/kaui/invoices_controller.rb +132 -117
  47. data/app/controllers/kaui/login_proxy_controller.rb +2 -1
  48. data/app/controllers/kaui/payment_methods_controller.rb +102 -94
  49. data/app/controllers/kaui/payments_controller.rb +95 -92
  50. data/app/controllers/kaui/queues_controller.rb +47 -14
  51. data/app/controllers/kaui/refunds_controller.rb +36 -33
  52. data/app/controllers/kaui/registrations_controller.rb +7 -7
  53. data/app/controllers/kaui/role_definitions_controller.rb +17 -14
  54. data/app/controllers/kaui/sessions_controller.rb +7 -4
  55. data/app/controllers/kaui/subscriptions_controller.rb +197 -187
  56. data/app/controllers/kaui/tag_definitions_controller.rb +28 -27
  57. data/app/controllers/kaui/tags_controller.rb +25 -22
  58. data/app/controllers/kaui/tenants_controller.rb +30 -28
  59. data/app/controllers/kaui/transactions_controller.rb +43 -38
  60. data/app/helpers/kaui/account_helper.rb +16 -14
  61. data/app/helpers/kaui/application_helper.rb +8 -3
  62. data/app/helpers/kaui/date_helper.rb +3 -2
  63. data/app/helpers/kaui/home_helper.rb +2 -0
  64. data/app/helpers/kaui/locale_helper.rb +7 -6
  65. data/app/helpers/kaui/money_helper.rb +2 -1
  66. data/app/helpers/kaui/object_helper.rb +11 -10
  67. data/app/helpers/kaui/payment_helper.rb +7 -6
  68. data/app/helpers/kaui/payment_method_helper.rb +3 -2
  69. data/app/helpers/kaui/permissions_helper.rb +9 -9
  70. data/app/helpers/kaui/plugin_helper.rb +25 -23
  71. data/app/helpers/kaui/subscription_helper.rb +27 -29
  72. data/app/helpers/kaui/us_states_helper.rb +7 -6
  73. data/app/helpers/kaui/uuid_helper.rb +7 -5
  74. data/app/models/kaui/ability.rb +19 -12
  75. data/app/models/kaui/account.rb +45 -28
  76. data/app/models/kaui/account_email.rb +23 -20
  77. data/app/models/kaui/account_timeline.rb +5 -1
  78. data/app/models/kaui/admin.rb +65 -64
  79. data/app/models/kaui/admin_tenant.rb +81 -82
  80. data/app/models/kaui/allowed_user.rb +13 -9
  81. data/app/models/kaui/allowed_user_tenant.rb +4 -2
  82. data/app/models/kaui/application_record.rb +2 -0
  83. data/app/models/kaui/audit_log.rb +6 -3
  84. data/app/models/kaui/base.rb +13 -7
  85. data/app/models/kaui/bundle.rb +41 -24
  86. data/app/models/kaui/catalog.rb +118 -113
  87. data/app/models/kaui/chargeback.rb +5 -1
  88. data/app/models/kaui/credit.rb +4 -1
  89. data/app/models/kaui/custom_field.rb +9 -6
  90. data/app/models/kaui/invoice.rb +25 -22
  91. data/app/models/kaui/invoice_item.rb +9 -6
  92. data/app/models/kaui/invoice_payment.rb +49 -54
  93. data/app/models/kaui/killbill_authenticatable.rb +14 -8
  94. data/app/models/kaui/killbill_registerable.rb +7 -0
  95. data/app/models/kaui/overdue.rb +64 -65
  96. data/app/models/kaui/payment.rb +22 -19
  97. data/app/models/kaui/payment_method.rb +48 -39
  98. data/app/models/kaui/payment_state.rb +41 -38
  99. data/app/models/kaui/rails_methods.rb +9 -9
  100. data/app/models/kaui/refund.rb +7 -1
  101. data/app/models/kaui/role_definition.rb +5 -1
  102. data/app/models/kaui/simple_plan.rb +5 -3
  103. data/app/models/kaui/subscription.rb +10 -7
  104. data/app/models/kaui/tag.rb +25 -22
  105. data/app/models/kaui/tag_definition.rb +50 -45
  106. data/app/models/kaui/tenant.rb +6 -5
  107. data/app/models/kaui/transaction.rb +43 -31
  108. data/app/models/kaui/user.rb +10 -16
  109. data/app/models/kaui/user_role.rb +8 -5
  110. data/app/views/kaui/accounts/_billing_info.html.erb +1 -1
  111. data/app/views/kaui/accounts/_form.html.erb +2 -2
  112. data/app/views/kaui/accounts/index.html.erb +2 -0
  113. data/app/views/kaui/admin_allowed_users/_form.html.erb +3 -3
  114. data/app/views/kaui/admin_tenants/_form_catalog_translation.erb +1 -1
  115. data/app/views/kaui/admin_tenants/_form_invoice_template.erb +1 -1
  116. data/app/views/kaui/admin_tenants/_form_invoice_translation.erb +1 -1
  117. data/app/views/kaui/admin_tenants/_show_catalog_simple.erb +11 -5
  118. data/app/views/kaui/admin_tenants/new_catalog.html.erb +2 -2
  119. data/app/views/kaui/admin_tenants/new_overdue_config.html.erb +2 -2
  120. data/app/views/kaui/admin_tenants/new_plan_currency.html.erb +1 -1
  121. data/app/views/kaui/bundles/index.html.erb +1 -1
  122. data/app/views/kaui/bundles/transfer.html.erb +13 -5
  123. data/app/views/kaui/invoices/_invoice_table.html.erb +1 -1
  124. data/app/views/kaui/layouts/kaui_flash.html.erb +24 -0
  125. data/app/views/kaui/layouts/kaui_header.html.erb +19 -2
  126. data/app/views/kaui/payment_methods/_payment_methods_details_table.html.erb +13 -4
  127. data/app/views/kaui/payments/_payment_table.html.erb +21 -11
  128. data/app/views/kaui/payments/index.html.erb +9 -9
  129. data/app/views/kaui/queues/index.html.erb +1 -1
  130. data/app/views/kaui/subscriptions/_cancel_by_date_modal.html.erb +1 -4
  131. data/app/views/kaui/subscriptions/_edit_form.html.erb +1 -1
  132. data/app/views/kaui/subscriptions/_form.html.erb +1 -1
  133. data/app/views/kaui/subscriptions/_subscriptions_table.html.erb +3 -3
  134. data/app/views/kaui/subscriptions/edit_bcd.erb +1 -1
  135. data/app/views/kaui/tag_definitions/index.html.erb +2 -2
  136. data/app/views/kaui/tags/index.html.erb +1 -0
  137. data/config/initializers/bootstrap_datepicker_rails.rb +3 -0
  138. data/config/initializers/devise.rb +8 -6
  139. data/config/initializers/js_routes.rb +9 -0
  140. data/config/initializers/kilbill_client_init.rb +13 -0
  141. data/config/initializers/killbill_authenticatable.rb +71 -21
  142. data/config/initializers/killbill_registerable.rb +5 -3
  143. data/config/initializers/time_formats.rb +6 -4
  144. data/config/locales/en.yml +78 -1
  145. data/config/routes.rb +34 -32
  146. data/db/migrate/20130812155313_devise_create_kaui_users.rb +10 -8
  147. data/db/migrate/20150109214021_create_kaui_tenants.rb +10 -8
  148. data/db/migrate/20150112232813_create_kaui_allowed_users.rb +10 -8
  149. data/lib/generators/kaui/install/install_generator.rb +23 -20
  150. data/lib/generators/kaui/install/templates/config/initializers/kaui.rb +3 -1
  151. data/lib/kaui/engine.rb +17 -5
  152. data/lib/kaui/installer/installer.rb +27 -26
  153. data/lib/kaui/version.rb +3 -1
  154. data/lib/kaui.rb +26 -37
  155. data/lib/tasks/kaui_tasks.rake +1 -0
  156. metadata +140 -442
  157. data/app/assets/javascripts/application.js +0 -17
  158. data/app/assets/javascripts/kaui/bootstrap-tweaks.js +0 -172
  159. data/app/assets/stylesheets/bootstrap_and_overrides.css.less +0 -44
  160. data/app/assets/stylesheets/kaui/kaui.less +0 -21
  161. data/app/assets/stylesheets/kaui/timeline.less +0 -4
  162. data/config/initializers/asset.rb +0 -1
  163. data/config/initializers/kilbill-client-init.rb +0 -9
  164. data/db/schema.rb +0 -15
  165. data/test/dummy/README.rdoc +0 -261
  166. data/test/dummy/Rakefile +0 -7
  167. data/test/dummy/app/controllers/application_controller.rb +0 -9
  168. data/test/dummy/app/helpers/application_helper.rb +0 -2
  169. data/test/dummy/bin/bundle +0 -3
  170. data/test/dummy/bin/rails +0 -4
  171. data/test/dummy/bin/rake +0 -4
  172. data/test/dummy/bin/setup +0 -38
  173. data/test/dummy/bin/update +0 -29
  174. data/test/dummy/bin/yarn +0 -11
  175. data/test/dummy/config/application.rb +0 -18
  176. data/test/dummy/config/boot.rb +0 -3
  177. data/test/dummy/config/database.yml +0 -27
  178. data/test/dummy/config/environment.rb +0 -5
  179. data/test/dummy/config/environments/development.rb +0 -58
  180. data/test/dummy/config/environments/production.rb +0 -91
  181. data/test/dummy/config/environments/test.rb +0 -49
  182. data/test/dummy/config/initializers/application_controller_renderer.rb +0 -6
  183. data/test/dummy/config/initializers/assets.rb +0 -14
  184. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  185. data/test/dummy/config/initializers/cookies_serializer.rb +0 -5
  186. data/test/dummy/config/initializers/filter_parameter_logging.rb +0 -4
  187. data/test/dummy/config/initializers/inflections.rb +0 -16
  188. data/test/dummy/config/initializers/killbill_client.rb +0 -1
  189. data/test/dummy/config/initializers/mime_types.rb +0 -4
  190. data/test/dummy/config/initializers/money.rb +0 -2
  191. data/test/dummy/config/initializers/new_framework_defaults_5_1.rb +0 -14
  192. data/test/dummy/config/initializers/secret_token.rb +0 -7
  193. data/test/dummy/config/initializers/session_store.rb +0 -8
  194. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  195. data/test/dummy/config/locales/en.yml +0 -33
  196. data/test/dummy/config/routes.rb +0 -3
  197. data/test/dummy/config/secrets.yml +0 -32
  198. data/test/dummy/config/symmetric-encryption.yml +0 -135
  199. data/test/dummy/config.ru +0 -4
  200. data/test/dummy/db/schema.rb +0 -52
  201. data/test/dummy/public/404.html +0 -26
  202. data/test/dummy/public/422.html +0 -26
  203. data/test/dummy/public/500.html +0 -25
  204. data/test/dummy/public/favicon.ico +0 -0
  205. data/test/dummy/script/rails +0 -6
  206. data/test/fixtures/SpyCarAdvanced.xml +0 -824
  207. data/test/fixtures/catalog-v1.xml +0 -73
  208. data/test/fixtures/catalog_translation_fr-v1.properties +0 -1
  209. data/test/fixtures/invoice_template-v1.html +0 -100
  210. data/test/fixtures/invoice_translation_fr-v1.properties +0 -23
  211. data/test/fixtures/overdue-v1.xml +0 -49
  212. data/test/fixtures/stripe.yml +0 -2
  213. data/test/functional/kaui/account_children_controller_test.rb +0 -32
  214. data/test/functional/kaui/account_custom_fields_controller_test.rb +0 -29
  215. data/test/functional/kaui/account_emails_controller_test.rb +0 -55
  216. data/test/functional/kaui/account_tags_controller_test.rb +0 -48
  217. data/test/functional/kaui/account_timelines_controller_test.rb +0 -20
  218. data/test/functional/kaui/accounts_controller_test.rb +0 -297
  219. data/test/functional/kaui/admin_allowed_users_controller_test.rb +0 -234
  220. data/test/functional/kaui/admin_controller_test.rb +0 -45
  221. data/test/functional/kaui/admin_tenants_controller_test.rb +0 -352
  222. data/test/functional/kaui/audit_logs_controller_test.rb +0 -71
  223. data/test/functional/kaui/bundle_tags_controller_test.rb +0 -23
  224. data/test/functional/kaui/bundles_controller_test.rb +0 -130
  225. data/test/functional/kaui/chargebacks_controller_test.rb +0 -42
  226. data/test/functional/kaui/charges_controller_test.rb +0 -60
  227. data/test/functional/kaui/credits_controller_test.rb +0 -54
  228. data/test/functional/kaui/custom_fields_controller_test.rb +0 -52
  229. data/test/functional/kaui/functional_test_helper.rb +0 -13
  230. data/test/functional/kaui/functional_test_helper_nosetup.rb +0 -120
  231. data/test/functional/kaui/home_controller_test.rb +0 -407
  232. data/test/functional/kaui/invoice_items_controller_test.rb +0 -82
  233. data/test/functional/kaui/invoices_controller_test.rb +0 -88
  234. data/test/functional/kaui/login_proxy_controller_test.rb +0 -12
  235. data/test/functional/kaui/payment_methods_controller_test.rb +0 -52
  236. data/test/functional/kaui/payments_controller_test.rb +0 -59
  237. data/test/functional/kaui/queues_controller_test.rb +0 -17
  238. data/test/functional/kaui/refunds_controller_test.rb +0 -63
  239. data/test/functional/kaui/registrations_controller_test.rb +0 -49
  240. data/test/functional/kaui/role_definitions_controller_test.rb +0 -47
  241. data/test/functional/kaui/subscriptions_controller_test.rb +0 -194
  242. data/test/functional/kaui/tag_definitions_controller_test.rb +0 -29
  243. data/test/functional/kaui/tags_controller_test.rb +0 -21
  244. data/test/functional/kaui/tenants_controller_test.rb +0 -60
  245. data/test/functional/kaui/transactions_controller_test.rb +0 -90
  246. data/test/integration/kaui/date_helper_integration_test.rb +0 -16
  247. data/test/integration/kaui/integration_test_helper.rb +0 -32
  248. data/test/integration/kaui/navigation_test.rb +0 -43
  249. data/test/killbill_test_helper.rb +0 -219
  250. data/test/test_helper.rb +0 -22
  251. data/test/unit/helpers/kaui/admin_allowed_users_helper_test.rb +0 -6
  252. data/test/unit/helpers/kaui/admin_tenants_helper_test.rb +0 -6
  253. data/test/unit/helpers/kaui/payment_method_helper_test.rb +0 -17
  254. data/test/unit/helpers/kaui/tenants_helper_test.rb +0 -6
  255. data/test/unit/helpers/kaui/uuid_helper_test.rb +0 -16
  256. data/test/unit/kaui/account_email_test.rb +0 -19
  257. data/test/unit/kaui/account_test.rb +0 -14
  258. data/test/unit/kaui/admin_tenant_test.rb +0 -132
  259. data/test/unit/kaui/allowed_user_test.rb +0 -34
  260. data/test/unit/kaui/base_test.rb +0 -23
  261. data/test/unit/kaui/date_helper_test.rb +0 -26
  262. data/test/unit/kaui/invoice_item_test.rb +0 -11
  263. data/test/unit/kaui/invoice_payment_test.rb +0 -42
  264. data/test/unit/kaui/invoice_test.rb +0 -20
  265. data/test/unit/kaui/money_helper_test.rb +0 -16
  266. data/test/unit/kaui/payment_test.rb +0 -42
  267. data/test/unit/kaui/tag_definition_test.rb +0 -11
  268. data/test/unit/kaui/tenant_test.rb +0 -19
  269. /data/app/assets/stylesheets/{application.css → kaui_application.css} +0 -0
@@ -1,11 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kaui
2
4
  module UsStatesHelper
5
+ def all_us_states
6
+ us_states_yaml_file = File.join(File.dirname(__FILE__), 'us_states_helper.yml')
7
+ states = YAML.load_file(us_states_yaml_file)
3
8
 
4
- def get_U_S_states
5
- us_states_yaml_file = File.join(File.dirname(__FILE__), 'us_states_helper.yml')
6
- states = YAML::load_file(us_states_yaml_file)
7
-
8
- states.map { |state| [state[:state_name],state[:abbreviation]]}
9
+ states.map { |state| [state[:state_name], state[:abbreviation]] }
9
10
  end
10
11
  end
11
- end
12
+ end
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kaui
2
4
  module UuidHelper
3
-
4
5
  def truncate_uuid(uuid)
5
6
  return uuid unless uuid =~ /[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}/
7
+
6
8
  split = uuid.split('-')
7
- split[0] + '-...-' + split[4]
9
+ "#{split[0]}-...-#{split[4]}"
8
10
  end
9
11
  module_function :truncate_uuid
10
12
 
@@ -12,9 +14,9 @@ module Kaui
12
14
  content_tag(:span, truncate_uuid(object_id),
13
15
  id: "#{object_id}-popover", class: 'object-id-popover', title: title,
14
16
  data: {
15
- id: object_id,
16
- placement: placement,
17
- } )
17
+ id: object_id,
18
+ placement: placement
19
+ })
18
20
  end
19
21
  end
20
22
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kaui
2
4
  class Ability
3
5
  include CanCan::Ability
@@ -14,19 +16,28 @@ module Kaui
14
16
  # permission is something like invoice:item_adjust or payment:refund
15
17
  # We rely on a naming convention where the left part refers to a Kaui model
16
18
  model, action = permission_to_model_action(permission)
17
- if model == '*' and action == '*'
19
+ if (model == '*') && (action == '*')
18
20
  # All permissions!
19
21
  can :manage, :all
20
- elsif model == '*' and action != '*'
22
+ elsif (model == '*') && (action != '*')
21
23
  # TODO
22
24
  elsif action == '*'
23
- # TODO Not sure the :all is really working (but we don't use it)
24
- can :all, ('Kaui::' + model.camelize).constantize rescue nil
25
+ # TODO: Not sure the :all is really working (but we don't use it)
26
+ begin
27
+ can :all, "Kaui::#{model.camelize}".constantize
28
+ rescue StandardError
29
+ nil
30
+ end
25
31
  else
26
- can action.to_sym, ('Kaui::' + model.camelize).constantize rescue nil
32
+ begin
33
+ can action.to_sym, "Kaui::#{model.camelize}".constantize
34
+ rescue StandardError
35
+ nil
36
+ end
27
37
  end
28
38
  end
29
- rescue KillBillClient::API::Unauthorized => _
39
+ rescue KillBillClient::API::Unauthorized => _e
40
+ nil
30
41
  end
31
42
 
32
43
  def permission_to_model_action(permission)
@@ -39,12 +50,8 @@ module Kaui
39
50
  #
40
51
  to_be_model, action = permission.split(':')
41
52
  # Currently the only actions implemented for overdue and catalog (upload_config) are those implemented at the tenant level:
42
- if %w(tenant overdue catalog).include?(to_be_model)
43
- to_be_model = 'admin_tenant'
44
- end
45
- if to_be_model == 'entitlement'
46
- to_be_model = 'subscription'
47
- end
53
+ to_be_model = 'admin_tenant' if %w[tenant overdue catalog].include?(to_be_model)
54
+ to_be_model = 'subscription' if to_be_model == 'entitlement'
48
55
 
49
56
  [to_be_model, action]
50
57
  end
@@ -1,40 +1,57 @@
1
- class Kaui::Account < KillBillClient::Model::Account
1
+ # frozen_string_literal: true
2
2
 
3
- def self.find_by_id_or_key(account_id_or_key, with_balance = false, with_balance_and_cba = false, options = {})
4
- if account_id_or_key =~ /[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}/
5
- begin
6
- find_by_id(account_id_or_key, with_balance, with_balance_and_cba, options)
7
- rescue => e
3
+ module Kaui
4
+ class Account < KillBillClient::Model::Account
5
+ attr_accessor :phone, :bill_cycle_day_local
6
+
7
+ def check_account_details_phone
8
+ return true if phone =~ /\A(?:\+?\d{1,3}\s*-?)?\(?(?:\d{3})?\)?[- ]?\d{3}[- ]?\d{4}\z/i
9
+
10
+ false
11
+ end
12
+
13
+ def check_account_details_bill_cycle_day_local
14
+ return true if bill_cycle_day_local.to_i.between?(1, 31)
15
+
16
+ false
17
+ end
18
+
19
+ def self.find_by_id_or_key(account_id_or_key, with_balance, with_balance_and_cba, options = {})
20
+ if account_id_or_key =~ /[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}/
8
21
  begin
9
- # account_id_or_key looked like an id, but maybe it's an external key (this will happen in tests)?
10
- find_by_external_key(account_id_or_key, with_balance, with_balance_and_cba, options)
11
- rescue => _
12
- # Nope - raise the initial exception
13
- raise e
22
+ find_by_id(account_id_or_key, with_balance, with_balance_and_cba, options)
23
+ rescue StandardError => e
24
+ begin
25
+ # account_id_or_key looked like an id, but maybe it's an external key (this will happen in tests)?
26
+ find_by_external_key(account_id_or_key, with_balance, with_balance_and_cba, options)
27
+ rescue StandardError => _
28
+ # Nope - raise the initial exception
29
+ raise e
30
+ end
14
31
  end
32
+ else
33
+ find_by_external_key(account_id_or_key, with_balance, with_balance_and_cba, options)
15
34
  end
16
- else
17
- find_by_external_key(account_id_or_key, with_balance, with_balance_and_cba, options)
18
35
  end
19
- end
20
36
 
21
- def self.list_or_search(search_key = nil, offset = 0, limit = 10, options = {})
22
- if search_key.present?
23
- find_in_batches_by_search_key(search_key, offset, limit, true, false, options)
24
- else
25
- find_in_batches(offset, limit, true, false, options)
37
+ def self.list_or_search(search_key = nil, offset = 0, limit = 10, options = {})
38
+ if search_key.present?
39
+ find_in_batches_by_search_key(search_key, offset, limit, true, false, options)
40
+ else
41
+ find_in_batches(offset, limit, true, false, options)
42
+ end
26
43
  end
27
- end
28
44
 
29
- def balance_to_money
30
- Kaui::Base.to_money(account_balance.abs, currency)
31
- end
45
+ def balance_to_money
46
+ Kaui::Base.to_money(account_balance.abs, currency)
47
+ end
32
48
 
33
- def cba_to_money
34
- Kaui::Base.to_money(account_cba.abs, currency)
35
- end
49
+ def cba_to_money
50
+ Kaui::Base.to_money(account_cba.abs, currency)
51
+ end
36
52
 
37
- def persisted?
38
- !account_id.blank?
53
+ def persisted?
54
+ !account_id.blank?
55
+ end
39
56
  end
40
57
  end
@@ -1,27 +1,30 @@
1
- class Kaui::AccountEmail < KillBillClient::Model::AccountEmailAttributes
1
+ # frozen_string_literal: true
2
2
 
3
- def self.find_all_sorted_by_account_id(account_id, audit = 'NONE', options = {})
4
- emails = Kaui::Account.new(:account_id => account_id).emails(audit, options)
5
- emails.map { |email| Kaui::AccountEmail.new(email.to_hash) }.sort
6
- end
3
+ module Kaui
4
+ class AccountEmail < KillBillClient::Model::AccountEmailAttributes
5
+ def self.find_all_sorted_by_account_id(account_id, audit = 'NONE', options = {})
6
+ emails = Kaui::Account.new(account_id: account_id).emails(audit, options)
7
+ emails.map { |email| Kaui::AccountEmail.new(email.to_hash) }.sort
8
+ end
7
9
 
8
- def create(user = nil, reason = nil, comment = nil, options = {})
9
- account = Kaui::Account.new(:account_id => account_id)
10
- account.add_email(email, user, reason, comment, options)
11
- end
10
+ def create(user = nil, reason = nil, comment = nil, options = {})
11
+ account = Kaui::Account.new(account_id: account_id)
12
+ account.add_email(email, user, reason, comment, options)
13
+ end
12
14
 
13
- def destroy(user = nil, reason = nil, comment = nil, options = {})
14
- account = Kaui::Account.new(:account_id => account_id)
15
- account.remove_email(email, user, reason, comment, options)
16
- end
15
+ def destroy(user = nil, reason = nil, comment = nil, options = {})
16
+ account = Kaui::Account.new(account_id: account_id)
17
+ account.remove_email(email, user, reason, comment, options)
18
+ end
17
19
 
18
- def <=>(account_email)
19
- if account_email.nil?
20
- -1
21
- elsif account_email.email.nil?
22
- email.nil? ? 0 : 1
23
- else
24
- email.to_s <=> account_email.email.to_s
20
+ def <=>(other)
21
+ if other.nil?
22
+ -1
23
+ elsif other.email.nil?
24
+ email.nil? ? 0 : 1
25
+ else
26
+ email.to_s <=> other.email.to_s
27
+ end
25
28
  end
26
29
  end
27
30
  end
@@ -1,2 +1,6 @@
1
- class Kaui::AccountTimeline < KillBillClient::Model::AccountTimeline
1
+ # frozen_string_literal: true
2
+
3
+ module Kaui
4
+ class AccountTimeline < KillBillClient::Model::AccountTimeline
5
+ end
2
6
  end
@@ -1,80 +1,81 @@
1
- class Kaui::Admin < KillBillClient::Model::Resource
1
+ # frozen_string_literal: true
2
2
 
3
- KILLBILL_API_ADMIN_PREFIX = "#{KILLBILL_API_PREFIX}/admin"
4
- KILLBILL_API_QUEUES_PREFIX = "#{KILLBILL_API_ADMIN_PREFIX}/queues"
3
+ module Kaui
4
+ class Admin < KillBillClient::Model::Resource
5
+ KILLBILL_API_ADMIN_PREFIX = "#{KILLBILL_API_PREFIX}/admin".freeze
6
+ KILLBILL_API_QUEUES_PREFIX = "#{KILLBILL_API_ADMIN_PREFIX}/queues".freeze
5
7
 
6
- KILLBILL_API_CLOCK_PREFIX = "#{KILLBILL_API_PREFIX}/test/clock"
8
+ KILLBILL_API_CLOCK_PREFIX = "#{KILLBILL_API_PREFIX}/test/clock".freeze
7
9
 
8
- class << self
10
+ class << self
11
+ def get_queues_entries(account_id, options = {})
12
+ res = KillBillClient::API.get KILLBILL_API_QUEUES_PREFIX,
13
+ {
14
+ accountId: account_id,
15
+ withHistory: options[:withHistory],
16
+ minDate: options[:minDate],
17
+ maxDate: options[:maxDate]
18
+ },
19
+ {
20
+ accept: 'application/octet-stream'
21
+ }.merge(options)
22
+ JSON.parse res.body
23
+ end
9
24
 
10
- def get_queues_entries(account_id, options = {})
11
- res = KillBillClient::API.get KILLBILL_API_QUEUES_PREFIX,
12
- {
13
- :accountId => account_id,
14
- :withHistory => options[:withHistory],
15
- :minDate => options[:minDate],
16
- :maxDate => options[:maxDate]
17
- },
18
- {
19
- :accept => 'application/octet-stream'
20
- }.merge(options)
21
- JSON.parse res.body
22
- end
23
-
24
- def fix_transaction_state(payment_id, transaction_id, transaction_status, user = nil, reason = nil, comment = nil, options = {})
25
- KillBillClient::API.put "#{KILLBILL_API_ADMIN_PREFIX}/payments/#{payment_id}/transactions/#{transaction_id}",
26
- {:transactionStatus => transaction_status}.to_json,
27
- {},
28
- {
29
- :user => user,
30
- :reason => reason,
31
- :comment => comment,
32
- }.merge(options)
33
- end
25
+ def fix_transaction_state(payment_id, transaction_id, transaction_status, user = nil, reason = nil, comment = nil, options = {})
26
+ KillBillClient::API.put "#{KILLBILL_API_ADMIN_PREFIX}/payments/#{payment_id}/transactions/#{transaction_id}",
27
+ { transactionStatus: transaction_status }.to_json,
28
+ {},
29
+ {
30
+ user: user,
31
+ reason: reason,
32
+ comment: comment
33
+ }.merge(options)
34
+ end
34
35
 
35
- def get_clock(time_zone, options)
36
- params = {}
37
- params[:timeZone] = time_zone unless time_zone.nil?
36
+ def get_clock(time_zone, options)
37
+ params = {}
38
+ params[:timeZone] = time_zone unless time_zone.nil?
38
39
 
39
- res = KillBillClient::API.get KILLBILL_API_CLOCK_PREFIX,
40
- params,
41
- options
42
- JSON.parse res.body
43
- end
40
+ res = KillBillClient::API.get KILLBILL_API_CLOCK_PREFIX,
41
+ params,
42
+ options
43
+ JSON.parse res.body
44
+ end
44
45
 
45
- def set_clock(requested_date, time_zone, options)
46
- params = {}
47
- params[:requestedDate] = requested_date unless requested_date.nil?
48
- params[:timeZone] = time_zone unless time_zone.nil?
46
+ def set_clock(requested_date, time_zone, options)
47
+ params = {}
48
+ params[:requestedDate] = requested_date unless requested_date.nil?
49
+ params[:timeZone] = time_zone unless time_zone.nil?
49
50
 
50
- # The default 5s is not always enough
51
- params[:timeoutSec] ||= 10
51
+ # The default 5s is not always enough
52
+ params[:timeoutSec] ||= 10
52
53
 
53
- res = KillBillClient::API.post KILLBILL_API_CLOCK_PREFIX,
54
- {},
55
- params,
56
- {}.merge(options)
57
- JSON.parse res.body
58
- end
54
+ res = KillBillClient::API.post KILLBILL_API_CLOCK_PREFIX,
55
+ {},
56
+ params,
57
+ {}.merge(options)
58
+ JSON.parse res.body
59
+ end
59
60
 
60
- def increment_kb_clock(days, weeks, months, years, time_zone, options)
61
- params = {}
62
- params[:days] = days unless days.nil?
63
- params[:weeks] = weeks unless weeks.nil?
64
- params[:months] = months unless months.nil?
65
- params[:years] = years unless years.nil?
66
- params[:timeZone] = time_zone unless time_zone.nil?
61
+ def increment_kb_clock(days, weeks, months, years, time_zone, options)
62
+ params = {}
63
+ params[:days] = days unless days.nil?
64
+ params[:weeks] = weeks unless weeks.nil?
65
+ params[:months] = months unless months.nil?
66
+ params[:years] = years unless years.nil?
67
+ params[:timeZone] = time_zone unless time_zone.nil?
67
68
 
68
- # The default 5s is not always enough
69
- params[:timeoutSec] ||= 10
69
+ # The default 5s is not always enough
70
+ params[:timeoutSec] ||= 10
70
71
 
71
- res = KillBillClient::API.put KILLBILL_API_CLOCK_PREFIX,
72
- {},
73
- params,
74
- {}.merge(options)
72
+ res = KillBillClient::API.put KILLBILL_API_CLOCK_PREFIX,
73
+ {},
74
+ params,
75
+ {}.merge(options)
75
76
 
76
- JSON.parse res.body
77
+ JSON.parse res.body
78
+ end
77
79
  end
78
-
79
80
  end
80
81
  end
@@ -1,109 +1,108 @@
1
- class Kaui::AdminTenant < KillBillClient::Model::Tenant
1
+ # frozen_string_literal: true
2
2
 
3
+ module Kaui
4
+ class AdminTenant < KillBillClient::Model::Tenant
5
+ class << self
6
+ def upload_catalog(catalog_xml, user = nil, reason = nil, comment = nil, options = {})
7
+ KillBillClient::Model::Catalog.upload_tenant_catalog(catalog_xml, user, reason, comment, options)
8
+ end
3
9
 
4
- class << self
5
- def upload_catalog(catalog_xml, user = nil, reason = nil, comment = nil, options = {})
6
- KillBillClient::Model::Catalog.upload_tenant_catalog(catalog_xml, user, reason, comment, options)
7
- end
8
-
9
- def upload_overdue_config(overdue_config_xml, user = nil, reason = nil, comment = nil, options = {})
10
- KillBillClient::Model::Overdue.upload_tenant_overdue_config_xml(overdue_config_xml, user, reason, comment, options)
11
- end
12
-
13
- def upload_invoice_template(invoice_template, is_manual_pay, delete_if_exists, user = nil, reason = nil, comment = nil, options = {})
14
- KillBillClient::Model::Invoice.upload_invoice_template(invoice_template, is_manual_pay, delete_if_exists, user, reason, comment, options)
15
- end
10
+ def upload_overdue_config(overdue_config_xml, user = nil, reason = nil, comment = nil, options = {})
11
+ KillBillClient::Model::Overdue.upload_tenant_overdue_config_xml(overdue_config_xml, user, reason, comment, options)
12
+ end
16
13
 
17
- def upload_invoice_translation(invoice_translation, locale, delete_if_exists, user = nil, reason = nil, comment = nil, options = {})
18
- KillBillClient::Model::Invoice.upload_invoice_translation(invoice_translation, locale, delete_if_exists, user, reason, comment, options)
19
- end
14
+ def upload_invoice_template(invoice_template, is_manual_pay, delete_if_exists, user = nil, reason = nil, comment = nil, options = {})
15
+ KillBillClient::Model::Invoice.upload_invoice_template(invoice_template, is_manual_pay, delete_if_exists, user, reason, comment, options)
16
+ end
20
17
 
21
- def upload_catalog_translation(catalog_translation, locale, delete_if_exists, user = nil, reason = nil, comment = nil, options = {})
22
- KillBillClient::Model::Invoice.upload_catalog_translation(catalog_translation, locale, delete_if_exists, user, reason, comment, options)
23
- end
18
+ def upload_invoice_translation(invoice_translation, locale, delete_if_exists, user = nil, reason = nil, comment = nil, options = {})
19
+ KillBillClient::Model::Invoice.upload_invoice_translation(invoice_translation, locale, delete_if_exists, user, reason, comment, options)
20
+ end
24
21
 
25
- def upload_tenant_plugin_config(plugin_name, plugin_config, user = nil, reason = nil, comment = nil, options = {})
26
- KillBillClient::Model::Tenant.upload_tenant_plugin_config(plugin_name, plugin_config, user, reason, comment, options)
27
- end
22
+ def upload_catalog_translation(catalog_translation, locale, delete_if_exists, user = nil, reason = nil, comment = nil, options = {})
23
+ KillBillClient::Model::Invoice.upload_catalog_translation(catalog_translation, locale, delete_if_exists, user, reason, comment, options)
24
+ end
28
25
 
29
- # Return a map of plugin_name => config
30
- def get_tenant_plugin_config(options)
31
- raw_tenant_config = KillBillClient::Model::Tenant::search_tenant_config("PLUGIN_CONFIG_", options)
26
+ def upload_tenant_plugin_config(plugin_name, plugin_config, user = nil, reason = nil, comment = nil, options = {})
27
+ KillBillClient::Model::Tenant.upload_tenant_plugin_config(plugin_name, plugin_config, user, reason, comment, options)
28
+ end
32
29
 
33
- tenant_config = raw_tenant_config.inject({}) do |hsh, e|
34
- # Strip prefix '/PLUGIN_CONFIG_'
35
- plugin_name = e.key.gsub!(/PLUGIN_CONFIG_/, '')
30
+ # Return a map of plugin_name => config
31
+ def get_tenant_plugin_config(options)
32
+ raw_tenant_config = KillBillClient::Model::Tenant.search_tenant_config('PLUGIN_CONFIG_', options)
36
33
 
37
- # Construct simple hash with one property (first value)
38
- hsh[plugin_name] = e.values[0]
34
+ raw_tenant_config.each_with_object({}) do |e, hsh|
35
+ # Strip prefix '/PLUGIN_CONFIG_'
36
+ plugin_name = e.key.gsub!(/PLUGIN_CONFIG_/, '')
39
37
 
40
- hsh
38
+ # Construct simple hash with one property (first value)
39
+ hsh[plugin_name] = e.values[0]
40
+ end
41
41
  end
42
42
 
43
- tenant_config
44
- end
45
-
46
- def format_plugin_config(plugin_key, plugin_type, props)
47
- return nil unless props.present?
48
- return props['raw_config'].gsub(/\r\n?/, "\n") if props['raw_config']
49
-
50
- if plugin_type == 'ruby'
51
- require 'yaml'
52
- props = reformat_plugin_config(plugin_type, props)
53
- hsh = {}
54
- hsh[plugin_key.to_sym] = {}
55
- props.each do |k,v|
56
- hsh[plugin_key.to_sym][k.to_sym] = v
43
+ def format_plugin_config(plugin_key, plugin_type, props)
44
+ return nil unless props.present?
45
+ return props['raw_config'].gsub(/\r\n?/, "\n") if props['raw_config']
46
+
47
+ if plugin_type == 'ruby'
48
+ require 'yaml'
49
+ props = reformat_plugin_config(plugin_type, props)
50
+ hsh = {}
51
+ hsh[plugin_key.to_sym] = {}
52
+ props.each do |k, v|
53
+ hsh[plugin_key.to_sym][k.to_sym] = v
54
+ end
55
+ hsh.to_yaml
56
+ elsif plugin_type == 'java'
57
+ props = reformat_plugin_config(plugin_type, props)
58
+ res = ''
59
+ props.each do |k, v|
60
+ res = "#{res}#{k}=#{v}\n"
61
+ end
62
+ res
63
+ else
64
+ props['raw_config']
57
65
  end
58
- hsh.to_yaml
59
- elsif plugin_type == 'java'
60
- props = reformat_plugin_config(plugin_type, props)
61
- res = ""
62
- props.each do |k, v|
63
- res = "#{res}#{k.to_s}=#{v.to_s}\n"
64
- end
65
- res
66
- else
67
- props['raw_config']
68
66
  end
69
- end
70
67
 
71
- def reformat_plugin_config(plugin_type, props)
72
- unless props['raw_config'].blank?
73
- new_props = {}
74
- props['raw_config'].split("\n").each do |p|
75
- line = p.split('=')
76
- new_props[line[0]] = line[1].blank? ? '' : line[1].delete("\r")
68
+ def reformat_plugin_config(_plugin_type, props)
69
+ unless props['raw_config'].blank?
70
+ new_props = {}
71
+ props['raw_config'].split("\n").each do |p|
72
+ line = p.split('=')
73
+ new_props[line[0]] = line[1].blank? ? '' : line[1].delete("\r")
74
+ end
75
+
76
+ return new_props
77
77
  end
78
78
 
79
- return new_props
79
+ props
80
80
  end
81
81
 
82
- props
83
- end
82
+ # checks if string could be parse as yaml
83
+ def yaml?(candidate_string)
84
+ is_yaml = false
85
+ return is_yaml if candidate_string.blank?
84
86
 
85
- # checks if string could be parse as yaml
86
- def is_yaml?(candidate_string)
87
- is_yaml = false
88
- return is_yaml if candidate_string.blank?
87
+ begin
88
+ is_yaml = !YAML.load(candidate_string).nil?
89
+ is_yaml &&= YAML.load(candidate_string).instance_of?(Hash)
90
+ rescue StandardError
91
+ is_yaml = false
92
+ end
89
93
 
90
- begin
91
- is_yaml = !!YAML::load(candidate_string)
92
- is_yaml = is_yaml && YAML.load(candidate_string).instance_of?(Hash)
93
- rescue
94
- is_yaml = false
94
+ is_yaml
95
95
  end
96
96
 
97
- is_yaml
98
- end
97
+ # checks if string could be parse as key value pair
98
+ def kv?(candidate_string)
99
+ return false if candidate_string.blank? || yaml?(candidate_string)
99
100
 
100
- # checks if string could be parse as key value pair
101
- def is_kv?(candidate_string)
102
- return false if candidate_string.blank? || is_yaml?(candidate_string)
103
- lines = candidate_string.split("\n")
104
- return false if lines.blank?
101
+ lines = candidate_string.split("\n")
102
+ return false if lines.blank?
105
103
 
106
- lines.all? { |kv| kv.split('=').count >= 1 }
104
+ lines.all? { |kv| kv.split('=').count >= 1 }
105
+ end
107
106
  end
108
107
  end
109
108
  end
@@ -1,13 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kaui
2
4
  class AllowedUser < ApplicationRecord
3
-
4
5
  has_many :kaui_allowed_user_tenants,
5
- :class_name => 'Kaui::AllowedUserTenant',
6
- :foreign_key => 'kaui_allowed_user_id'
6
+ class_name: 'Kaui::AllowedUserTenant',
7
+ foreign_key: 'kaui_allowed_user_id'
7
8
 
8
9
  has_many :kaui_tenants, -> { distinct },
9
- :through => :kaui_allowed_user_tenants,
10
- :source => :kaui_tenant
10
+ through: :kaui_allowed_user_tenants,
11
+ source: :kaui_tenant
11
12
 
12
13
  # Create the user locally and in Kill Bill (if needed)
13
14
  def create_in_kb!(password, roles = [], user = nil, reason = nil, comment = nil, options = {})
@@ -20,8 +21,12 @@ module Kaui
20
21
  begin
21
22
  kb_user.create(user, reason, comment, options)
22
23
  rescue KillBillClient::API::BadRequest => e
23
- error_code = JSON.parse(e.response.body)['code'] rescue nil
24
- raise e unless error_code == 40002 # SECURITY_USER_ALREADY_EXISTS
24
+ error_code = begin
25
+ JSON.parse(e.response.body)['code']
26
+ rescue StandardError
27
+ nil
28
+ end
29
+ raise e unless error_code == 40_002 # SECURITY_USER_ALREADY_EXISTS
25
30
  end
26
31
 
27
32
  # Save locally
@@ -30,7 +35,6 @@ module Kaui
30
35
 
31
36
  # Update the user locally and in Kill Bill (if needed)
32
37
  def update_in_kb!(password, roles, user = nil, reason = nil, comment = nil, options = {})
33
-
34
38
  user_role = KillBillClient::Model::UserRoles.new
35
39
  user_role.username = kb_username
36
40
 
@@ -55,7 +59,7 @@ module Kaui
55
59
 
56
60
  begin
57
61
  user_role.destroy(user, reason, comment, options)
58
- rescue KillBillClient::API::BadRequest => _
62
+ rescue KillBillClient::API::BadRequest => _e
59
63
  # User already deactivated in Kill Bill
60
64
  end
61
65
 
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kaui
2
4
  class AllowedUserTenant < ApplicationRecord
3
- belongs_to :kaui_allowed_user, :class_name => 'Kaui::AllowedUser', :foreign_key => 'kaui_allowed_user_id'
4
- belongs_to :kaui_tenant, :class_name => 'Kaui::Tenant', :foreign_key => 'kaui_tenant_id'
5
+ belongs_to :kaui_allowed_user, class_name: 'Kaui::AllowedUser', foreign_key: 'kaui_allowed_user_id'
6
+ belongs_to :kaui_tenant, class_name: 'Kaui::Tenant', foreign_key: 'kaui_tenant_id'
5
7
  end
6
8
  end