dhatu 0.3.0.pre.materialize → 0.3.1.pre.materialize

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 (102) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/dhatu/application_controller.rb +0 -2
  3. data/app/controllers/dhatu/career_opportunities_controller.rb +145 -0
  4. data/app/controllers/dhatu/manufacturers_controller.rb +114 -0
  5. data/app/controllers/dhatu/products_controller.rb +164 -0
  6. data/app/controllers/dhatu/resource_controller.rb +1 -0
  7. data/app/models/dhatu/blog_post.rb +1 -1
  8. data/app/models/dhatu/booking.rb +1 -1
  9. data/app/models/dhatu/branch.rb +1 -1
  10. data/app/models/dhatu/career_opportunity.rb +92 -0
  11. data/app/models/dhatu/category.rb +1 -1
  12. data/app/models/dhatu/event.rb +1 -1
  13. data/app/models/dhatu/manufacturer.rb +113 -0
  14. data/app/models/dhatu/meta_tag.rb +1 -1
  15. data/app/models/dhatu/offer.rb +1 -1
  16. data/app/models/dhatu/page.rb +1 -1
  17. data/app/models/dhatu/photo_album.rb +1 -1
  18. data/app/models/dhatu/price.rb +1 -1
  19. data/app/models/dhatu/product.rb +141 -0
  20. data/app/models/dhatu/project.rb +1 -1
  21. data/app/models/dhatu/promotion.rb +1 -1
  22. data/app/models/dhatu/promotion_attribute.rb +1 -1
  23. data/app/models/dhatu/promotion_enquiry.rb +1 -1
  24. data/app/models/dhatu/section.rb +11 -1
  25. data/app/models/dhatu/service.rb +1 -1
  26. data/app/models/dhatu/team_member.rb +1 -1
  27. data/app/models/dhatu/testimonial.rb +1 -1
  28. data/app/views/dhatu/blog_posts/_form.html.erb +1 -1
  29. data/app/views/dhatu/blog_posts/_show.html.erb +1 -1
  30. data/app/views/dhatu/bookings/_show.html.erb +1 -1
  31. data/app/views/dhatu/branches/_form.html.erb +1 -1
  32. data/app/views/dhatu/branches/_show.html.erb +1 -1
  33. data/app/views/dhatu/career_opportunities/_form.html.erb +41 -0
  34. data/app/views/dhatu/career_opportunities/_index.html.erb +52 -0
  35. data/app/views/dhatu/career_opportunities/_row.html.erb +26 -0
  36. data/app/views/dhatu/career_opportunities/_show.html.erb +96 -0
  37. data/app/views/dhatu/career_opportunities/index.html.erb +52 -0
  38. data/app/views/dhatu/categories/_show.html.erb +1 -1
  39. data/app/views/dhatu/dashboard/_index.html.erb +18 -0
  40. data/app/views/dhatu/events/_form.html.erb +1 -1
  41. data/app/views/dhatu/events/_show.html.erb +1 -1
  42. data/app/views/dhatu/manufacturers/_form.html.erb +40 -0
  43. data/app/views/dhatu/manufacturers/_index.html.erb +56 -0
  44. data/app/views/dhatu/manufacturers/_row.html.erb +30 -0
  45. data/app/views/dhatu/manufacturers/_show.html.erb +69 -0
  46. data/app/views/dhatu/manufacturers/index.html.erb +63 -0
  47. data/app/views/dhatu/manufacturers/show.html.erb +12 -0
  48. data/app/views/dhatu/offers/_form.html.erb +1 -1
  49. data/app/views/dhatu/offers/_show.html.erb +1 -1
  50. data/app/views/dhatu/pages/_show.html.erb +1 -1
  51. data/app/views/dhatu/photo_albums/_show.html.erb +1 -1
  52. data/app/views/dhatu/prices/_show.html.erb +1 -1
  53. data/app/views/dhatu/products/_form.html.erb +58 -0
  54. data/app/views/dhatu/products/_index.html.erb +68 -0
  55. data/app/views/dhatu/products/_row.html.erb +40 -0
  56. data/app/views/dhatu/products/_show.html.erb +146 -0
  57. data/app/views/dhatu/products/index.html.erb +63 -0
  58. data/app/views/dhatu/products/show.html.erb +12 -0
  59. data/app/views/dhatu/projects/_form.html.erb +1 -1
  60. data/app/views/dhatu/projects/_show.html.erb +1 -1
  61. data/app/views/dhatu/promotion_attributes/_show.html.erb +1 -1
  62. data/app/views/dhatu/promotion_enquiries/_show.html.erb +1 -1
  63. data/app/views/dhatu/promotions/_form.html.erb +1 -1
  64. data/app/views/dhatu/promotions/_show.html.erb +1 -1
  65. data/app/views/dhatu/sections/_form.html.erb +1 -1
  66. data/app/views/dhatu/sections/_show.html.erb +1 -1
  67. data/app/views/dhatu/services/_form.html.erb +1 -1
  68. data/app/views/dhatu/services/_show.html.erb +1 -1
  69. data/app/views/dhatu/team_members/_form.html.erb +1 -1
  70. data/app/views/dhatu/team_members/_show.html.erb +1 -1
  71. data/app/views/dhatu/testimonials/_form.html.erb +1 -1
  72. data/app/views/dhatu/testimonials/_show.html.erb +1 -1
  73. data/app/views/layouts/kuppayam/_sidebar.html.erb +18 -0
  74. data/config/routes.rb +24 -0
  75. data/db/data/dummy/categories.csv +4 -1
  76. data/db/data/dummy/products.csv +3 -0
  77. data/db/migrate/20160803045832_create_events.rb +2 -2
  78. data/db/migrate/20160803045832_create_offers.rb +2 -2
  79. data/db/migrate/20171010055101_create_pages.rb +3 -3
  80. data/db/migrate/20171010055102_create_sections.rb +2 -2
  81. data/db/migrate/20171012073510_create_testimonials.rb +2 -2
  82. data/db/migrate/20171012103805_create_team_members.rb +2 -2
  83. data/db/migrate/20171012103806_create_blog_posts.rb +2 -2
  84. data/db/migrate/20171014125053_create_branches.rb +2 -2
  85. data/db/migrate/20171014125054_create_categories.rb +3 -3
  86. data/db/migrate/20171014125055_create_services.rb +3 -3
  87. data/db/migrate/20171104163660_create_prices.rb +2 -2
  88. data/db/migrate/20171104163661_create_bookings.rb +2 -2
  89. data/db/migrate/20171120145548_create_promotion_and_promotion_enquiries.rb +5 -5
  90. data/db/migrate/20180101093434_create_projects.rb +3 -3
  91. data/db/migrate/20180101093436_create_meta_tags.rb +3 -3
  92. data/db/migrate/20180101093437_create_photo_albums.rb +3 -3
  93. data/db/migrate/20180101093438_create_manufacturers.rb +17 -0
  94. data/db/migrate/20180101093439_create_products.rb +29 -0
  95. data/db/migrate/20180101093449_create_career_opportunities.rb +23 -0
  96. data/lib/dhatu/version.rb +1 -1
  97. metadata +29 -7
  98. data/app/views/dhatu/sections_old/_form.html.erb +0 -171
  99. data/app/views/dhatu/sections_old/_index.html.erb +0 -53
  100. data/app/views/dhatu/sections_old/_row.html.erb +0 -26
  101. data/app/views/dhatu/sections_old/_show.html.erb +0 -208
  102. data/app/views/dhatu/sections_old/index.html.erb +0 -52
@@ -1,7 +1,7 @@
1
1
  class Dhatu::BlogPost < Dhatu::ApplicationRecord
2
2
 
3
3
  # Set Table Name
4
- self.table_name = "blog_posts"
4
+ self.table_name = "dhatu_blog_posts"
5
5
 
6
6
  # Including the State Machine Methods
7
7
  include Publishable
@@ -1,7 +1,7 @@
1
1
  class Dhatu::Booking < Dhatu::ApplicationRecord
2
2
 
3
3
  # Set Table Name
4
- self.table_name = "bookings"
4
+ self.table_name = "dhatu_bookings"
5
5
 
6
6
  # Including the State Machine Methods
7
7
  include Readable
@@ -1,7 +1,7 @@
1
1
  class Dhatu::Branch < Dhatu::ApplicationRecord
2
2
 
3
3
  # Set Table Name
4
- self.table_name = "branches"
4
+ self.table_name = "dhatu_branches"
5
5
 
6
6
  # Including the State Machine Methods
7
7
  include Publishable
@@ -0,0 +1,92 @@
1
+ class Dhatu::CareerOpportunity < Dhatu::ApplicationRecord
2
+
3
+ # Set Table Name
4
+ self.table_name = "dhatu_career_opportunities"
5
+
6
+ # Including the State Machine Methods
7
+ include Publishable
8
+ include Featureable
9
+
10
+ # Validations
11
+ validates :title, presence: true, length: {minimum: 5, maximum: 256}, allow_blank: false
12
+ validates :sub_title, allow_blank: true, length: {minimum: 5, maximum: 256}, allow_blank: false
13
+ validates :short_description, presence: true
14
+ validates :description, presence: true
15
+
16
+ # Associations
17
+ belongs_to :category, optional: true
18
+ has_one :cover_image, :as => :imageable, :dependent => :destroy, :class_name => "Image::CoverImage"
19
+
20
+ # Meta Tag Associations
21
+ has_one :og_image, :as => :imageable, :dependent => :destroy, :class_name => "Image::OgImage"
22
+ has_many :meta_tags, :as => :meta_taggable, :dependent => :destroy, :class_name => "Dhatu::MetaTag"
23
+
24
+ # ------------------
25
+ # Class Methods
26
+ # ------------------
27
+
28
+ scope :search, lambda { |query| where("LOWER(title) LIKE LOWER('%#{query}%') OR\
29
+ LOWER(sub_title) LIKE LOWER('%#{query}%') OR\
30
+ LOWER(short_description) LIKE LOWER('%#{query}%') OR\
31
+ LOWER(description) LIKE LOWER('%#{query}%')")}
32
+
33
+ def self.save_row_data(hsh)
34
+ # Initializing error hash for displaying all errors altogether
35
+ error_object = Kuppayam::Importer::ErrorHash.new
36
+
37
+ return error_object if hsh[:title].to_s.strip.blank?
38
+
39
+ offer = Dhatu::CareerOpportunity.find_by_title(hsh[:title].to_s.strip) || Dhatu::CareerOpportunity.new
40
+ offer.title = hsh[:title].to_s.strip
41
+ offer.sub_title = hsh[:sub_title].to_s.strip
42
+ offer.short_description = hsh[:short_description].to_s.strip
43
+ offer.description = hsh[:description].to_s.strip
44
+
45
+ offer.category = Dhatu::Category.find_by_name(hsh[:category].to_s.strip)
46
+
47
+ offer.status = hsh[:status].to_s.strip || PUBLISHED
48
+ offer.featured = hsh[:featured].to_s.strip == "true"
49
+ offer.priority = hsh[:priority].to_s.strip || 1
50
+
51
+ if offer.valid?
52
+ begin
53
+ offer.save!
54
+ rescue Exception => e
55
+ summary = "uncaught #{e} exception while handling connection: #{e.message}"
56
+ details = "Stack trace: #{e.backtrace.map {|l| " #{l}\n"}.join}"
57
+ error_object.errors << { summary: summary, details: details }
58
+ end
59
+ else
60
+ summary = "Error while saving offer: #{offer.title}"
61
+ details = "Error! #{offer.errors.full_messages.to_sentence}"
62
+ error_object.errors << { summary: summary, details: details }
63
+ end
64
+ return error_object
65
+ end
66
+
67
+ # ------------------
68
+ # Instance Methods
69
+ # ------------------
70
+
71
+ # Generic Methods
72
+ # ---------------
73
+ def to_param
74
+ "#{id}-#{title.parameterize[0..32]}"
75
+ end
76
+
77
+ def display_name
78
+ "#{title_was}"
79
+ end
80
+
81
+ # Permission Methods
82
+ # ------------------
83
+
84
+ def can_be_edited?
85
+ status?(:published) or status?(:unpublished)
86
+ end
87
+
88
+ def can_be_deleted?
89
+ status?(:removed)
90
+ end
91
+
92
+ end
@@ -1,7 +1,7 @@
1
1
  class Dhatu::Category < Dhatu::ApplicationRecord
2
2
 
3
3
  # Set Table Name
4
- self.table_name = "categories"
4
+ self.table_name = "dhatu_categories"
5
5
 
6
6
  # Including the State Machine Methods
7
7
  include Publishable
@@ -1,7 +1,7 @@
1
1
  class Dhatu::Event < Dhatu::ApplicationRecord
2
2
 
3
3
  # Set Table Name
4
- self.table_name = "events"
4
+ self.table_name = "dhatu_events"
5
5
 
6
6
  # Including the State Machine Methods
7
7
  include Publishable
@@ -0,0 +1,113 @@
1
+ class Dhatu::Manufacturer < ApplicationRecord
2
+
3
+ # Set Table Name
4
+ self.table_name = "dhatu_manufacturers"
5
+
6
+ # Validations
7
+ validates :name, presence: true, length: {minimum: 2, maximum: 128}
8
+
9
+ # Associations
10
+ has_one :logo, :as => :imageable, :dependent => :destroy, :class_name => "Image::LogoImage"
11
+
12
+ # Including the State Machine Methods
13
+ include Publishable
14
+
15
+ # ------------------
16
+ # Class Methods
17
+ # ------------------
18
+
19
+ scope :search, lambda {|query| where("LOWER(dhatu_manufacturers.name) LIKE LOWER('%#{query}%') OR\
20
+ LOWER(dhatu_manufacturers.description) LIKE LOWER('%#{query}%')")}
21
+
22
+ def self.save_row_data(hsh)
23
+ # Initializing error hash for displaying all errors altogether
24
+ error_object = Kuppayam::Importer::ErrorHash.new
25
+
26
+ return error_object if hsh[:name].to_s.strip.blank?
27
+
28
+ manufacturer = Manufacturer.find_by_name(hsh[:name].to_s.strip) || Manufacturer.new
29
+
30
+ manufacturer.name = hsh[:name].to_s.strip
31
+ manufacturer.description = hsh[:description].to_s.strip
32
+ manufacturer.remarks = hsh[:remarks].to_s.strip
33
+ manufacturer.website = hsh[:website].to_s.strip
34
+ manufacturer.status = hsh[:status].to_s.strip == "" ? PUBLISHED : hsh[:status].to_s.strip
35
+
36
+ manufacturer.featured = ["true", "t","1","yes","y"].include?(hsh[:featured].to_s.downcase.strip)
37
+ manufacturer.priority = hsh[:priority].to_s.strip || 1
38
+
39
+ ## Adding logo image
40
+ begin
41
+ image_path = Rails.root.join('db', 'data', 'images', 'manufacturers', "#{hsh[:logo].to_s.strip}")
42
+ if File.exists?(image_path)
43
+ manufacturer.build_logo
44
+ manufacturer.logo.image = File.open(image_path)
45
+ else
46
+ puts "Warning! Logo not found for #{manufacturer.name}. #{image_path} doesn't exists"
47
+ end
48
+ rescue => e
49
+ puts "Error during processing: #{$!}"
50
+ puts "Partner Organisation: #{manufacturer.name}, Image Path: #{image_path}".red
51
+ #puts "Backtrace:\n\t#{e.backtrace.join("\n\t")}"
52
+ end if hsh[:logo] && manufacturer.logo.blank?
53
+
54
+ if manufacturer.valid?
55
+ begin
56
+ manufacturer.save!
57
+ rescue Exception => e
58
+ summary = "uncaught #{e} exception while handling connection: #{e.message}"
59
+ details = "Stack trace: #{e.backtrace.map {|l| " #{l}\n"}.join}"
60
+ error_object.errors << { summary: summary, details: details }
61
+ end
62
+ else
63
+ summary = "Error while saving manufacturers: #{manufacturer.name}"
64
+ details = "Error! #{manufacturer.errors.full_messages.to_sentence}"
65
+ error_object.errors << { summary: summary, details: details }
66
+ end
67
+ return error_object
68
+ end
69
+
70
+ # Other Methods
71
+ # -------------
72
+
73
+ # * Return full name
74
+ # == Examples
75
+ # >>> partner_organisatioin.display_name
76
+ # => "Juma Al Majid"
77
+ def display_name
78
+ "#{name}"
79
+ end
80
+
81
+ def default_image_url(size="large")
82
+ "kuppayam/defaults/logo-#{size}.png"
83
+ end
84
+
85
+ # Image Configuration
86
+ # -------------------
87
+ def image_configuration
88
+ {
89
+ "Image::LogoImage" => {
90
+ max_upload_limit: 10485760,
91
+ min_upload_limit: 1024,
92
+ resolutions: [400, 400],
93
+ form_upload_image_label: "Upload a new Logo",
94
+ form_title: "Upload an Logo",
95
+ form_sub_title: "Please read the instructions below:",
96
+ form_instructions: [
97
+ "the filename should be in .jpg / .jpeg or .png format",
98
+ "the image resolutions should be <strong>400 x 400 Pixels</strong>",
99
+ "the file size should be greater than 100 Kb and or lesser than <strong>10 MB</strong>"
100
+ ]
101
+ }
102
+ }
103
+ end
104
+
105
+ def can_be_edited?
106
+ status?(:published) or status?(:unpublished)
107
+ end
108
+
109
+ def can_be_deleted?
110
+ status?(:removed)
111
+ end
112
+
113
+ end
@@ -4,7 +4,7 @@ class Dhatu::MetaTag < Dhatu::ApplicationRecord
4
4
  META_TYPES = ["Default", "Open Graph", "Twitter", "Facebook", "Other"]
5
5
 
6
6
  # Set Table Name
7
- self.table_name = "meta_tags"
7
+ self.table_name = "dhatu_meta_tags"
8
8
 
9
9
  # Including the State Machine Methods
10
10
  include Publishable
@@ -1,7 +1,7 @@
1
1
  class Dhatu::Offer < Dhatu::ApplicationRecord
2
2
 
3
3
  # Set Table Name
4
- self.table_name = "offers"
4
+ self.table_name = "dhatu_offers"
5
5
 
6
6
  # Including the State Machine Methods
7
7
  include Publishable
@@ -1,7 +1,7 @@
1
1
  class Dhatu::Page < Dhatu::ApplicationRecord
2
2
 
3
3
  # Set Table Name
4
- self.table_name = "pages"
4
+ self.table_name = "dhatu_pages"
5
5
 
6
6
  # Including the State Machine Methods
7
7
  include Publishable
@@ -1,7 +1,7 @@
1
1
  class Dhatu::PhotoAlbum < Dhatu::ApplicationRecord
2
2
 
3
3
  # Set Table Name
4
- self.table_name = "photo_albums"
4
+ self.table_name = "dhatu_photo_albums"
5
5
 
6
6
  # Including the State Machine Methods
7
7
  include Publishable
@@ -1,7 +1,7 @@
1
1
  class Dhatu::Price < Dhatu::ApplicationRecord
2
2
 
3
3
  # Set Table Name
4
- self.table_name = "prices"
4
+ self.table_name = "dhatu_prices"
5
5
 
6
6
  # Including the State Machine Methods
7
7
  include Publishable
@@ -0,0 +1,141 @@
1
+ class Dhatu::Product < Dhatu::ApplicationRecord
2
+
3
+ # Set Table Name
4
+ self.table_name = "dhatu_products"
5
+
6
+ # Including the State Machine Methods
7
+ include Publishable
8
+ include Featureable
9
+
10
+ # Callbacks
11
+ before_validation :update_top_category
12
+
13
+ # Validations
14
+ validates :title, presence: true, length: {minimum: 3, maximum: 250}
15
+ validates :sub_title, allow_blank: true, length: {minimum: 3, maximum: 250}
16
+ validate_string :short_description, mandatory: false, format: /.*/i
17
+ validates :ean_sku, allow_blank: true, length: {minimum: 3, maximum: 250}
18
+ validates :priority, numericality: true
19
+
20
+ # Associations
21
+ has_one :cover_image, :as => :imageable, :dependent => :destroy, :class_name => "Image::CoverImage"
22
+ has_many :gallery_images, :as => :imageable, :dependent => :destroy, :class_name => "Image::GalleryImage"
23
+ has_one :brochure, :as => :documentable, :dependent => :destroy, :class_name => "Document::Brochure"
24
+
25
+ belongs_to :manufacturer, :class_name => "Dhatu::Manufacturer"
26
+ belongs_to :category, :class_name => "Dhatu::Category", optional: true
27
+ belongs_to :top_category, class_name: "Dhatu::Category", optional: true
28
+
29
+ # Meta Tag Associations
30
+ has_one :og_image, :as => :imageable, :dependent => :destroy, :class_name => "Image::OgImage"
31
+ has_many :meta_tags, :as => :meta_taggable, :dependent => :destroy, :class_name => "Dhatu::MetaTag"
32
+
33
+ # ------------------
34
+ # Class Methods
35
+ # ------------------
36
+
37
+ scope :search, lambda {|query| joins(:manufacturer).where("LOWER(dhatu_products.title) LIKE LOWER('%#{query}%') OR\
38
+ LOWER(dhatu_products.sub_title) LIKE LOWER('%#{query}%') OR\
39
+ LOWER(dhatu_products.ean_sku) LIKE LOWER('%#{query}%') OR\
40
+ LOWER(dhatu_products.reference_number) LIKE LOWER('%#{query}%') OR\
41
+ LOWER(dhatu_manufacturers.name) LIKE LOWER('%#{query}%') OR\
42
+ LOWER(dhatu_manufacturers.description) LIKE LOWER('%#{query}%') OR\
43
+ LOWER(dhatu_products.short_description) LIKE LOWER('%#{query}%') OR\
44
+ LOWER(dhatu_products.description) LIKE LOWER('%#{query}%')")
45
+ }
46
+
47
+ scope :filter_by_category, lambda { |c| where("category_id = ?", (c.is_a? Dhatu::Category ? c.id : c)) }
48
+
49
+ scope :upcoming, lambda { where("created_at >= ?", Time.now) }
50
+ scope :past, lambda { where("created_at < ?", Time.now) }
51
+
52
+ def self.save_row_data(hsh)
53
+ # Initializing error hash for displaying all errors altogether
54
+ error_object = Kuppayam::Importer::ErrorHash.new
55
+
56
+ return error_object if hsh[:title].to_s.strip.blank?
57
+
58
+ product = Dhatu::Product.find_by_title(hsh[:title].to_s.strip) || Dhatu::Product.new
59
+ product.title = hsh[:title].to_s.strip
60
+ product.sub_title = hsh[:sub_title].to_s.strip
61
+
62
+ product.ean_sku = row[:ean_sku].to_s
63
+ product.reference_number = row[:reference_number]
64
+
65
+ product.manufacturer = Dhatu::Manufacturer.find_by_name(row[:manufacturer])
66
+ product.category = Dhatu::Category.find_by_name(row[:category])
67
+ product.top_category = product.category.top_category if product.category
68
+
69
+ product.short_description = hsh[:short_description].to_s.strip
70
+ product.description = hsh[:description].to_s.strip
71
+
72
+ product.price = hsh[:price].to_s.strip
73
+
74
+ product.status = hsh[:status].to_s.strip.blank? ? PUBLISHED : hsh[:status].to_s.strip
75
+ product.featured = ["true", "t","1","yes","y"].include?(hsh[:featured].to_s.downcase.strip)
76
+ product.priority = hsh[:priority].to_s.strip || 1
77
+
78
+ if product.valid?
79
+ begin
80
+ product.save!
81
+ rescue Exception => e
82
+ summary = "uncaught #{e} exception while handling connection: #{e.message}"
83
+ details = "Stack trace: #{e.backtrace.map {|l| " #{l}\n"}.join}"
84
+ error_object.errors << { summary: summary, details: details }
85
+ end
86
+ else
87
+ summary = "Error while saving product: #{product.title}"
88
+ details = "Error! #{product.errors.full_messages.to_sentence}"
89
+ error_object.errors << { summary: summary, details: details }
90
+ end
91
+ return error_object
92
+ end
93
+
94
+ # ------------------
95
+ # Instance Methods
96
+ # ------------------
97
+
98
+ # Generic Methods
99
+ # ---------------
100
+
101
+ def code
102
+ self.ean_sku
103
+ end
104
+
105
+ def display_name
106
+ "#{self.ean_sku_was} : #{self.title_was}"
107
+ end
108
+
109
+ def slug
110
+ self.title.parameterize[0..32]
111
+ end
112
+
113
+ def to_param
114
+ "#{id}-#{slug}"
115
+ end
116
+
117
+ # Permission Methods
118
+ # ------------------
119
+
120
+ def can_be_edited?
121
+ status?(:published) or status?(:unpublished)
122
+ end
123
+
124
+ def can_be_deleted?
125
+ return false if published? or unpublished?
126
+ return true
127
+ end
128
+
129
+ protected
130
+
131
+ def update_top_category
132
+ if self.category
133
+ if self.category.parent
134
+ self.top_category = self.category.parent
135
+ else
136
+ self.top_category = self.category
137
+ end
138
+ end
139
+ end
140
+
141
+ end
@@ -1,7 +1,7 @@
1
1
  class Dhatu::Project < Dhatu::ApplicationRecord
2
2
 
3
3
  # Set Table Name
4
- self.table_name = "projects"
4
+ self.table_name = "dhatu_projects"
5
5
 
6
6
  # Including the State Machine Methods
7
7
  include Publishable