mdd 3.0.10 → 3.0.13

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 (96) hide show
  1. data/app/helpers/mdwa_helper.rb +17 -0
  2. data/lib/generators/mdwa/code/code_generator.rb +1 -1
  3. data/lib/generators/mdwa/code/templates/migration.rb +1 -1
  4. data/lib/generators/mdwa/entity/templates/entity.rb +1 -1
  5. data/lib/generators/mdwa/from_requirements/from_requirements_generator.rb +8 -1
  6. data/lib/generators/mdwa/sandbox/sandbox_generator.rb +20 -0
  7. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/bmp_file.png +0 -0
  8. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/css_file.png +0 -0
  9. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/csv_file.png +0 -0
  10. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/doc_file.png +0 -0
  11. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/eps_file.png +0 -0
  12. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/gif_file.png +0 -0
  13. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/html_file.png +0 -0
  14. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/ico_file.png +0 -0
  15. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/jpg_file.png +0 -0
  16. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/js_file.png +0 -0
  17. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/json_file.png +0 -0
  18. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/mp3_file.png +0 -0
  19. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/pdf_file.png +0 -0
  20. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/php_file.png +0 -0
  21. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/png_file.png +0 -0
  22. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/ppt_file.png +0 -0
  23. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/psd_file.png +0 -0
  24. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/svg_file.png +0 -0
  25. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/swf_file.png +0 -0
  26. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/tiff_file.png +0 -0
  27. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/ttf_file.png +0 -0
  28. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/txt_file.png +0 -0
  29. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/wav_file.png +0 -0
  30. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/xls_file.png +0 -0
  31. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/xml_file.png +0 -0
  32. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/bmp_file.png +0 -0
  33. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/css_file.png +0 -0
  34. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/csv_file.png +0 -0
  35. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/doc_file.png +0 -0
  36. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/eps_file.png +0 -0
  37. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/gif_file.png +0 -0
  38. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/html_file.png +0 -0
  39. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/ico_file.png +0 -0
  40. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/jpg_file.png +0 -0
  41. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/js_file.png +0 -0
  42. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/json_file.png +0 -0
  43. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/mp3_file.png +0 -0
  44. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/pdf_file.png +0 -0
  45. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/php_file.png +0 -0
  46. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/png_file.png +0 -0
  47. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/ppt_file.png +0 -0
  48. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/psd_file.png +0 -0
  49. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/svg_file.png +0 -0
  50. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/swf_file.png +0 -0
  51. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/tiff_file.png +0 -0
  52. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/ttf_file.png +0 -0
  53. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/txt_file.png +0 -0
  54. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/wav_file.png +0 -0
  55. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/xls_file.png +0 -0
  56. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/xml_file.png +0 -0
  57. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/bmp_file.png +0 -0
  58. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/css_file.png +0 -0
  59. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/csv_file.png +0 -0
  60. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/doc_file.png +0 -0
  61. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/eps_file.png +0 -0
  62. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/gif_file.png +0 -0
  63. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/html_file.png +0 -0
  64. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/ico_file.png +0 -0
  65. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/jpg_file.png +0 -0
  66. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/js_file.png +0 -0
  67. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/json_file.png +0 -0
  68. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/mp3_file.png +0 -0
  69. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/pdf_file.png +0 -0
  70. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/php_file.png +0 -0
  71. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/png_file.png +0 -0
  72. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/ppt_file.png +0 -0
  73. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/psd_file.png +0 -0
  74. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/svg_file.png +0 -0
  75. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/swf_file.png +0 -0
  76. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/tiff_file.png +0 -0
  77. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/ttf_file.png +0 -0
  78. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/txt_file.png +0 -0
  79. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/wav_file.png +0 -0
  80. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/xls_file.png +0 -0
  81. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/xml_file.png +0 -0
  82. data/lib/generators/mdwa/templates/templates/scaffold/model.rb +4 -0
  83. data/lib/generators/mdwa/templates/templates/scaffold/views/_form.html.erb +1 -1
  84. data/lib/generators/mdwa/templates/templates/scaffold/views/_form_fields.html.erb +6 -0
  85. data/lib/generators/mdwa/templates/templates/scaffold/views/_list.html.erb +13 -3
  86. data/lib/generators/mdwa/templates/templates/scaffold/views/show.html.erb +8 -0
  87. data/lib/generators/mdwa/templates/templates_generator.rb +9 -1
  88. data/lib/generators/mdwa/transform/templates/changes_migration.rb +1 -1
  89. data/lib/generators/mdwa/transform/transform_generator.rb +6 -5
  90. data/lib/generators/mdwa/user_scaffold/user_scaffold_generator.rb +69 -69
  91. data/lib/mdwa/dsl/entity.rb +17 -6
  92. data/lib/mdwa/dsl/entity_association.rb +6 -2
  93. data/lib/mdwa/generators/model.rb +4 -0
  94. data/lib/mdwa/generators/model_association.rb +6 -1
  95. data/lib/mdwa/version.rb +1 -1
  96. metadata +79 -4
@@ -14,4 +14,21 @@ module MdwaHelper
14
14
  return results.collect{ |c| "{label: '#{c.send field_name}', value: '#{c.id}'}" }.join( ',' )
15
15
  end
16
16
 
17
+ def file_icon_path( file_name, size = 'medium' )
18
+ exts = [ "bmp", "css", "csv", "doc", "docx", "eps", "gif", "html", "ico", "jpg", "js", "json", "mp3", "pdf", "php", "png", "ppt", "pptx", "psd", "svg", "swf", "tiff", "txt", "wav", "xls", "xlsx", "xml" ]
19
+ path = "mdwa/documents"
20
+
21
+ # recuperando a extensão do arquivo
22
+ file_name = file_name.split( "." )
23
+ # Caso não tenha extensão, ícone padrão é o de txt
24
+ # Caso não exista o ícone da extensão, icone padrão é o do txt
25
+ if file_name.length.eql?(1) or !exts.include?(file_name[ file_name.length - 1])
26
+ ext = "txt"
27
+ else
28
+ ext = file_name[ file_name.length - 1]
29
+ end
30
+
31
+ return "#{path}/#{size}/#{ext}_file.png"
32
+ end
33
+
17
34
  end
@@ -118,7 +118,7 @@ module Mdwa
118
118
 
119
119
  # generate changed code
120
120
  unless @changes.empty?
121
- migration_template 'migration.rb', "db/migrate/alter_#{@all_entities.select{|e| e.resource?}.collect{|e| e.file_name}.join('_')}#{@random_migration_key}.rb"
121
+ migration_template 'migration.rb', "db/migrate/alter_#{@changes.collect{|c| c[:entity].file_name}.join('_')}#{@random_migration_key}.rb"
122
122
  end
123
123
 
124
124
  end
@@ -1,5 +1,5 @@
1
1
  # -*- encoding : utf-8 -*-
2
- class Alter<%= @all_entities.select{|e| e.resource?}.collect{|e| e.file_name.camelize}.join('') %><%= @random_migration_key %> < ActiveRecord::Migration
2
+ class Alter<%= @changes.collect{|c| c[:entity].file_name.camelize}.join('') %><%= @random_migration_key %> < ActiveRecord::Migration
3
3
 
4
4
  def self.up
5
5
  <%- @changes.each do |change| -%>
@@ -30,7 +30,6 @@ MDWA::DSL.entities.register "<%= name.singularize.camelize %>" do |e|
30
30
  # e.association do |a|
31
31
  # a.type = 'many_to_one'
32
32
  # a.destination = 'Category' # entity name
33
- # a.description = '<%= name.singularize.humanize %> belongs to category'
34
33
  # end
35
34
  #
36
35
  # e.association do |a|
@@ -39,6 +38,7 @@ MDWA::DSL.entities.register "<%= name.singularize.camelize %>" do |e|
39
38
  # a.destination = 'Address'
40
39
  # a.composition = true
41
40
  # a.description = 'This entity has a composite address.'
41
+ # a.skip_views = false
42
42
  # end
43
43
 
44
44
  ##
@@ -12,6 +12,8 @@ module Mdwa
12
12
  source_root File.expand_path("../templates", __FILE__)
13
13
  attr_accessor :requirements
14
14
 
15
+ argument :defined_requirements, :type => :array, :banner => 'Generate only defined requirements (use the alias)', :default => []
16
+
15
17
  #
16
18
  # Constructor
17
19
  # Require all entities to load the DSL of the application
@@ -22,7 +24,12 @@ module Mdwa
22
24
  inside Rails.root do
23
25
  require_all MDWA::DSL::REQUIREMENTS_PATH
24
26
  end
25
- @requirements = MDWA::DSL.requirements.all
27
+ # select entities that will be generated
28
+ if defined_requirements.count.zero?
29
+ @requirements = MDWA::DSL.requirements.all
30
+ else
31
+ @requirements = defined_requirements.collect{ |r| MDWA::DSL.requirement(r) }
32
+ end
26
33
 
27
34
  end
28
35
 
@@ -34,6 +34,26 @@ module Mdwa
34
34
  run "bundle install"
35
35
  remove_file 'public/index.html'
36
36
  end
37
+
38
+ if yes?('Include Paperclip for file uploads?')
39
+ gem 'paperclip'
40
+ puts 'Which OS you use?'
41
+ if yes?('Ubuntu?')
42
+ puts 'Make sure to install the binary: sudo apt-get install imagemagick'
43
+ application do
44
+ "#Paperclip ImageMagick"
45
+ "Paperclip.options[:command_path] = '/usr/bin/'"
46
+ end
47
+ elsif yes?('Mac OS X?')
48
+ puts 'Make sure to install the binary: brew install imagemagick'
49
+ application do
50
+ "#Paperclip ImageMagick"
51
+ "Paperclip.options[:command_path] = '/usr/local/bin'"
52
+ end
53
+ else
54
+ puts 'Paperclip uses ImageMagick. Install it manually.'
55
+ end
56
+ end
37
57
  end
38
58
 
39
59
  def images
@@ -6,6 +6,10 @@ class <%= @model.klass %> < <%= !@entity.user? ? 'ActiveRecord::Base' : 'User' %
6
6
  <%- unless @model.attributes.count.zero? -%>
7
7
  attr_accessible <%= @model.attributes.collect {|a| ":" + a.name }.join(', ') %>
8
8
  <%- end -%>
9
+ <%- # paperclip file uploads -%>
10
+ <%- unless @model.attributes.select{|attr| attr.type.to_sym == :file}.count.zero? -%>
11
+ has_attached_file <%= @model.attributes.select{|attr| attr.type.to_sym == :file}.collect {|a| ":" + a.name }.join(', ') %>
12
+ <%- end -%>
9
13
 
10
14
  <%- if @entity.user? -%>
11
15
  <%- require_all "#{MDWA::DSL::USERS_PATH}#{@entity.file_name}.rb" -%>
@@ -1,5 +1,5 @@
1
1
  ===entity_code===
2
- <%%= <%= 'nested_' unless @model.attributes.select{|a| a.nested_many?}.count.zero? %>form_for(<%= @model.to_route_object('@') %><%= ', :remote => true, :html => {:class => :mdwa_ajax}' if @entity.ajax %>) do |f| %>
2
+ <%%= <%= 'nested_' if @model.nested_many? %>form_for(<%= @model.to_route_object('@') %><%= ", :remote => true, :html => {:class => :mdwa_ajax #{',:multipart => true' if @model.attributes.select{|attr| attr.type.to_sym == :file}.count.zero?}}" if @entity.ajax %>) do |f| %>
3
3
 
4
4
  <div id="mdwa_error">
5
5
  <%%= render '/template/mdwa/crud_error', :object => @<%= @model.singular_name %> %>
@@ -2,11 +2,17 @@
2
2
  <%- @model.attributes.each do |attr| -%>
3
3
  <div class="field">
4
4
  <%%= f.label :<%= attr.name %> %>
5
+ <%- if attr.type.to_sym == :file -%>
6
+ <%% unless @<%= @model.singular_name %>.new_record? %>
7
+ <span><%%= link_to image_tag(file_icon_path(@<%= @model.singular_name %>.<%= attr.name %>_file_name)), @<%= @model.singular_name %>.<%= attr.name %>.url, :target => '_blank' %></span>
8
+ <%% end %>
9
+ <%- end -%>
5
10
  <%%= f.<%= attr.form_field %> :<%= attr.name %> %>
6
11
  </div>
7
12
  <%- end # model.attributes.each -%>
8
13
 
9
14
  <%- @model.associations.each do |assoc| -%>
15
+ <%- next if assoc.skip_views? %>
10
16
  <%- if assoc.belongs_to? -%>
11
17
  <div class="field">
12
18
  <%%= f.label :<%= assoc.model2.singular_name.foreign_key %> %>
@@ -20,9 +20,19 @@
20
20
  <td>
21
21
  <%%= link_to t('system.index_edit_label'), edit_<%= @model.object_name %>_path(<%= @model.singular_name %>) <%= ", :class => 'lightbox various fancybox.ajax'" if @entity.ajax %> %>
22
22
  </td>
23
- <%- @model.attributes.each do |attr| -%>
24
- <td><%%= <%= @model.singular_name %>.<%= attr.name %> %></td>
25
- <%- end -%>
23
+ <%- @model.attributes.each do |attr| -%>
24
+ <td>
25
+ <%- if attr.type.to_sym == :file -%>
26
+ <%% unless <%= @model.singular_name %>.<%= attr.name %>_file_name.blank? %>
27
+ <%%= link_to image_tag(file_icon_path(<%= @model.singular_name %>.<%= attr.name %>_file_name)), <%= @model.singular_name %>.<%= attr.name %>.url, :target => '_blank' %>
28
+ <%% else %>
29
+ No file.
30
+ <%% end %>
31
+ <%- else -%>
32
+ <%%= <%= @model.singular_name %>.<%= attr.name %> %>
33
+ <%- end -%>
34
+ </td>
35
+ <%- end -%>
26
36
 
27
37
  <%- @model.associations.each do |assoc| -%>
28
38
  <td>
@@ -8,7 +8,15 @@
8
8
  <%- @model.attributes.each do |attr| -%>
9
9
  <div class="field">
10
10
  <label><%%= t '<%= @model.plural_name %>.show_<%= attr.name %>' %></label>
11
+ <%- if attr.type.to_sym == :file -%>
12
+ <%% unless @<%= @model.singular_name %>.<%= attr.name %>.nil? %>
13
+ <span><%%= link_to image_tag(file_icon_path(@<%= @model.singular_name %>.<%= attr.name %>_file_name)), @<%= @model.singular_name %>.<%= attr.name %>.url, :target => '_blank' %></span>
14
+ <%% else %>
15
+ No file.
16
+ <%% end %>
17
+ <%- else -%>
11
18
  <span><%%= @<%= @model.singular_name %>.<%= attr.name %> %></span>
19
+ <%- end -%>
12
20
  </div>
13
21
  <%- end -%>
14
22
  <%- @model.associations.each do |assoc| -%>
@@ -15,6 +15,8 @@ module Mdwa
15
15
 
16
16
  attr_accessor :entities
17
17
 
18
+ argument :entities, :type => :array, :banner => 'Entities to transform', :default => []
19
+
18
20
  #
19
21
  # Constructor
20
22
  # Require all entities to load the DSL of the application
@@ -26,7 +28,13 @@ module Mdwa
26
28
  inside Rails.root do
27
29
  require_all MDWA::DSL::STRUCTURAL_PATH unless Dir.glob("#{MDWA::DSL::STRUCTURAL_PATH}/*.rb").count.zero?
28
30
  end
29
- @entities = MDWA::DSL.entities.all
31
+
32
+ # select entities that will be generated
33
+ if entities.count.zero?
34
+ @entities = MDWA::DSL.entities.all
35
+ else
36
+ @entities = entities.collect{ |e| MDWA::DSL.entity(e) }
37
+ end
30
38
  end
31
39
 
32
40
 
@@ -1,5 +1,5 @@
1
1
  # -*- encoding : utf-8 -*-
2
- class Alter<%= @entities.select{|e| e.resource?}.collect{|e| e.file_name.camelize}.join('') %><%= @random_migration_key %> < ActiveRecord::Migration
2
+ class Alter<%= @changes.collect{|c| c[:entity].file_name.camelize}.join('') %><%= @random_migration_key %> < ActiveRecord::Migration
3
3
 
4
4
  def self.up
5
5
  <%- @changes.each do |change| -%>
@@ -38,6 +38,8 @@ module Mdwa
38
38
  # entity changes and migrations
39
39
  @changes = []
40
40
  @random_migration_key = rand.to_s.gsub('.','').to_i
41
+
42
+ run 'rake db:migrate'
41
43
  end
42
44
 
43
45
  def generate_model_controller_helper_views
@@ -198,7 +200,7 @@ module Mdwa
198
200
 
199
201
  # ignore rails default columns and attributes used in associations
200
202
  next if column.name == 'id' or column.name == 'created_at' or column.name == 'updated_at' or column.name.end_with? '_id'
201
-
203
+
202
204
  entity_attribute = entity.attributes[column.name]
203
205
  # model attribute exists, but not in entity -> was erased
204
206
  if entity_attribute.nil?
@@ -213,7 +215,7 @@ module Mdwa
213
215
  # new attributes
214
216
  # no column with that name -> column must be added
215
217
  entity.attributes.each do |key, attr|
216
- if model_class.columns.select {|c| c.name == attr.name}.count.zero?
218
+ if model_class.columns.select {|c| c.name == attr.name }.count.zero?
217
219
  @changes << {:entity => entity, :type => 'add_column', :column => attr.name, :attr_type => attr.type}
218
220
  end
219
221
  end
@@ -230,7 +232,7 @@ module Mdwa
230
232
 
231
233
  # generate changed code
232
234
  unless @changes.empty?
233
- migration_template 'changes_migration.rb', "db/migrate/alter_#{@entities.select{|e| e.resource?}.collect{|e| e.file_name}.join('_')}#{@random_migration_key}.rb"
235
+ migration_template 'changes_migration.rb', "db/migrate/alter_#{@changes.collect{|c| c[:entity].file_name}.join('_')}#{@random_migration_key}.rb"
234
236
  @pending_migrations = true
235
237
  end
236
238
 
@@ -296,10 +298,9 @@ module Mdwa
296
298
  migration_string << "\t\tdrop_table :#{generator_model.plural_name}"
297
299
  migration_string << "\tend"
298
300
 
301
+ sleep 1 # aguarda 1 seg para trocar o timestamp
299
302
  migration_name = "create_#{generator_model.plural_name}"
300
303
  migration_from_string(migration_name, migration_string.join("\n"))
301
-
302
- sleep 1 # aguarda 1 seg para trocar o timestamp
303
304
 
304
305
  @pending_migrations = true
305
306
  end
@@ -60,85 +60,85 @@ module Mdwa
60
60
  end
61
61
 
62
62
  end
63
+
64
+
65
+ def migration_override
63
66
 
64
- def controller_and_view
65
-
66
- return nil if options.only_diff_migration
67
- return nil if options.skip_interface
68
-
69
- # controllers
70
- @inherit_controller = 'A::BackendController' if @model.space == 'a'
71
- template "controllers/#{'ajax_' if options.ajax}controller.rb", "app/controllers/#{@model.space}/#{@model.plural_name}_controller.rb"
72
-
73
- # views - update only
74
- template 'views/update.js.erb', "app/views/#{@model.space}/#{@model.plural_name}/update.js.erb"
75
-
76
- end
67
+ # override model attributes to not allow field duplicity (causing errors)
68
+ @model.attributes = []
69
+ attributes.each do |attribute|
70
+ attr = MDWA::Generators::ModelAttribute.new( attribute )
71
+
72
+ # add to model attributes
73
+ # if it's not predefined in devise
74
+ # if it's a belongs_to or nested_one association
75
+ if (!attr.references? and !@predefined_fields.include?( attribute.split(':').first )) or attr.belongs_to? or attr.nested_one?
76
+ @model.add_attribute attr
77
+ end
78
+ end
79
+ migration_template 'migrate.rb', "db/migrate/add_#{@model.attributes.collect{|a| a.name}.join('_')}_to_users" unless @model.attributes.empty?
80
+
81
+ # include type in db:seed
82
+ append_file 'db/seeds/site.rb' do
83
+ "\n\nPermission.create( :name => '#{@model.singular_name}' ) if Permission.find_by_name('#{@model.singular_name}').nil?"
84
+ end
85
+ # run rake db:seeds
86
+ if !options.skip_questions and yes?('Run rake db:seed to create permission type?')
87
+ rake 'db:migrate'
88
+ rake 'db:seed'
89
+ end
90
+ end
77
91
 
78
- def model_override
79
-
80
- return nil if options.only_diff_migration
92
+ def model_override
81
93
 
82
- # locate the mdwa user to discover the roles
83
- require_all "#{MDWA::DSL::USERS_PATH}#{@model.singular_name}.rb"
84
- @mdwa_user = MDWA::DSL.user(@model.name)
85
- if @mdwa_user.nil?
86
- @roles = [@model.name]
87
- else
88
- @roles = @mdwa_user.user_roles
89
- end
94
+ return nil if options.only_diff_migration
90
95
 
91
- # model override
92
- model_path = (@model.specific?) ? "app/models/#{@model.specific_model.space}/#{@model.specific_model.singular_name}.rb" : "app/models/#{@model.space}/#{@model.singular_name}.rb"
93
- gsub_file model_path, 'ActiveRecord::Base', 'User'
94
- inject_into_class model_path, @model.model_class do
95
- inj = []
96
- @roles.each do |role|
97
- inj << "\n\n\tafter_create :create_#{role.underscore}_permission\n"
98
- inj << "\tdef create_#{role.underscore}_permission"
99
- inj << "\t\t#{role.underscore}_permission = Permission.find_by_name('#{role.underscore}')"
100
- inj << "\t\t#{role.underscore}_permission = Permission.create(:name => '#{role.underscore}') if #{role.underscore}_permission.nil?"
101
- inj << "\t\tself.permissions.push #{role.underscore}_permission"
102
- inj << "\tend"
103
- end
104
- inj.join("\n")
105
- end
106
-
96
+ # locate the mdwa user to discover the roles
97
+ require_all "#{MDWA::DSL::USERS_PATH}#{@model.singular_name}.rb"
98
+ @mdwa_user = MDWA::DSL.user(@model.name)
99
+ if @mdwa_user.nil?
100
+ @roles = [@model.name]
101
+ else
102
+ @roles = @mdwa_user.user_roles
107
103
  end
108
-
109
- def migration_override
110
-
111
- # override model attributes to not allow field duplicity (causing errors)
112
- @model.attributes = []
113
- attributes.each do |attribute|
114
- attr = MDWA::Generators::ModelAttribute.new( attribute )
115
-
116
- # add to model attributes
117
- # if it's not predefined in devise
118
- # if it's a belongs_to or nested_one association
119
- if (!attr.references? and !@predefined_fields.include?( attribute.split(':').first )) or attr.belongs_to? or attr.nested_one?
120
- @model.add_attribute attr
121
- end
122
- end
123
- migration_template 'migrate.rb', "db/migrate/add_#{@model.attributes.collect{|a| a.name}.join('_')}_to_users" unless @model.attributes.empty?
124
-
125
- # include type in db:seed
126
- append_file 'db/seeds/site.rb' do
127
- "\n\nPermission.create( :name => '#{@model.singular_name}' ) if Permission.find_by_name('#{@model.singular_name}').nil?"
128
- end
129
- # run rake db:seeds
130
- if !options.skip_questions and yes?('Run rake db:seed to create permission type?')
131
- rake 'db:migrate'
132
- rake 'db:seed'
104
+
105
+ # model override
106
+ model_path = (@model.specific?) ? "app/models/#{@model.specific_model.space}/#{@model.specific_model.singular_name}.rb" : "app/models/#{@model.space}/#{@model.singular_name}.rb"
107
+ gsub_file model_path, 'ActiveRecord::Base', 'User'
108
+ inject_into_class model_path, @model.model_class do
109
+ inj = []
110
+ @roles.each do |role|
111
+ inj << "\n\n\tafter_create :create_#{role.underscore}_permission\n"
112
+ inj << "\tdef create_#{role.underscore}_permission"
113
+ inj << "\t\t#{role.underscore}_permission = Permission.find_by_name('#{role.underscore}')"
114
+ inj << "\t\t#{role.underscore}_permission = Permission.create(:name => '#{role.underscore}') if #{role.underscore}_permission.nil?"
115
+ inj << "\t\tself.permissions.push #{role.underscore}_permission"
116
+ inj << "\tend"
133
117
  end
118
+ inj.join("\n")
134
119
  end
120
+
121
+ end
122
+
123
+ def controller_and_view
135
124
 
125
+ return nil if options.only_diff_migration
126
+ return nil if options.skip_interface
136
127
 
137
- def run_rake_db_migrate
138
- if !options.skip_rake_migrate and !options.skip_migrations and !options.only_interface
139
- rake('db:migrate') if !options.skip_questions and yes? 'Run rake db:migrate?'
140
- end
128
+ # controllers
129
+ @inherit_controller = 'A::BackendController' if @model.space == 'a'
130
+ template "controllers/#{'ajax_' if options.ajax}controller.rb", "app/controllers/#{@model.space}/#{@model.plural_name}_controller.rb"
131
+
132
+ # views - update only
133
+ template 'views/update.js.erb', "app/views/#{@model.space}/#{@model.plural_name}/update.js.erb"
134
+
135
+ end
136
+
137
+ def run_rake_db_migrate
138
+ if !options.skip_rake_migrate and !options.skip_migrations and !options.only_interface
139
+ rake('db:migrate') if !options.skip_questions and yes? 'Run rake db:migrate?'
141
140
  end
141
+ end
142
142
 
143
143
  private
144
144
 
@@ -84,13 +84,23 @@ module MDWA
84
84
 
85
85
  #
86
86
  # Declares one attribute of the list using the block given.
87
- #
88
87
  def attribute(name, type)
89
- attr = EntityAttribute.new(self)
90
- attr.name = name
91
- attr.type = type
92
- attr.raise_errors_if_invalid!
93
- self.attributes[attr.name] = attr
88
+ if type.to_sym == :file
89
+ fields = ['_file_name','_content_type', '_file_size', '_updated_at']
90
+ fields.each do |f|
91
+ attr = EntityAttribute.new(self)
92
+ attr.name = "#{name}#{f}"
93
+ attr.type = :string
94
+ attr.raise_errors_if_invalid!
95
+ self.attributes[attr.name] = attr
96
+ end
97
+ else
98
+ attr = EntityAttribute.new(self)
99
+ attr.name = name
100
+ attr.type = type
101
+ attr.raise_errors_if_invalid!
102
+ self.attributes[attr.name] = attr
103
+ end
94
104
  end
95
105
 
96
106
  #
@@ -141,6 +151,7 @@ module MDWA
141
151
  model2 = Generators::Model.new(entity2.model_name)
142
152
  assoc = Generators::ModelAssociation.new(model1, model2, association.generator_type, entity2.default_attribute.name)
143
153
  assoc.composition = true if association.composition
154
+ assoc.skip_views = association.skip_views
144
155
  @generator_model.associations << assoc
145
156
  end
146
157
  return @generator_model
@@ -5,13 +5,14 @@ module MDWA
5
5
  class EntityAssociation
6
6
 
7
7
  attr_accessor :source, :destination, :destination_view
8
- attr_accessor :name, :type, :composition, :description
8
+ attr_accessor :name, :type, :composition, :description, :skip_views
9
9
 
10
10
  ACCEPTED_TYPES = [:one_to_many, :many_to_one, :one_to_one, :one_to_one_not_navigable, :many_to_many]
11
11
 
12
12
  def initialize(source)
13
13
  self.source = source
14
14
  self.composition = false
15
+ self.skip_views = false
15
16
  end
16
17
 
17
18
  #
@@ -22,7 +23,10 @@ module MDWA
22
23
  self.name = value.downcase if self.name.blank?
23
24
  @destination = value
24
25
  end
25
-
26
+
27
+ def skip_views?
28
+ skip_views
29
+ end
26
30
 
27
31
  #
28
32
  # Return the mapped type for the code generation.
@@ -97,6 +97,10 @@ module MDWA
97
97
  def space
98
98
  namespace.underscore
99
99
  end
100
+
101
+ def nested_many?
102
+ self.attributes.select{|a| a.nested_many?}.count.zero? or self.associations.select{|a| a.nested_many?}.count.zero?
103
+ end
100
104
 
101
105
  def add_attribute(model_attribute)
102
106
  self.attributes << model_attribute
@@ -6,7 +6,7 @@ module MDWA
6
6
 
7
7
  class ModelAssociation
8
8
 
9
- attr_accessor :model1, :model2, :relation, :reference_field, :composition
9
+ attr_accessor :model1, :model2, :relation, :reference_field, :composition, :skip_views
10
10
 
11
11
  ACCEPTED_RELATIONS = [:has_many, :belongs_to, :has_and_belongs_to_many, :nested_many, :nested_one, :has_one]
12
12
 
@@ -17,6 +17,7 @@ module MDWA
17
17
  self.relation = relation_name
18
18
  self.reference_field = reference_field || 'id'
19
19
  self.composition = false
20
+ self.skip_views = false
20
21
 
21
22
  # validation
22
23
  raise "Invalid model name: #{@model1.name}" unless self.model1.valid?
@@ -44,6 +45,10 @@ module MDWA
44
45
  self.composition
45
46
  end
46
47
 
48
+ def skip_views?
49
+ self.skip_views
50
+ end
51
+
47
52
  def relation_valid?
48
53
  ACCEPTED_RELATIONS.include? relation.to_sym
49
54
  end
data/lib/mdwa/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module MDWA
3
- VERSION = "3.0.10"
3
+ VERSION = "3.0.13"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mdd
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.10
4
+ version: 3.0.13
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-11 00:00:00.000000000 Z
12
+ date: 2012-09-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -198,6 +198,81 @@ files:
198
198
  - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/bg_window_header.png
199
199
  - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/bt_g.png
200
200
  - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/button_submit.gif
201
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/bmp_file.png
202
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/css_file.png
203
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/csv_file.png
204
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/doc_file.png
205
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/eps_file.png
206
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/gif_file.png
207
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/html_file.png
208
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/ico_file.png
209
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/jpg_file.png
210
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/js_file.png
211
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/json_file.png
212
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/mp3_file.png
213
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/pdf_file.png
214
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/php_file.png
215
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/png_file.png
216
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/ppt_file.png
217
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/psd_file.png
218
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/svg_file.png
219
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/swf_file.png
220
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/tiff_file.png
221
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/ttf_file.png
222
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/txt_file.png
223
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/wav_file.png
224
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/xls_file.png
225
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/big/xml_file.png
226
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/bmp_file.png
227
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/css_file.png
228
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/csv_file.png
229
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/doc_file.png
230
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/eps_file.png
231
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/gif_file.png
232
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/html_file.png
233
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/ico_file.png
234
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/jpg_file.png
235
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/js_file.png
236
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/json_file.png
237
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/mp3_file.png
238
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/pdf_file.png
239
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/php_file.png
240
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/png_file.png
241
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/ppt_file.png
242
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/psd_file.png
243
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/svg_file.png
244
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/swf_file.png
245
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/tiff_file.png
246
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/ttf_file.png
247
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/txt_file.png
248
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/wav_file.png
249
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/xls_file.png
250
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/medium/xml_file.png
251
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/bmp_file.png
252
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/css_file.png
253
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/csv_file.png
254
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/doc_file.png
255
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/eps_file.png
256
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/gif_file.png
257
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/html_file.png
258
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/ico_file.png
259
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/jpg_file.png
260
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/js_file.png
261
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/json_file.png
262
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/mp3_file.png
263
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/pdf_file.png
264
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/php_file.png
265
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/png_file.png
266
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/ppt_file.png
267
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/psd_file.png
268
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/svg_file.png
269
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/swf_file.png
270
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/tiff_file.png
271
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/ttf_file.png
272
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/txt_file.png
273
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/wav_file.png
274
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/xls_file.png
275
+ - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/documents/small/xml_file.png
201
276
  - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/fancybox_loading.gif
202
277
  - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/fancybox_sprite.png
203
278
  - lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/headerbg.png
@@ -407,7 +482,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
407
482
  version: '0'
408
483
  segments:
409
484
  - 0
410
- hash: -1391967051597279981
485
+ hash: -3606410943858974791
411
486
  required_rubygems_version: !ruby/object:Gem::Requirement
412
487
  none: false
413
488
  requirements:
@@ -416,7 +491,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
416
491
  version: '0'
417
492
  segments:
418
493
  - 0
419
- hash: -1391967051597279981
494
+ hash: -3606410943858974791
420
495
  requirements: []
421
496
  rubyforge_project: mdd
422
497
  rubygems_version: 1.8.24