kuppayam 0.1.5 → 0.1.6dev2

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 (88) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +13 -0
  3. data/app/assets/images/{kuppayam/favicon.png → favicon.png} +0 -0
  4. data/app/assets/images/{kuppayam/logo.png → logo.png} +0 -0
  5. data/app/assets/javascripts/kuppayam.js +3 -0
  6. data/app/assets/javascripts/kuppayam/utilities.js +28 -0
  7. data/app/assets/stylesheets/kuppayam.css +1 -0
  8. data/app/assets/stylesheets/kuppayam/custom.css +4 -0
  9. data/app/controllers/kuppayam/base_controller.rb +14 -4
  10. data/app/controllers/kuppayam/documents_controller.rb +24 -0
  11. data/app/controllers/kuppayam/images_controller.rb +41 -1
  12. data/app/helpers/breadcrumbs_helper.rb +1 -1
  13. data/app/helpers/filter_helper.rb +9 -3
  14. data/app/helpers/image_helper.rb +11 -3
  15. data/app/helpers/kuppayam_helper.rb +2 -2
  16. data/app/helpers/meta_tags_helper.rb +0 -4
  17. data/app/helpers/notification_helper.rb +6 -6
  18. data/app/helpers/render_helper.rb +11 -2
  19. data/app/helpers/resource_helper.rb +23 -9
  20. data/app/models/document/base.rb +13 -15
  21. data/app/models/document/import_data_file.rb +14 -0
  22. data/app/models/document/import_report_file.rb +8 -0
  23. data/app/models/image/base.rb +12 -14
  24. data/app/models/import_data.rb +19 -2
  25. data/app/models/kuppayam/application_record.rb +3 -0
  26. data/app/uploaders/document_uploader.rb +4 -4
  27. data/app/uploaders/image_uploader.rb +1 -1
  28. data/app/uploaders/import_data_uploader.rb +15 -0
  29. data/app/views/kuppayam/documents/create.html.erb +1 -1
  30. data/app/views/kuppayam/documents/edit.js.erb +1 -1
  31. data/app/views/kuppayam/documents/new.js.erb +1 -1
  32. data/app/views/kuppayam/documents/update.html.erb +1 -1
  33. data/app/views/kuppayam/filters/_display_dropdown_filters.html.erb +11 -0
  34. data/app/views/kuppayam/filters/_display_filters.html.erb +29 -0
  35. data/app/views/kuppayam/http_status/404.html.erb +1 -0
  36. data/app/views/kuppayam/images/_form.html.erb +1 -1
  37. data/app/views/kuppayam/images/_index.html.erb +17 -20
  38. data/app/views/kuppayam/images/_show.html.erb +32 -0
  39. data/app/views/kuppayam/images/create.html.erb +4 -4
  40. data/app/views/kuppayam/images/crop.html.erb +1 -1
  41. data/app/views/kuppayam/images/destroy.js.erb +19 -0
  42. data/app/views/kuppayam/images/edit.js.erb +3 -3
  43. data/app/views/kuppayam/images/index.html.erb +8 -1
  44. data/app/views/kuppayam/images/new.js.erb +1 -1
  45. data/app/views/kuppayam/images/update.html.erb +5 -5
  46. data/app/views/kuppayam/import_data/new.js.erb +1 -1
  47. data/app/views/kuppayam/import_data/update.html.erb +1 -1
  48. data/app/views/kuppayam/workflows/parrot/create.js.erb +11 -6
  49. data/app/views/kuppayam/workflows/parrot/edit.js.erb +1 -1
  50. data/app/views/kuppayam/workflows/parrot/new.js.erb +2 -2
  51. data/app/views/kuppayam/workflows/parrot/row.js.erb +1 -1
  52. data/app/views/kuppayam/workflows/parrot/update.js.erb +10 -5
  53. data/app/views/kuppayam/workflows/peacock/create.js.erb +12 -7
  54. data/app/views/kuppayam/workflows/peacock/edit.js.erb +2 -2
  55. data/app/views/kuppayam/workflows/peacock/new.js.erb +2 -2
  56. data/app/views/kuppayam/workflows/peacock/row.js.erb +1 -1
  57. data/app/views/kuppayam/workflows/peacock/update.js.erb +11 -6
  58. data/app/views/layouts/kuppayam/_footer.html.erb +1 -0
  59. data/app/views/layouts/kuppayam/_head.html.erb +11 -2
  60. data/app/views/layouts/kuppayam/_heading.html.erb +11 -2
  61. data/app/views/layouts/kuppayam/_horizontal_menu.html.erb +932 -0
  62. data/app/views/layouts/kuppayam/_sidebar.html.erb +5 -2
  63. data/app/views/layouts/kuppayam/admin.html.erb +63 -6
  64. data/app/views/layouts/kuppayam/blank.html.erb +62 -5
  65. data/app/views/layouts/kuppayam/document_upload.html.erb +3 -2
  66. data/app/views/layouts/kuppayam/image_upload.html.erb +3 -2
  67. data/app/views/layouts/kuppayam/layout_horizontal_menu.html.erb +116 -0
  68. data/app/views/layouts/kuppayam/print_a4.html.erb +32 -0
  69. data/app/views/layouts/kuppayam/user.html.erb +120 -0
  70. data/config/initializers/importer.rb +303 -0
  71. data/config/initializers/validators.rb +78 -0
  72. data/config/locales/kuppayam/general.yml +1 -0
  73. data/config/routes.rb +1 -1
  74. data/db/migrate/20170000000000_create_images.rb +1 -0
  75. data/db/migrate/20170000000001_create_documents.rb +2 -1
  76. data/db/migrate/20170000000002_create_import_data.rb +2 -2
  77. data/lib/kuppayam/action_view/form_helper.rb +1 -1
  78. data/lib/kuppayam/action_view/theme_helper.rb +8 -2
  79. data/lib/kuppayam/engine.rb +2 -0
  80. data/lib/kuppayam/version.rb +1 -1
  81. data/lib/tasks/template.rake +72 -0
  82. data/lib/tasks/test_import.rake +40 -0
  83. data/vendor/assets/stylesheets/custom.css +0 -0
  84. metadata +76 -16
  85. data/app/views/kuppayam/images/_action_buttons.html.erb +0 -14
  86. data/app/views/layouts/kuppayam/_overlays.html.erb +0 -47
  87. data/config/initializers/kuppayam_validators.rb +0 -76
  88. data/lib/tasks/kuppayam_tasks.rake +0 -4
@@ -4,6 +4,8 @@ module Kuppayam
4
4
  require 'kaminari'
5
5
  require 'jquery-rails'
6
6
 
7
+ config.autoload_paths << File.expand_path("../extras", __FILE__)
8
+
7
9
  initializer "kuppayam.assets.precompile" do |app|
8
10
  app.config.assets.precompile += %w( kuppayam.js jquery_with_ujs.js kuppayam.css wysiwyg-color.css)
9
11
  end
@@ -1,3 +1,3 @@
1
1
  module Kuppayam
2
- VERSION = '0.1.5'
2
+ VERSION = '0.1.6dev2'
3
3
  end
@@ -0,0 +1,72 @@
1
+ require 'csv'
2
+ require 'open-uri'
3
+ require 'time'
4
+
5
+ namespace 'import' do
6
+ namespace 'template' do
7
+
8
+ desc "Import all data in sequence"
9
+ task 'all' => :environment do
10
+
11
+ import_list = ["countries", "cities"]
12
+
13
+ import_list.each do |item|
14
+ print "Importing #{item.titleize} \t".yellow
15
+ begin
16
+ Rake::Task["usman:import:#{item}"].invoke
17
+ rescue ArgumentError => e
18
+ puts "Loading #{item} - Failed - #{e.message}".red
19
+ rescue Exception => e
20
+ puts "Importing #{item.titleize} - Failed - #{e.message}".red
21
+ puts "Backtrace:\n\t#{e.backtrace.join("\n\t")}"
22
+ end
23
+ end
24
+ puts " "
25
+ end
26
+
27
+ # Import from xlsx
28
+ ["ClassName"].each do |cls_name|
29
+ name = cls_name.underscore.pluralize
30
+ desc "Import #{cls_name.pluralize}"
31
+ task name => :environment do
32
+ verbose = true
33
+ verbose = false if ["false", "f","0","no","n"].include?(ENV["verbose"].to_s.downcase.strip)
34
+ path = Kuppayam::Engine.root.join('db', 'master_data', "#{cls_name.constantize.table_name}.xlsx")
35
+ cls_name.constantize.import_data(path, verbose)
36
+ end
37
+ end
38
+
39
+ # Import from CSV
40
+ ["ClassName"].each do |cls_name|
41
+ name = cls_name.underscore.pluralize
42
+ desc "Import #{cls_name.pluralize}"
43
+ task name => :environment do
44
+ verbose = true
45
+ verbose = false if ["false", "f","0","no","n"].include?(ENV["verbose"].to_s.downcase.strip)
46
+ path = Kuppayam::Engine.root.join('db', 'master_data', "#{cls_name.constantize.table_name}.csv")
47
+ cls_name.constantize.import_data(path, verbose)
48
+ end
49
+ end
50
+
51
+ # Import from SQL file
52
+ ["Country", "City"].each do |cls_name|
53
+ name = cls_name.underscore.pluralize
54
+ desc "Import #{cls_name.pluralize}"
55
+ task name => :environment do
56
+ path = Kuppayam::Engine.root.join('db', 'master_data', "#{cls_name.constantize.table_name}.sql")
57
+ begin
58
+ system "bundle exec rails db < #{path.to_s}"
59
+ puts "Imported #{cls_name.pluralize} SQL file successfully".green
60
+ puts "Saved #{cls_name.constantize.count} rows".green
61
+ rescue ArgumentError => e
62
+ puts "Loading #{item} - Failed - #{e.message}".red
63
+ rescue Exception => e
64
+ puts "Importing #{item.titleize} - Failed - #{e.message}".red
65
+ puts "Backtrace:\n\t#{e.backtrace.join("\n\t")}"
66
+ end
67
+ end
68
+ end
69
+
70
+ end
71
+ end
72
+
@@ -0,0 +1,40 @@
1
+ require 'csv'
2
+ require 'open-uri'
3
+ require 'time'
4
+
5
+ namespace 'import' do
6
+ namespace 'test' do
7
+ namespace 'csv' do
8
+
9
+ # Import from a small CSV file (single)
10
+ desc "Importing a single CSV file (less than 5000 rows)"
11
+ task 'single_file' => :environment do
12
+ verbose = true
13
+ verbose = false if ["false", "f","0","no","n"].include?(ENV["verbose"].to_s.downcase.strip)
14
+ path = Kuppayam::Engine.root.join('db', 'test_data', "single_file", "master.csv")
15
+ Region.destroy_all
16
+ Region.import_data_file(path, true, verbose)
17
+ puts "Importing Completed".green if verbose
18
+ end
19
+
20
+ # Import from a bunch of split CSV files of same format (typically large CSV gets split into rows of 5000 or 10000)
21
+ desc "Importing a bunch of split CSV file"
22
+ task 'split_files' => :environment do
23
+ verbose = true
24
+ verbose = false if ["false", "f","0","no","n"].include?(ENV["verbose"].to_s.downcase.strip)
25
+ path = Kuppayam::Engine.root.join('db', 'test_data', "split_files")
26
+ Region.destroy_all
27
+ Region.import_data_recursively(path, true, verbose)
28
+ puts "Importing Completed".green if verbose
29
+ end
30
+
31
+ end
32
+
33
+ namespace 'xlsx' do
34
+ end
35
+
36
+ namespace 'sql' do
37
+ end
38
+ end
39
+ end
40
+
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kuppayam
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6dev2
5
5
  platform: ruby
6
6
  authors:
7
7
  - kpvarma
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-31 00:00:00.000000000 Z
11
+ date: 2017-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -84,6 +84,54 @@ dependencies:
84
84
  - - "~>"
85
85
  - !ruby/object:Gem::Version
86
86
  version: 0.0.5
87
+ - !ruby/object:Gem::Dependency
88
+ name: filesize
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - "~>"
92
+ - !ruby/object:Gem::Version
93
+ version: 0.1.1
94
+ type: :runtime
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: 0.1.1
101
+ - !ruby/object:Gem::Dependency
102
+ name: iconv
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - "~>"
106
+ - !ruby/object:Gem::Version
107
+ version: '1.0'
108
+ type: :runtime
109
+ prerelease: false
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - "~>"
113
+ - !ruby/object:Gem::Version
114
+ version: '1.0'
115
+ - !ruby/object:Gem::Dependency
116
+ name: colorize
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - "~>"
120
+ - !ruby/object:Gem::Version
121
+ version: 0.8.1
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: 0.8.0
125
+ type: :development
126
+ prerelease: false
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 0.8.1
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: 0.8.0
87
135
  - !ruby/object:Gem::Dependency
88
136
  name: pry
89
137
  requirement: !ruby/object:Gem::Requirement
@@ -218,20 +266,20 @@ dependencies:
218
266
  requirements:
219
267
  - - "~>"
220
268
  - !ruby/object:Gem::Version
221
- version: 1.4.0
269
+ version: 1.6.0
222
270
  - - ">="
223
271
  - !ruby/object:Gem::Version
224
- version: 1.3.0
272
+ version: 1.4.1
225
273
  type: :development
226
274
  prerelease: false
227
275
  version_requirements: !ruby/object:Gem::Requirement
228
276
  requirements:
229
277
  - - "~>"
230
278
  - !ruby/object:Gem::Version
231
- version: 1.4.0
279
+ version: 1.6.0
232
280
  - - ">="
233
281
  - !ruby/object:Gem::Version
234
- version: 1.3.0
282
+ version: 1.4.1
235
283
  - !ruby/object:Gem::Dependency
236
284
  name: shoulda-matchers
237
285
  requirement: !ruby/object:Gem::Requirement
@@ -279,12 +327,12 @@ files:
279
327
  - app/assets/fonts/meteocons.svg
280
328
  - app/assets/fonts/meteocons.ttf
281
329
  - app/assets/fonts/meteocons.woff
330
+ - app/assets/images/favicon.png
282
331
  - app/assets/images/kuppayam/defaults/default-large.png
283
332
  - app/assets/images/kuppayam/defaults/default-small.png
284
333
  - app/assets/images/kuppayam/defaults/user-large.png
285
334
  - app/assets/images/kuppayam/defaults/user-small.png
286
- - app/assets/images/kuppayam/favicon.png
287
- - app/assets/images/kuppayam/logo.png
335
+ - app/assets/images/logo.png
288
336
  - app/assets/javascripts/jquery_with_ujs.js
289
337
  - app/assets/javascripts/kuppayam.js
290
338
  - app/assets/javascripts/kuppayam/utilities.js
@@ -310,11 +358,14 @@ files:
310
358
  - app/helpers/render_helper.rb
311
359
  - app/helpers/resource_helper.rb
312
360
  - app/models/document/base.rb
361
+ - app/models/document/import_data_file.rb
362
+ - app/models/document/import_report_file.rb
313
363
  - app/models/image/base.rb
314
364
  - app/models/import_data.rb
315
365
  - app/models/kuppayam/application_record.rb
316
366
  - app/uploaders/document_uploader.rb
317
367
  - app/uploaders/image_uploader.rb
368
+ - app/uploaders/import_data_uploader.rb
318
369
  - app/views/kaminari/_first_page.html.erb
319
370
  - app/views/kaminari/_gap.html.erb
320
371
  - app/views/kaminari/_last_page.html.erb
@@ -331,15 +382,19 @@ files:
331
382
  - app/views/kuppayam/documents/edit.js.erb
332
383
  - app/views/kuppayam/documents/new.js.erb
333
384
  - app/views/kuppayam/documents/update.html.erb
334
- - app/views/kuppayam/images/_action_buttons.html.erb
385
+ - app/views/kuppayam/filters/_display_dropdown_filters.html.erb
386
+ - app/views/kuppayam/filters/_display_filters.html.erb
387
+ - app/views/kuppayam/http_status/404.html.erb
335
388
  - app/views/kuppayam/images/_crop_form.html.erb
336
389
  - app/views/kuppayam/images/_form.html.erb
337
390
  - app/views/kuppayam/images/_index.html.erb
338
391
  - app/views/kuppayam/images/_new.html.erb
339
392
  - app/views/kuppayam/images/_photos.html.erb
340
393
  - app/views/kuppayam/images/_row.html.erb
394
+ - app/views/kuppayam/images/_show.html.erb
341
395
  - app/views/kuppayam/images/create.html.erb
342
396
  - app/views/kuppayam/images/crop.html.erb
397
+ - app/views/kuppayam/images/destroy.js.erb
343
398
  - app/views/kuppayam/images/edit.js.erb
344
399
  - app/views/kuppayam/images/index.html.erb
345
400
  - app/views/kuppayam/images/new.js.erb
@@ -374,8 +429,8 @@ files:
374
429
  - app/views/layouts/kuppayam/_head.html.erb
375
430
  - app/views/layouts/kuppayam/_header.html.erb
376
431
  - app/views/layouts/kuppayam/_heading.html.erb
432
+ - app/views/layouts/kuppayam/_horizontal_menu.html.erb
377
433
  - app/views/layouts/kuppayam/_navbar.html.erb
378
- - app/views/layouts/kuppayam/_overlays.html.erb
379
434
  - app/views/layouts/kuppayam/_settings_pane.html.erb
380
435
  - app/views/layouts/kuppayam/_sidebar.html.erb
381
436
  - app/views/layouts/kuppayam/_sidebar_old.html.erb
@@ -383,9 +438,13 @@ files:
383
438
  - app/views/layouts/kuppayam/blank.html.erb
384
439
  - app/views/layouts/kuppayam/document_upload.html.erb
385
440
  - app/views/layouts/kuppayam/image_upload.html.erb
441
+ - app/views/layouts/kuppayam/layout_horizontal_menu.html.erb
442
+ - app/views/layouts/kuppayam/print_a4.html.erb
443
+ - app/views/layouts/kuppayam/user.html.erb
386
444
  - config/initializers/config_center.rb
445
+ - config/initializers/importer.rb
387
446
  - config/initializers/inflections.rb
388
- - config/initializers/kuppayam_validators.rb
447
+ - config/initializers/validators.rb
389
448
  - config/locales/kuppayam/general.yml
390
449
  - config/routes.rb
391
450
  - db/migrate/20170000000000_create_images.rb
@@ -397,7 +456,8 @@ files:
397
456
  - lib/kuppayam/action_view/theme_helper.rb
398
457
  - lib/kuppayam/engine.rb
399
458
  - lib/kuppayam/version.rb
400
- - lib/tasks/kuppayam_tasks.rake
459
+ - lib/tasks/template.rake
460
+ - lib/tasks/test_import.rake
401
461
  - vendor/assets/fonts/elusive/css/animation.css
402
462
  - vendor/assets/fonts/elusive/css/elusive-codes.css
403
463
  - vendor/assets/fonts/elusive/css/elusive-embedded.css
@@ -1389,6 +1449,7 @@ files:
1389
1449
  - vendor/assets/javascripts/xenon-toggles.js
1390
1450
  - vendor/assets/javascripts/xenon-widgets.js
1391
1451
  - vendor/assets/stylesheets/bootstrap.css
1452
+ - vendor/assets/stylesheets/custom.css
1392
1453
  - vendor/assets/stylesheets/handycss.css
1393
1454
  - vendor/assets/stylesheets/handycss.css.map
1394
1455
  - vendor/assets/stylesheets/other/wysihtml5-color.css
@@ -1412,14 +1473,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
1412
1473
  version: '0'
1413
1474
  required_rubygems_version: !ruby/object:Gem::Requirement
1414
1475
  requirements:
1415
- - - ">="
1476
+ - - ">"
1416
1477
  - !ruby/object:Gem::Version
1417
- version: '0'
1478
+ version: 1.3.1
1418
1479
  requirements: []
1419
1480
  rubyforge_project:
1420
- rubygems_version: 2.5.1
1481
+ rubygems_version: 2.6.11
1421
1482
  signing_key:
1422
1483
  specification_version: 4
1423
1484
  summary: Kuppayam is a basic UI to starter kit
1424
1485
  test_files: []
1425
- has_rdoc:
@@ -1,14 +0,0 @@
1
- <div class="row">
2
- <div class="col-md-4">
3
- </div>
4
- <div class="col-md-8">
5
- <%= search_form_kuppayam(Image::Base, images_path, text: @filters[:query]) %>
6
- </div>
7
- </div>
8
-
9
-
10
-
11
-
12
-
13
-
14
-
@@ -1,47 +0,0 @@
1
- <div id="div_modal_generic" class="modal" style="z-index: 1056;">
2
- <div class="modal-dialog">
3
- <div class="modal-content">
4
- <div class="modal-header">
5
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
6
- <h3 class="modal-title">Modal title</h3>
7
- </div>
8
- <div class="modal-body-main"></div>
9
- </div><!-- /.modal-content -->
10
- </div><!-- /.modal-dialog -->
11
- </div><!-- /.modal -->
12
-
13
- <div id="div_modal_large" class="modal">
14
- <div class="modal-dialog modal-lg" style="width: 96%">
15
- <div class="modal-content">
16
- <div class="modal-header">
17
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
18
- <h3 class="modal-title">Modal title</h3>
19
- </div>
20
- <div class="modal-body-main"></div>
21
- </div><!-- /.modal-content -->
22
- </div><!-- /.modal-dialog -->
23
- </div><!-- /.modal -->
24
-
25
- <div id="div_modal_message" class="modal fade">
26
- <div class="modal-dialog">
27
- <div class="modal-content">
28
- <div class="modal-header">
29
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
30
- <h3 class="modal-title">Modal title</h3>
31
- </div>
32
- <div class="modal-body">
33
- <p>One fine body&hellip;</p>
34
- </div>
35
- <div class="modal-footer">
36
- <button type="button" class="btn btn-primary" data-dismiss="modal">Close</button>
37
- </div>
38
- </div><!-- /.modal-content -->
39
- </div><!-- /.modal-dialog -->
40
- </div><!-- /.modal -->
41
-
42
- <script type="text/javascript">
43
- $('.modal').on('shown.bs.modal', function(e){
44
- $(this).modal('handleUpdate'); //Update backdrop on modal show
45
- $(this).scrollTop(0); //reset modal to top position
46
- });
47
- </script>
@@ -1,76 +0,0 @@
1
- module KuppayamValidators
2
-
3
- def generate_validation_options(attribute, options)
4
- {a: 1}
5
- reg_exp = /\A[a-zA-Z1-9\-\ \(\)\.+]*\z/i
6
- options.reverse_merge!(
7
- presence: true,
8
- min_length: 3,
9
- max_length: 256,
10
- format: reg_exp,
11
- uniqueness: false,
12
- mandatory: false
13
- )
14
-
15
- if options.has_key?(:condition_method) && !options[:condition_method].blank?
16
- condition_proc = proc {|obj| obj.send(options[:condition_method])}
17
- elsif options.has_key?(:mandatory) && options[:mandatory] == false
18
- condition_proc = proc {|obj| !obj.send(attribute).blank?}
19
- else
20
- condition_proc = nil
21
- end
22
-
23
- voptions = {
24
- presence: options[:presence],
25
- length: { minimum: options[:min_length], maximum: options[:max_length]},
26
- format: {:with => options[:format]}
27
- }
28
- voptions.merge!(uniqueness: options[:uniqueness]) if options[:uniqueness]
29
- voptions.merge!(if: condition_proc) if condition_proc
30
-
31
- voptions
32
- end
33
-
34
- def validate_string(attribute, **options)
35
- voptions = generate_validation_options(attribute, options)
36
- validates attribute, **voptions
37
- end
38
-
39
- def validate_username(attribute, **options)
40
- reg_exp = /\A[a-zA-Z0-9\_\.]*\z/
41
- options.merge!(mandatory: true, min_length: 3, max_length: 128, format: reg_exp, :uniqueness => {:case_sensitive => false})
42
- voptions = generate_validation_options(attribute, options)
43
- validates attribute, **voptions
44
- end
45
-
46
- def validate_email(attribute, **options)
47
- reg_exp = /\A(|(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6})\z/i
48
- options.merge!(mandatory: true, format: reg_exp, :uniqueness => {:case_sensitive => false})
49
- voptions = generate_validation_options(attribute, options)
50
- validates attribute, **voptions
51
- end
52
-
53
- # format can be either :us or :indian
54
- def validate_phone(attribute, **options)
55
- options.reverse_merge!(phone_format: :india)
56
- if options[:phone_format] == :us
57
- reg_exp = /\A[0-9]{3}[-][0-9]{3}[-][0-9]{4}\z/
58
- length = 12
59
- else
60
- reg_exp = /\A[0-9]{10}\z/
61
- length = 10
62
- end
63
- options.merge!(format: reg_exp, min_length: length, max_length: length)
64
- options.reverse_merge!(numericality: true, mandatory: true, uniqueness: true)
65
- voptions = generate_validation_options(attribute, options)
66
- validates attribute, **voptions
67
- end
68
-
69
- def validate_password(attribute, **options)
70
- reg_exp = /\A(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9!@$#&*_\.,;:])/
71
- options.merge!(mandatory: true, format: reg_exp, min_length: 7, max_length: 256)
72
- voptions = generate_validation_options(attribute, options)
73
- validates attribute, **voptions
74
- end
75
-
76
- end