mdd 3.0.10 → 3.0.13

Sign up to get free protection for your applications and to get access to all the features.
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