pg_rails 7.0.8.pre.alpha.53 → 7.0.8.pre.alpha.55
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/pg_engine/app/controllers/pg_engine/base_controller.rb +18 -23
- data/pg_engine/app/controllers/public/mensaje_contactos_controller.rb +4 -0
- data/pg_engine/app/helpers/pg_engine/flash_helper.rb +1 -1
- data/pg_engine/app/helpers/pg_engine/print_helper.rb +0 -25
- data/pg_engine/app/views/public/mensaje_contactos/new.html.slim +3 -2
- data/pg_engine/spec/controllers/pg_engine/base_controller_spec.rb +40 -0
- data/pg_layout/app/views/pg_layout/_default_error_message.html.erb +11 -0
- data/pg_layout/app/views/pg_layout/_error.html.erb +13 -0
- data/pg_layout/app/views/pg_layout/_flash.html.slim +6 -3
- data/pg_layout/app/views/pg_layout/error.html.erb +2 -0
- data/pg_rails/lib/version.rb +1 -1
- data/pg_scaffold/lib/generators/pg_rspec/scaffold/templates/controller_spec.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c3988a9c0d903ba20bb3cd83e2c5cacce2b4be38e630ebadc216bf55953bf349
|
4
|
+
data.tar.gz: 491bdc7eea79682ac8d34e2f04619c6f5a69be94fccc4d27de4874b0d42c5035
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 94e6f9f80d69ca2de0a80f4d2684fd0aea928cb4c9bc93d168c9e6eb1e2ce37ec8982cfffbf8a0c74e0aecef8a23c0f32ab63deb98977e6033df0e35481c8047
|
7
|
+
data.tar.gz: af872ab696c047befe1000bf53c5c493390ca449fdb904d5507c7239fac28eb1de6b3a40be031926daf9fe3de5dafcfa9c3aea10c7fdab2f2367a75d3d0cf21a
|
@@ -22,12 +22,26 @@ module PgEngine
|
|
22
22
|
|
23
23
|
protect_from_forgery with: :exception
|
24
24
|
|
25
|
-
rescue_from
|
25
|
+
rescue_from PgEngine::Error, with: :internal_error
|
26
26
|
rescue_from Pundit::NotAuthorizedError, with: :not_authorized
|
27
27
|
rescue_from Redirect do |e|
|
28
28
|
redirect_to e.url
|
29
29
|
end
|
30
30
|
|
31
|
+
def internal_error(error)
|
32
|
+
pg_err error
|
33
|
+
|
34
|
+
respond_to do |format|
|
35
|
+
format.html do
|
36
|
+
render 'pg_layout/error', layout: 'pg_layout/containerized'
|
37
|
+
end
|
38
|
+
format.turbo_stream do
|
39
|
+
flash.now[:critical] = self.class.render(partial: 'pg_layout/default_error_message')
|
40
|
+
render turbo_stream: (turbo_stream.remove_all('.modal') + render_turbo_stream_flash_messages)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
31
45
|
before_action do
|
32
46
|
Current.user = current_user
|
33
47
|
end
|
@@ -47,8 +61,8 @@ module PgEngine
|
|
47
61
|
layout 'pg_layout/base'
|
48
62
|
|
49
63
|
# Los flash_types resultantes serían:
|
50
|
-
# [:alert, :notice, :warning, :success]
|
51
|
-
add_flash_types :warning, :success
|
64
|
+
# [:critical, :alert, :notice, :warning, :success]
|
65
|
+
add_flash_types :critical, :warning, :success
|
52
66
|
|
53
67
|
before_action do
|
54
68
|
console if dev_user_or_env? && (params[:show_web_console] || params[:wc])
|
@@ -76,32 +90,13 @@ module PgEngine
|
|
76
90
|
|
77
91
|
protected
|
78
92
|
|
79
|
-
# TODO: ver qué pasa en producción
|
80
|
-
# def default_url_options(options = {})
|
81
|
-
# if Rails.env.production?
|
82
|
-
# options.merge(protocol: 'https')
|
83
|
-
# else
|
84
|
-
# options
|
85
|
-
# end
|
86
|
-
# end
|
87
|
-
|
88
|
-
# TODO!: ver qué onda esto, tiene sentido acá?
|
89
|
-
def fecha_invalida
|
90
|
-
respond_to do |format|
|
91
|
-
format.json do
|
92
|
-
render json: { error: 'Formato de fecha inválido' },
|
93
|
-
status: :unprocessable_entity
|
94
|
-
end
|
95
|
-
format.html { go_back('Formato de fecha inválido') }
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
93
|
def not_authorized
|
100
94
|
respond_to do |format|
|
101
95
|
format.json do
|
102
96
|
render json: { error: 'Acceso no autorizado' },
|
103
97
|
status: :unprocessable_entity
|
104
98
|
end
|
99
|
+
# TODO: responder a turbo_stream
|
105
100
|
format.html do
|
106
101
|
if request.path == root_path
|
107
102
|
# TODO!: renderear un 500.html y pg_err
|
@@ -17,6 +17,10 @@ module Public
|
|
17
17
|
def new; end
|
18
18
|
|
19
19
|
def create
|
20
|
+
if Current.user.present?
|
21
|
+
@mensaje_contacto.email = Current.user.email
|
22
|
+
@mensaje_contacto.nombre = Current.user.nombre_completo
|
23
|
+
end
|
20
24
|
if @mensaje_contacto.save
|
21
25
|
render turbo_stream: turbo_stream.update('mensaje_contacto', partial: 'gracias')
|
22
26
|
else
|
@@ -4,9 +4,6 @@ module PgEngine
|
|
4
4
|
module PrintHelper
|
5
5
|
include ActionView::Helpers::NumberHelper
|
6
6
|
|
7
|
-
class FechaInvalidaError < PgEngine::Error
|
8
|
-
end
|
9
|
-
|
10
7
|
def mostrar_con_link(objeto, options = {})
|
11
8
|
return if objeto.blank?
|
12
9
|
|
@@ -42,42 +39,36 @@ module PgEngine
|
|
42
39
|
end
|
43
40
|
|
44
41
|
def dmy_time(date)
|
45
|
-
date = parsear_tiempo(date) if date.is_a? String
|
46
42
|
return if date.blank?
|
47
43
|
|
48
44
|
date.strftime('%d/%m/%Y %H:%M')
|
49
45
|
end
|
50
46
|
|
51
47
|
def dmy(date)
|
52
|
-
date = parsear_fecha(date) if date.is_a? String
|
53
48
|
return if date.blank?
|
54
49
|
|
55
50
|
date.strftime('%d/%m/%Y')
|
56
51
|
end
|
57
52
|
|
58
53
|
def ymd(date)
|
59
|
-
date = parsear_fecha(date) if date.is_a? String
|
60
54
|
return if date.blank?
|
61
55
|
|
62
56
|
date.strftime('%Y/%m/%d')
|
63
57
|
end
|
64
58
|
|
65
59
|
def dmyg(date)
|
66
|
-
date = parsear_fecha(date) if date.is_a? String
|
67
60
|
return if date.blank?
|
68
61
|
|
69
62
|
date.strftime('%d-%m-%Y')
|
70
63
|
end
|
71
64
|
|
72
65
|
def ymdg(date)
|
73
|
-
date = parsear_fecha(date) if date.is_a? String
|
74
66
|
return if date.blank?
|
75
67
|
|
76
68
|
date.strftime('%Y-%m-%d')
|
77
69
|
end
|
78
70
|
|
79
71
|
def myg(date)
|
80
|
-
date = parsear_fecha(date) if date.is_a? String
|
81
72
|
return if date.blank?
|
82
73
|
|
83
74
|
date.strftime('%m-%Y')
|
@@ -142,22 +133,6 @@ module PgEngine
|
|
142
133
|
end
|
143
134
|
end
|
144
135
|
|
145
|
-
def parsear_tiempo(datetime)
|
146
|
-
return nil if datetime.blank?
|
147
|
-
|
148
|
-
DateTime.parse(datetime)
|
149
|
-
rescue ArgumentError
|
150
|
-
raise FechaInvalidaError, datetime
|
151
|
-
end
|
152
|
-
|
153
|
-
def parsear_fecha(date)
|
154
|
-
return nil if date.blank?
|
155
|
-
|
156
|
-
Date.parse(date)
|
157
|
-
rescue ArgumentError
|
158
|
-
raise FechaInvalidaError, date
|
159
|
-
end
|
160
|
-
|
161
136
|
def show_percentage(value)
|
162
137
|
return if value.blank?
|
163
138
|
|
@@ -8,8 +8,9 @@
|
|
8
8
|
= f.mensajes_de_error
|
9
9
|
|
10
10
|
= hidden_field_tag :asociable, true if asociable
|
11
|
-
|
12
|
-
|
11
|
+
- unless user_signed_in?
|
12
|
+
= f.input :nombre, input_html: { style: 'max-width: 22em' }
|
13
|
+
= f.input :email, input_html: { style: 'max-width: 23em' }
|
13
14
|
= f.input :telefono, hint: '(Opcional)', input_html: { style: 'max-width: 15em' }
|
14
15
|
= f.input :mensaje, as: :text, input_html: { rows: 5 }
|
15
16
|
.mt-2
|
@@ -9,6 +9,10 @@ class DummyBaseController < PgEngine::BaseController
|
|
9
9
|
raise Pundit::NotAuthorizedError
|
10
10
|
end
|
11
11
|
|
12
|
+
def test_internal_error
|
13
|
+
raise PgEngine::Error
|
14
|
+
end
|
15
|
+
|
12
16
|
def check_dev_user
|
13
17
|
@dev_user_or_env = dev_user_or_env?
|
14
18
|
@dev_user = dev_user?
|
@@ -20,6 +24,8 @@ end
|
|
20
24
|
# rubocop:disable RSpec/FilePath
|
21
25
|
# rubocop:disable RSpec/SpecFilePathFormat
|
22
26
|
describe DummyBaseController do
|
27
|
+
render_views
|
28
|
+
|
23
29
|
describe 'PgEngine::BaseController::Redirect' do
|
24
30
|
before { get :action_with_redirect }
|
25
31
|
|
@@ -28,6 +34,40 @@ describe DummyBaseController do
|
|
28
34
|
end
|
29
35
|
end
|
30
36
|
|
37
|
+
describe 'internal_error' do
|
38
|
+
subject do
|
39
|
+
get :test_internal_error
|
40
|
+
end
|
41
|
+
|
42
|
+
around do |example|
|
43
|
+
PgEngine::PgLogger.raise_errors = false
|
44
|
+
example.run
|
45
|
+
PgEngine::PgLogger.raise_errors = true
|
46
|
+
end
|
47
|
+
|
48
|
+
it do
|
49
|
+
subject
|
50
|
+
expect(response).to have_http_status(:ok)
|
51
|
+
expect(response.body).to include 'Ocurrió algo inesperado'
|
52
|
+
expect(response.body).to include '<html'
|
53
|
+
expect(response.content_type).to include 'text/html'
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'cuando acepta turbo stream' do
|
57
|
+
before do
|
58
|
+
request.headers['Accept'] = 'text/vnd.turbo-stream.html,text/html'
|
59
|
+
end
|
60
|
+
|
61
|
+
it do
|
62
|
+
subject
|
63
|
+
expect(response).to have_http_status(:ok)
|
64
|
+
expect(response.content_type).to include 'text/vnd.turbo-stream.html'
|
65
|
+
expect(response.body).to include 'Ocurrió algo inesperado'
|
66
|
+
expect(response.body).to include '<turbo-stream action="remove" targets=".modal">'
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
31
71
|
describe 'not_authorized' do
|
32
72
|
subject do
|
33
73
|
get :test_not_authorized
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<%# locals: (error_msg: nil) %>
|
2
|
+
|
3
|
+
<div>
|
4
|
+
<%= error_msg || 'Ocurrió algo inesperado' %>
|
5
|
+
<br>
|
6
|
+
Por favor, intentá nuevamente
|
7
|
+
<br>
|
8
|
+
o <a class="text-decoration-underline" href="<%= new_public_mensaje_contacto_path %>">dejanos un mensaje</a>
|
9
|
+
<br>
|
10
|
+
y te avisaremos cuando el problema esté resuelto.
|
11
|
+
</div>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<%# locals: (error_msg: nil) %>
|
2
|
+
|
3
|
+
<div class="d-flex justify-content-around">
|
4
|
+
<div class="alert alert-danger d-flex align-items-center">
|
5
|
+
<div>
|
6
|
+
<span class="bi bi-emoji-dizzy fs-1 me-3"></span>
|
7
|
+
<%# <span class="bi bi-exclamation-triangle fs-1 me-3"></span> %>
|
8
|
+
</div>
|
9
|
+
<div>
|
10
|
+
<%= render partial: 'pg_layout/default_error_message', locals: { error_msg: } %>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
</div>
|
@@ -7,14 +7,17 @@
|
|
7
7
|
data-turbo-temporary="true"
|
8
8
|
aria-live="assertive" aria-atomic="true" role="alert"
|
9
9
|
]
|
10
|
-
- case
|
11
|
-
- when '
|
10
|
+
- case flash_type
|
11
|
+
- when 'critical'
|
12
|
+
/ .bi.bi-emoji-dizzy.me-3.fs-2
|
13
|
+
.bi.bi-exclamation-triangle-fill.me-3.fs-2
|
14
|
+
- when 'alert'
|
12
15
|
.bi.bi-exclamation-triangle-fill.me-2
|
13
16
|
- when 'warning'
|
14
17
|
.bi.bi-exclamation-circle.me-2
|
15
18
|
- when 'success'
|
16
19
|
.bi.bi-check-lg.me-2
|
17
|
-
- when '
|
20
|
+
- when 'notice'
|
18
21
|
.bi.bi-info-circle.me-2
|
19
22
|
= message
|
20
23
|
button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"
|
data/pg_rails/lib/version.rb
CHANGED
@@ -241,7 +241,7 @@ RSpec.describe <%= controller_class_name %>Controller do
|
|
241
241
|
|
242
242
|
describe 'DELETE #destroy' do
|
243
243
|
subject do
|
244
|
-
request.headers['Accept'] =
|
244
|
+
request.headers['Accept'] = 'text/vnd.turbo-stream.html,text/html'
|
245
245
|
delete :destroy, params: { id: <%= file_name %>.to_param, redirect_to: redirect_url }
|
246
246
|
end
|
247
247
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pg_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.0.8.pre.alpha.
|
4
|
+
version: 7.0.8.pre.alpha.55
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martín Rosso
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-05-
|
11
|
+
date: 2024-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -1012,11 +1012,14 @@ files:
|
|
1012
1012
|
- pg_layout/app/views/layouts/pg_layout/container_logo.html.slim
|
1013
1013
|
- pg_layout/app/views/layouts/pg_layout/containerized.html.slim
|
1014
1014
|
- pg_layout/app/views/layouts/pg_layout/devise.html.slim
|
1015
|
+
- pg_layout/app/views/pg_layout/_default_error_message.html.erb
|
1016
|
+
- pg_layout/app/views/pg_layout/_error.html.erb
|
1015
1017
|
- pg_layout/app/views/pg_layout/_flash.html.slim
|
1016
1018
|
- pg_layout/app/views/pg_layout/_flash_container.html.slim
|
1017
1019
|
- pg_layout/app/views/pg_layout/_navbar.html.erb
|
1018
1020
|
- pg_layout/app/views/pg_layout/_sidebar.html.erb
|
1019
1021
|
- pg_layout/app/views/pg_layout/_sidebar_mobile.html.erb
|
1022
|
+
- pg_layout/app/views/pg_layout/error.html.erb
|
1020
1023
|
- pg_layout/lib/pg_layout.rb
|
1021
1024
|
- pg_layout/lib/pg_layout/engine.rb
|
1022
1025
|
- pg_layout/spec/lib/navbar_spec.rb
|