bmc 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +10 -0
  3. data/README.md +28 -0
  4. data/Rakefile +41 -0
  5. data/app/assets/config/bmc_manifest.js +2 -0
  6. data/app/controllers/bmc/application_controller.rb +3 -0
  7. data/app/controllers/bmc/filters_controller.rb +38 -0
  8. data/app/controllers/concerns/bmc/api_controller_concern.rb +69 -0
  9. data/app/controllers/concerns/bmc/back_url_concern.rb +26 -0
  10. data/app/emails/bmc/email.rb +113 -0
  11. data/app/filters/bmc/filter/by_date.rb +6 -0
  12. data/app/filters/bmc/filter/by_date_begin.rb +7 -0
  13. data/app/filters/bmc/filter/by_date_end.rb +7 -0
  14. data/app/filters/bmc/filter/by_date_or_datetime_period.rb +56 -0
  15. data/app/filters/bmc/filter/by_date_period.rb +5 -0
  16. data/app/filters/bmc/filter/by_datetime_period.rb +5 -0
  17. data/app/filters/bmc/filter/by_key_value.rb +27 -0
  18. data/app/filters/bmc/filter/by_key_values.rb +13 -0
  19. data/app/filters/bmc/filter.rb +86 -0
  20. data/app/forms/bmc/mini_form_object.rb +29 -0
  21. data/app/helpers/bmc/all_helpers.rb +15 -0
  22. data/app/helpers/bmc/bootstrap_helper.rb +63 -0
  23. data/app/helpers/bmc/button_helper.rb +150 -0
  24. data/app/helpers/bmc/filters_helper.rb +16 -0
  25. data/app/helpers/bmc/font_awesome_helper.rb +67 -0
  26. data/app/helpers/bmc/form_helper.rb +24 -0
  27. data/app/helpers/bmc/i18n_helper.rb +5 -0
  28. data/app/helpers/bmc/link_helper.rb +42 -0
  29. data/app/helpers/bmc/pagination_helper.rb +22 -0
  30. data/app/helpers/bmc/routes_helper.rb +24 -0
  31. data/app/helpers/bmc/sorting_helper.rb +55 -0
  32. data/app/helpers/bmc/text_helper.rb +127 -0
  33. data/app/helpers/h.rb +3 -0
  34. data/app/jobs/concerns/bmc/setup_job_concern.rb +35 -0
  35. data/app/libs/bmc/collection_update.rb +38 -0
  36. data/app/libs/bmc/fcm/notifier.rb +32 -0
  37. data/app/libs/bmc/fcm/request.rb +54 -0
  38. data/app/libs/bmc/mini_model_serializer/serialize.rb +30 -0
  39. data/app/libs/bmc/mini_model_serializer/serializer.rb +23 -0
  40. data/app/libs/bmc/monkey.rb +39 -0
  41. data/app/libs/bmc/sortable_uuid_generator.rb +11 -0
  42. data/app/libs/bmc/token_generator.rb +37 -0
  43. data/app/mailers/bmc/application_mailer.rb +2 -0
  44. data/app/mailers/bmc/generic_mailer.rb +9 -0
  45. data/app/models/concerns/bmc/active_record_uuid_concern.rb +17 -0
  46. data/app/models/concerns/bmc/default_values_concern.rb +14 -0
  47. data/app/models/concerns/bmc/model_i18n.rb +56 -0
  48. data/app/models/concerns/bmc/model_to_s.rb +9 -0
  49. data/app/models/concerns/bmc/pluck_distinct.rb +13 -0
  50. data/app/models/concerns/bmc/pluck_to_hash.rb +9 -0
  51. data/app/models/concerns/bmc/polymorphic_id.rb +37 -0
  52. data/app/models/concerns/bmc/search.rb +28 -0
  53. data/app/models/concerns/bmc/timestamp_helpers.rb +17 -0
  54. data/app/serializers/bmc/serializers/base.rb +63 -0
  55. data/app/serializers/bmc/serializers/xlsx.rb +38 -0
  56. data/app/serializers/bmc/serializers.rb +2 -0
  57. data/app/sms/bmc/sms/application_sms.rb +42 -0
  58. data/app/sms/bmc/sms/message.rb +25 -0
  59. data/app/sms/bmc/sms/strategies/amazon_sns.rb +48 -0
  60. data/app/sms/bmc/sms/strategies/base.rb +15 -0
  61. data/app/sms/bmc/sms/strategies/test.rb +10 -0
  62. data/app/sms/bmc/sms.rb +35 -0
  63. data/app/sorters/bmc/sorter.rb +26 -0
  64. data/app/views/bmc/search/_form.html.slim +1 -0
  65. data/app/views/bmc/search/_form_bs3.html.slim +13 -0
  66. data/app/views/bmc/search/_form_bs4.html.slim +9 -0
  67. data/app/views/bmc/search/_form_bs5.html.slim +8 -0
  68. data/app/views/kaminari/bootstrap4/_first_page.html.slim +2 -0
  69. data/app/views/kaminari/bootstrap4/_gap.html.slim +2 -0
  70. data/app/views/kaminari/bootstrap4/_last_page.html.slim +2 -0
  71. data/app/views/kaminari/bootstrap4/_next_page.html.slim +2 -0
  72. data/app/views/kaminari/bootstrap4/_page.html.slim +6 -0
  73. data/app/views/kaminari/bootstrap4/_paginator.html.slim +12 -0
  74. data/app/views/kaminari/bootstrap4/_prev_page.html.slim +2 -0
  75. data/config/locales/actions.en.yml +76 -0
  76. data/config/locales/actions.fr.yml +76 -0
  77. data/config/locales/attributes.en.yml +108 -0
  78. data/config/locales/attributes.fr.yml +108 -0
  79. data/config/locales/common.en.yml +39 -0
  80. data/config/locales/common.fr.yml +39 -0
  81. data/config/locales/dates.fr.yml +8 -0
  82. data/config/locales/errors.en.yml +5 -0
  83. data/config/locales/errors.fr.yml +5 -0
  84. data/config/routes.rb +3 -0
  85. data/db/migrate/20000101000000_enable_bmc_extensions.rb +7 -0
  86. data/lib/bmc/active_model_custom_error_messages.rb +23 -0
  87. data/lib/bmc/active_model_type_cast.rb +52 -0
  88. data/lib/bmc/config.rb +19 -0
  89. data/lib/bmc/core_and_rails_ext.rb +3 -0
  90. data/lib/bmc/engine.rb +36 -0
  91. data/lib/bmc/engine_file.rb +10 -0
  92. data/lib/bmc/errors_middleware.rb +50 -0
  93. data/lib/bmc/form_back_url.rb +18 -0
  94. data/lib/bmc/version.rb +3 -0
  95. data/lib/bmc.rb +5 -0
  96. data/lib/tasks/bmc_tasks.rake +4 -0
  97. metadata +236 -0
data/lib/bmc/engine.rb ADDED
@@ -0,0 +1,36 @@
1
+ require "awesome_print"
2
+ require "pry-rails"
3
+ require "rails-i18n"
4
+ require "nilify_blanks"
5
+ require "tapenade"
6
+ require "attr_extras/explicit"
7
+
8
+ module BMC
9
+ class Engine < ::Rails::Engine
10
+ isolate_namespace BMC
11
+
12
+ initializer "inflections" do
13
+ ActiveSupport::Inflector.inflections(:en) do |inflect|
14
+ inflect.acronym "BMC"
15
+ inflect.acronym "FCM"
16
+ inflect.acronym "SMS"
17
+ inflect.acronym "SNS"
18
+ inflect.acronym "UUID"
19
+ inflect.acronym "XLSX"
20
+ end
21
+ end
22
+
23
+ initializer "bmc_mime_types" do
24
+ Mime::Type.register "application/vnd.ms-excel", :xls
25
+ Mime::Type.register "application/vnd.ms-excel", :xlsx
26
+ end
27
+
28
+ # initializer "bmc_errors_middleware" do
29
+ # require "bmc/errors_middleware"
30
+ # end
31
+ end
32
+ end
33
+
34
+ require_relative "config"
35
+ require_relative "engine_file"
36
+ require_relative "core_and_rails_ext"
@@ -0,0 +1,10 @@
1
+ module Kernel
2
+ def engine_file(engine)
3
+ app_file = caller(1..1).first.split(":").first
4
+ app_root = ::Rails.application.root.to_s
5
+ relative_file = app_file.sub(app_root, "")
6
+ engine_root = engine::Engine.root.to_s
7
+
8
+ ::File.join(engine_root, relative_file)
9
+ end
10
+ end
@@ -0,0 +1,50 @@
1
+ class BMC::ErrorsMiddleware
2
+ MAINTENANCE_ERRORS = [
3
+ "ActiveRecord::ConnectionTimeoutError",
4
+ "connections on port 5432",
5
+ "PG::UnableToSend",
6
+ ]
7
+
8
+ NOT_ACCEPTABLE_ERRORS = [
9
+ "ActionController::BadRequest",
10
+ "ActionController::UnknownFormat",
11
+ "ActionController::UnknownHttpMethod",
12
+ "ActionDispatch::Cookies::CookieOverflow",
13
+ "ActionDispatch::Http::MimeNegotiation::InvalidType",
14
+ "ActionView::MissingTemplate",
15
+ "Mime::Type::InvalidMimeType",
16
+ ]
17
+
18
+ def initialize(app)
19
+ @app = app
20
+ end
21
+
22
+ def call(env)
23
+ @app.call(env)
24
+ rescue StandardError => e
25
+ error = "#{e.class} : #{e.message}"
26
+
27
+ if MAINTENANCE_ERRORS.any? { |pattern| error.match?(pattern) }
28
+ return respond_with 503, "Maintenance en cours."
29
+ end
30
+
31
+ if NOT_ACCEPTABLE_ERRORS.any? { |pattern| error.match?(pattern) }
32
+ return respond_with 406, "Not acceptable."
33
+ end
34
+
35
+ raise e
36
+ end
37
+
38
+ private
39
+
40
+ def respond_with(status, body)
41
+ [status, {"Content-Type" => "text/plain; charset=UTF-8"}, [body]]
42
+ end
43
+ end
44
+
45
+ stack = Rails.configuration.middleware
46
+ mw = BMC::ErrorsMiddleware
47
+ stack.unshift(mw)
48
+ stack.insert_after(ActionDispatch::DebugExceptions, mw) if defined?(ActionDispatch::DebugExceptions)
49
+ stack.insert_after(Bugsnag::Rack, mw) if defined?(Bugsnag::Rack)
50
+ stack.use(mw)
@@ -0,0 +1,18 @@
1
+ module BMC::FormBackUrl
2
+ def back_url_tag
3
+ tag(:input,
4
+ :type => "hidden",
5
+ :name => "back_url",
6
+ :value => (params[:back_url].presence || request.referer),
7
+ )
8
+ end
9
+
10
+ def form_tag_with_body(html_options, content)
11
+ output = form_tag_html(html_options)
12
+ output.safe_concat(back_url_tag)
13
+ output << content
14
+ output.safe_concat("</form>")
15
+ end
16
+ end
17
+
18
+ ActionView::Helpers::FormTagHelper.prepend(BMC::FormBackUrl)
@@ -0,0 +1,3 @@
1
+ module BMC
2
+ VERSION = "1.0.0"
3
+ end
data/lib/bmc.rb ADDED
@@ -0,0 +1,5 @@
1
+ require "bmc/engine"
2
+
3
+ module BMC
4
+ # Your code goes here...
5
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :bmc do
3
+ # # Task goes here
4
+ # end
metadata ADDED
@@ -0,0 +1,236 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bmc
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - agilidée
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-11-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails-i18n
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: awesome_print
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry-rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: nilify_blanks
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: tapenade
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: addressable
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: attr_extras
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: BMC
112
+ email:
113
+ - benoit@martin-chave.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - CHANGELOG.md
119
+ - README.md
120
+ - Rakefile
121
+ - app/assets/config/bmc_manifest.js
122
+ - app/controllers/bmc/application_controller.rb
123
+ - app/controllers/bmc/filters_controller.rb
124
+ - app/controllers/concerns/bmc/api_controller_concern.rb
125
+ - app/controllers/concerns/bmc/back_url_concern.rb
126
+ - app/emails/bmc/email.rb
127
+ - app/filters/bmc/filter.rb
128
+ - app/filters/bmc/filter/by_date.rb
129
+ - app/filters/bmc/filter/by_date_begin.rb
130
+ - app/filters/bmc/filter/by_date_end.rb
131
+ - app/filters/bmc/filter/by_date_or_datetime_period.rb
132
+ - app/filters/bmc/filter/by_date_period.rb
133
+ - app/filters/bmc/filter/by_datetime_period.rb
134
+ - app/filters/bmc/filter/by_key_value.rb
135
+ - app/filters/bmc/filter/by_key_values.rb
136
+ - app/forms/bmc/mini_form_object.rb
137
+ - app/helpers/bmc/all_helpers.rb
138
+ - app/helpers/bmc/bootstrap_helper.rb
139
+ - app/helpers/bmc/button_helper.rb
140
+ - app/helpers/bmc/filters_helper.rb
141
+ - app/helpers/bmc/font_awesome_helper.rb
142
+ - app/helpers/bmc/form_helper.rb
143
+ - app/helpers/bmc/i18n_helper.rb
144
+ - app/helpers/bmc/link_helper.rb
145
+ - app/helpers/bmc/pagination_helper.rb
146
+ - app/helpers/bmc/routes_helper.rb
147
+ - app/helpers/bmc/sorting_helper.rb
148
+ - app/helpers/bmc/text_helper.rb
149
+ - app/helpers/h.rb
150
+ - app/jobs/concerns/bmc/setup_job_concern.rb
151
+ - app/libs/bmc/collection_update.rb
152
+ - app/libs/bmc/fcm/notifier.rb
153
+ - app/libs/bmc/fcm/request.rb
154
+ - app/libs/bmc/mini_model_serializer/serialize.rb
155
+ - app/libs/bmc/mini_model_serializer/serializer.rb
156
+ - app/libs/bmc/monkey.rb
157
+ - app/libs/bmc/sortable_uuid_generator.rb
158
+ - app/libs/bmc/token_generator.rb
159
+ - app/mailers/bmc/application_mailer.rb
160
+ - app/mailers/bmc/generic_mailer.rb
161
+ - app/models/concerns/bmc/active_record_uuid_concern.rb
162
+ - app/models/concerns/bmc/default_values_concern.rb
163
+ - app/models/concerns/bmc/model_i18n.rb
164
+ - app/models/concerns/bmc/model_to_s.rb
165
+ - app/models/concerns/bmc/pluck_distinct.rb
166
+ - app/models/concerns/bmc/pluck_to_hash.rb
167
+ - app/models/concerns/bmc/polymorphic_id.rb
168
+ - app/models/concerns/bmc/search.rb
169
+ - app/models/concerns/bmc/timestamp_helpers.rb
170
+ - app/serializers/bmc/serializers.rb
171
+ - app/serializers/bmc/serializers/base.rb
172
+ - app/serializers/bmc/serializers/xlsx.rb
173
+ - app/sms/bmc/sms.rb
174
+ - app/sms/bmc/sms/application_sms.rb
175
+ - app/sms/bmc/sms/message.rb
176
+ - app/sms/bmc/sms/strategies/amazon_sns.rb
177
+ - app/sms/bmc/sms/strategies/base.rb
178
+ - app/sms/bmc/sms/strategies/test.rb
179
+ - app/sorters/bmc/sorter.rb
180
+ - app/views/bmc/search/_form.html.slim
181
+ - app/views/bmc/search/_form_bs3.html.slim
182
+ - app/views/bmc/search/_form_bs4.html.slim
183
+ - app/views/bmc/search/_form_bs5.html.slim
184
+ - app/views/kaminari/bootstrap4/_first_page.html.slim
185
+ - app/views/kaminari/bootstrap4/_gap.html.slim
186
+ - app/views/kaminari/bootstrap4/_last_page.html.slim
187
+ - app/views/kaminari/bootstrap4/_next_page.html.slim
188
+ - app/views/kaminari/bootstrap4/_page.html.slim
189
+ - app/views/kaminari/bootstrap4/_paginator.html.slim
190
+ - app/views/kaminari/bootstrap4/_prev_page.html.slim
191
+ - config/locales/actions.en.yml
192
+ - config/locales/actions.fr.yml
193
+ - config/locales/attributes.en.yml
194
+ - config/locales/attributes.fr.yml
195
+ - config/locales/common.en.yml
196
+ - config/locales/common.fr.yml
197
+ - config/locales/dates.fr.yml
198
+ - config/locales/errors.en.yml
199
+ - config/locales/errors.fr.yml
200
+ - config/routes.rb
201
+ - db/migrate/20000101000000_enable_bmc_extensions.rb
202
+ - lib/bmc.rb
203
+ - lib/bmc/active_model_custom_error_messages.rb
204
+ - lib/bmc/active_model_type_cast.rb
205
+ - lib/bmc/config.rb
206
+ - lib/bmc/core_and_rails_ext.rb
207
+ - lib/bmc/engine.rb
208
+ - lib/bmc/engine_file.rb
209
+ - lib/bmc/errors_middleware.rb
210
+ - lib/bmc/form_back_url.rb
211
+ - lib/bmc/version.rb
212
+ - lib/tasks/bmc_tasks.rake
213
+ homepage: https://gitlab.benoitmc.com/pub/bmc
214
+ licenses:
215
+ - MIT
216
+ metadata: {}
217
+ post_install_message:
218
+ rdoc_options: []
219
+ require_paths:
220
+ - lib
221
+ required_ruby_version: !ruby/object:Gem::Requirement
222
+ requirements:
223
+ - - ">="
224
+ - !ruby/object:Gem::Version
225
+ version: '0'
226
+ required_rubygems_version: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - ">="
229
+ - !ruby/object:Gem::Version
230
+ version: '0'
231
+ requirements: []
232
+ rubygems_version: 3.1.6
233
+ signing_key:
234
+ specification_version: 4
235
+ summary: BMC
236
+ test_files: []