sinatra-hexacta 1.4.0 → 1.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 22856830fec4131abdb9b5038fc1e6862c053e11e1e0e47a90d238340512a678
4
- data.tar.gz: 02adea101a40283d74e4f557b813db101e971fb02331e59d802bcfe2775164ad
3
+ metadata.gz: 8e27f66144b0ee4048817d8c92a6fc993ab63ca176a79ac1feb9288175e93103
4
+ data.tar.gz: 5abf03f218822c22896a9200c05912afed6994e2b3b9fc872dcad45a8cb32072
5
5
  SHA512:
6
- metadata.gz: a62841ea84938b005e46aa7fe7b78900f525cf09a00f3c33b9cb000406401a6b85ff8f2a0c5acab54880b05f27f7d75a473cc9c36f8ae12ad5e3939645537489
7
- data.tar.gz: c5af975ac9d455609eca202196decc3dd5efa9e703e9a5f8cec16ac6491e3adb6b7bfaab9226953cb3ec19de964c3b3ae34495edd7e4643987f5eb5bde24df96
6
+ metadata.gz: a4738793bb01253652be89cb9b8462c96663c9d4ffcfdd161cccd7fa6fa07437d48e2fb90ce82a74fa08548d878c0f827fcc31d515bcfa80421564645fce43a8
7
+ data.tar.gz: a9931739f2585cc09789a9a116f75b2303d967c9e2d73350386d79f5c9b71f073d4000bfb863ed80380be61564d0a5eaabbe59de9fa8a24ced6a140980d084cb
@@ -20,16 +20,32 @@ class MailSender
20
20
  http.start { |http| http.request(request) }
21
21
  end
22
22
 
23
+
23
24
  def _authorize_mail
24
25
  params = [ [ "grant_type", "password" ], [ "client_id", "MailApp" ], [ "client_secret", "MailAppPRD2018!" ] ]
25
- response = _do_connect("https://comunicacion.hexacta.com:4443/apptoken",params)
26
+ retry_times = 0
27
+ begin
28
+ response = _do_connect("https://comunicacion.hexacta.com:4443/apptoken",params)
29
+ rescue StandardError => bang
30
+ response = nil
31
+ end
32
+ until response.is_a?( Net::HTTPSuccess ) || retry_times > 10 do
33
+ begin
34
+ retry_times = retry_times + 1
35
+ sleep(retry_times)
36
+ response = _do_connect("https://comunicacion.hexacta.com:4443/apptoken",params)
37
+ rescue StandardError => bang
38
+ end
39
+ end
26
40
  if( response.is_a?( Net::HTTPSuccess ) )
27
41
  token = JSON.parse(response.body)
28
42
  @access_token = token["access_token"]
29
43
  @refresh_token = token["refresh_token"]
30
44
  @expire = DateTime.parse(token[".expires"])
45
+ return true
31
46
  else
32
47
  NotificationSender.instance.send_error(nil,'Authorize mail failed',response.body)
48
+ return false
33
49
  end
34
50
  end
35
51
 
@@ -54,26 +70,34 @@ class MailSender
54
70
  end
55
71
 
56
72
  def _expired?
57
- expire.nil? || DateTime.now < expire
73
+ @expire.nil? || DateTime.now < @expire
58
74
  end
59
75
 
76
+
60
77
  def do_send(mail)
61
- begin
62
- if _expired?
63
- _authorize_mail
64
- end
78
+ authorized = _expired?? _authorize_mail : true
65
79
 
80
+ if authorized
66
81
  params = [ [ "ApplicationCode", 2009 ], [ "Name", mail.template ], [ "Subject", mail.subject ], [ "EmailAddress", mail.from ] ]
67
82
  params = params + _build_map_values(mail.values) + _build_to_map(mail.to)
68
83
 
69
- response = _do_connect("https://comunicacion.hexacta.com:4444/api/app/TemplateNotification/SendMail",params,@access_token)
70
-
84
+ retry_times = 0
85
+ begin
86
+ response = _do_connect("https://comunicacion.hexacta.com:4444/api/app/TemplateNotification/SendMail",params,@access_token)
87
+ rescue StandardError => bang
88
+ response = nil
89
+ end
90
+ until response.is_a?( Net::HTTPSuccess ) || retry_times > 10 do
91
+ begin
92
+ retry_times = retry_times + 1
93
+ sleep(retry_times)
94
+ response = _do_connect("https://comunicacion.hexacta.com:4444/api/app/TemplateNotification/SendMail",params,@access_token)
95
+ rescue StandardError => bang
96
+ end
97
+ end
71
98
  if( !response.is_a?( Net::HTTPSuccess ) )
72
99
  NotificationSender.instance.send_error(nil,'Send mail failed',response.body)
73
100
  end
74
- rescue StandardError => error
75
- message = error.backtrace.join(',');
76
- NotificationSender.instance.send_error(nil,"Mail send error",message)
77
101
  end
78
102
  end
79
103
 
@@ -9,7 +9,7 @@ module Sinatra
9
9
  ConstantHandler.copy_all_files("/lib/sinatra/views/constants","/app/views/#{Hexacta::GEM_FILE_DIR}/constants")
10
10
 
11
11
  before '/constant*' do
12
- error(403) if authenticated(User).permissions.empty?
12
+ error(403) unless authenticated(User).admin?
13
13
  end
14
14
 
15
15
  get '/constants' do
@@ -11,7 +11,7 @@ module Sinatra
11
11
  end
12
12
 
13
13
  before do
14
- response.headers['Access-Control-Allow-Origin'] = 'http://*.hexacta.com https://*.hexacta.com'
14
+ response.headers['Access-Control-Allow-Origin'] = '*'
15
15
  end
16
16
 
17
17
  end
@@ -52,7 +52,7 @@ module Sinatra
52
52
  end
53
53
 
54
54
  before '/reports/*' do
55
- error(403) if authenticated(User).permissions.empty?
55
+ error(403) unless authenticated(User).admin?
56
56
  end
57
57
 
58
58
  get '/reports' do
@@ -5,7 +5,24 @@ if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(naviga
5
5
  $('html').addClass('ismobile');
6
6
  }
7
7
 
8
+ // create a new instance of `MutationObserver` named `observer`,
9
+ // passing it a callback function
10
+ const observer = new MutationObserver(function() {
11
+ update_html_elements();
12
+ });
13
+
8
14
  $(document).ready(function(){
15
+ /*
16
+ * Waves Animation
17
+ */
18
+ (function(){
19
+ Waves.attach('.btn:not(.btn-icon):not(.btn-float)');
20
+ Waves.attach('.btn-icon, .btn-float', ['waves-circle', 'waves-float']);
21
+ Waves.init();
22
+ })();
23
+ });
24
+
25
+ function update_html_elements() {
9
26
 
10
27
  // Fix modal inside other components
11
28
  $('.modal').appendTo("body");
@@ -340,15 +357,6 @@ $(document).ready(function(){
340
357
  });
341
358
  }
342
359
 
343
- /*
344
- * Waves Animation
345
- */
346
- (function(){
347
- Waves.attach('.btn:not(.btn-icon):not(.btn-float)');
348
- Waves.attach('.btn-icon, .btn-float', ['waves-circle', 'waves-float']);
349
- Waves.init();
350
- })();
351
-
352
360
  /*
353
361
  * Lightbox
354
362
  */
@@ -499,7 +507,14 @@ $(document).ready(function(){
499
507
  $(this).find(':submit').attr("disabled",false);
500
508
  });
501
509
 
502
- });
510
+ }
511
+
512
+ const elementToObserve = document.querySelector("body");
513
+
514
+ if (elementToObserve != null) {
515
+ observer.observe(elementToObserve, {subtree: true, childList: true});
516
+ }
517
+
503
518
 
504
519
  function start_load() {
505
520
  if (!$("#loader")[0]) {
@@ -677,4 +692,8 @@ function read_notify(id,url) {
677
692
  window.location = url;
678
693
  }
679
694
  });
695
+ }
696
+
697
+ function capitalize(word) {
698
+ return word[0].toUpperCase() + word.slice(1).toLowerCase();
680
699
  }
@@ -394,12 +394,26 @@
394
394
 
395
395
  // VALIDATOR DATA-API
396
396
  // ==================
397
+ const elementToObserve = document.querySelector("body");
397
398
 
398
- $(window).on('load', function () {
399
+ // create a new instance of `MutationObserver` named `observer`,
400
+ // passing it a callback function
401
+ const observer = new MutationObserver(function() {
399
402
  $('form[data-toggle="validator"]').each(function () {
400
403
  var $form = $(this)
401
404
  Plugin.call($form, $form.data())
402
405
  })
403
- })
406
+ });
407
+
408
+ // call `observe()` on that MutationObserver instance,
409
+ // passing it the element to observe, and the options object
410
+ observer.observe(elementToObserve, {subtree: true, childList: true});
411
+
412
+ //$(window).on('load', function () {
413
+ // $('form[data-toggle="validator"]').each(function () {
414
+ // var $form = $(this)
415
+ // Plugin.call($form, $form.data())
416
+ // })
417
+ //})
404
418
 
405
419
  }(jQuery);
@@ -11,7 +11,16 @@
11
11
  -unless defined? readonly
12
12
  -readonly = false
13
13
 
14
- -if required
14
+ -if readonly
15
+ .form-group
16
+ label #{placeholder}
17
+ select.chosen id="#{id}" class="#{clazz}" name="#{name}" data-placeholder=("#{placeholder}") style=("display: none;") disabled=""
18
+ -for element in elements
19
+ -if chosen == element[:value]
20
+ option value="#{element[:value]}" selected="" #{element[:text]}
21
+ -else
22
+ option value="#{element[:value]}" #{element[:text]}
23
+ -elsif required
15
24
  .form-group.has-success
16
25
  label #{placeholder}
17
26
  select.chosen.form-control id="#{id}" class="#{clazz}" name="#{name}" data-placeholder=("#{placeholder}") style=("display: none;") required=""
@@ -29,4 +38,11 @@
29
38
  -if chosen == element[:value]
30
39
  option value="#{element[:value]}" selected="" #{element[:text]}
31
40
  -else
32
- option value="#{element[:value]}" #{element[:text]}
41
+ option value="#{element[:value]}" #{element[:text]}
42
+
43
+
44
+ / For enabling
45
+ / var myselect=$('select');
46
+ / myselect.chosen();
47
+ / myselect.prop('disabled', true);
48
+ / myselect.trigger("chosen:updated");
@@ -45,7 +45,7 @@
45
45
  -total_pending = Notification.pending.for(authenticated(User)).exclude_message.count
46
46
 
47
47
  .footer-btn
48
- -unless authenticated(User).permissions.empty?
48
+ -if authenticated(User).admin?
49
49
  a.btn.btn-float.bgm-blue.m-btn.waves-effect.waves-circle.waves-float data-toggle="modal" data-target="#new-notification"
50
50
  i.zmdi.zmdi-notifications-active
51
51
  -if total_pending > 0
@@ -55,13 +55,13 @@
55
55
  i.zmdi.zmdi-delete
56
56
 
57
57
  .footer-text
58
- -unless authenticated(User).permissions.empty?
58
+ -if authenticated(User).admin?
59
59
  a.text.btn.bgm-white.c-gray data-toggle="modal" data-target="#new-notification" Nueva notificación
60
60
  -if total_pending > 0
61
61
  a.text.btn.bgm-white.c-gray onclick="read_all_notifications(#{{Notification.pending.for(authenticated(User)).exclude_message.all.collect { |notification| notification.id}}});this.onclick='';" Marcar como leidas
62
62
  a.text.btn.bgm-white.c-gray.delete-notifications.hidden.animated.bounceIn onclick="delete_all_notifications();this.onclick='';" Borrar notificaciones
63
63
 
64
- -unless authenticated(User).permissions.empty?
64
+ -if authenticated(User).admin?
65
65
  == slim :'sinatra-hexacta/notifications/new'
66
66
 
67
67
  javascript:
@@ -48,7 +48,7 @@
48
48
  .media-body
49
49
  .lv-title Fecha de lectura
50
50
  small.lv-small #{notification.read_date.display}
51
- -unless (authenticated(User).permissions.collect { |permission| permission.class } & [ Superadmin ]).empty?
51
+ -if authenticated(User).superadmin?
52
52
  a.lv-item
53
53
  .media
54
54
  .media-body
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-hexacta
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marco Zanger
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-17 00:00:00.000000000 Z
11
+ date: 2021-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sucker_punch
@@ -250,7 +250,7 @@ homepage: https://rubygems.org/gems/sinatra-hexacta
250
250
  licenses:
251
251
  - MIT
252
252
  metadata: {}
253
- post_install_message:
253
+ post_install_message:
254
254
  rdoc_options: []
255
255
  require_paths:
256
256
  - lib
@@ -266,7 +266,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
266
266
  version: '0'
267
267
  requirements: []
268
268
  rubygems_version: 3.0.6
269
- signing_key:
269
+ signing_key:
270
270
  specification_version: 4
271
271
  summary: Hexacta general tools!
272
272
  test_files: []