caboose-rets 0.1.36 → 0.1.37
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/models/caboose_rets/agent.rb +29 -29
- data/app/models/caboose_rets/agent_meta.rb +1 -1
- data/app/models/caboose_rets/media.rb +1 -1
- data/app/models/caboose_rets/office.rb +32 -32
- data/app/models/caboose_rets/open_house.rb +10 -10
- data/app/models/caboose_rets/property.rb +143 -140
- data/app/models/caboose_rets/rets_importer.rb +103 -75
- data/app/models/caboose_rets/schema.rb +40 -38
- data/lib/caboose_rets/version.rb +1 -1
- data/lib/rets/base/core.rb +4 -0
- data/lib/rets/client.rb +1 -1
- data/lib/rets/http.rb +13 -3
- data/lib/tasks/caboose_rets.rake +26 -22
- metadata +2 -2
@@ -23,15 +23,17 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def self.get_config
|
26
|
-
rets_config = CabooseRets::RetsConfig.where("rets_url ILIKE ?","%mlsmatrix%").order('RANDOM()').first
|
27
26
|
@@config = {
|
28
|
-
'url' =>
|
29
|
-
'username' =>
|
30
|
-
'password' =>
|
27
|
+
'url' => nil, # URL to the RETS login
|
28
|
+
'username' => nil,
|
29
|
+
'password' => nil,
|
30
|
+
'temp_path' => nil,
|
31
|
+
'log_file' => nil,
|
32
|
+
'media_base_url' => nil
|
31
33
|
}
|
32
|
-
|
33
|
-
|
34
|
-
|
34
|
+
config = YAML::load(File.open("#{Rails.root}/config/rets_importer.yml"))
|
35
|
+
config = config[Rails.env]
|
36
|
+
config.each { |key,val| @@config[key] = val }
|
35
37
|
end
|
36
38
|
|
37
39
|
def self.client
|
@@ -48,11 +50,11 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
48
50
|
|
49
51
|
def self.meta(class_type)
|
50
52
|
case class_type
|
51
|
-
when 'Office' then Caboose::StdClass.new({ :search_type => 'Office' , :remote_key_field => '
|
52
|
-
when '
|
53
|
-
when 'OpenHouse' then Caboose::StdClass.new({ :search_type => 'OpenHouse' , :remote_key_field => '
|
54
|
-
when '
|
55
|
-
when '
|
53
|
+
when 'Office' then Caboose::StdClass.new({ :search_type => 'Office' , :remote_key_field => 'OfficeMlsId' , :local_key_field => 'lo_mls_id' , :local_table => 'rets_offices' , :date_modified_field => 'ModificationTimestamp'})
|
54
|
+
when 'Member' then Caboose::StdClass.new({ :search_type => 'Member' , :remote_key_field => 'MemberMlsId' , :local_key_field => 'mls_id' , :local_table => 'rets_agents' , :date_modified_field => 'ModificationTimestamp'})
|
55
|
+
when 'OpenHouse' then Caboose::StdClass.new({ :search_type => 'OpenHouse' , :remote_key_field => 'OpenHouseKey' , :local_key_field => 'matrix_unique_id' , :local_table => 'rets_open_houses' , :date_modified_field => 'ModificationTimestamp'})
|
56
|
+
when 'Property' then Caboose::StdClass.new({ :search_type => 'Property' , :remote_key_field => 'ListingId' , :local_key_field => 'mls_number' , :local_table => 'rets_properties' , :date_modified_field => 'ModificationTimestamp'})
|
57
|
+
when 'Media' then Caboose::StdClass.new({ :search_type => 'Media' , :remote_key_field => 'MediaObjectID' , :local_key_field => 'media_id' , :local_table => 'rets_media' , :date_modified_field => 'ModificationTimestamp' })
|
56
58
|
end
|
57
59
|
end
|
58
60
|
|
@@ -68,6 +70,7 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
68
70
|
:search_type => m.search_type,
|
69
71
|
:class => class_type,
|
70
72
|
:query => query,
|
73
|
+
# :limit => 3,
|
71
74
|
:timeout => -1
|
72
75
|
}
|
73
76
|
obj = nil
|
@@ -91,20 +94,22 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
91
94
|
|
92
95
|
def self.get_instance_with_id(class_type, data)
|
93
96
|
obj = nil
|
97
|
+
self.log "Getting instance of #{class_type}..."
|
94
98
|
m = case class_type
|
95
|
-
when '
|
99
|
+
when 'Property' then CabooseRets::Property
|
96
100
|
when 'OpenHouse' then CabooseRets::OpenHouse
|
97
|
-
when '
|
101
|
+
when 'Member' then CabooseRets::Agent
|
98
102
|
when 'Office' then CabooseRets::Office
|
99
|
-
when '
|
103
|
+
when 'Media' then CabooseRets::Media
|
100
104
|
end
|
101
105
|
obj = case class_type
|
102
|
-
when '
|
103
|
-
when 'OpenHouse' then m.where(:matrix_unique_id => data['
|
104
|
-
when '
|
105
|
-
when 'Office' then m.where(:
|
106
|
-
when '
|
106
|
+
when 'Property' then m.where(:mls_number => data['ListingId']).exists? ? m.where(:mls_number => data['ListingId']).first : m.create(:mls_number => data['ListingId'])
|
107
|
+
when 'OpenHouse' then m.where(:matrix_unique_id => data['OpenHouseKey']).exists? ? m.where(:matrix_unique_id => data['OpenHouseKey']).first : m.create(:matrix_unique_id => data['OpenHouseKey'])
|
108
|
+
when 'Member' then m.where(:mls_id => data['MemberMlsId']).exists? ? m.where(:mls_id => data['MemberMlsId']).first : m.create(:mls_id => data['MemberMlsId'])
|
109
|
+
when 'Office' then m.where(:lo_mls_id => data['OfficeMlsId']).exists? ? m.where(:lo_mls_id => data['OfficeMlsId']).first : m.create(:lo_mls_id => data['OfficeMlsId'])
|
110
|
+
when 'Media' then m.where(:media_id => data['MediaObjectID'] ).exists? ? m.where(:media_id => data['MediaObjectID'] ).first : m.create(:media_id => data['MediaObjectID'] )
|
107
111
|
end
|
112
|
+
self.log "Found matching object ID #{obj.id}"
|
108
113
|
return obj
|
109
114
|
end
|
110
115
|
|
@@ -113,31 +118,42 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
113
118
|
#=============================================================================
|
114
119
|
|
115
120
|
def self.update_after(date_modified, save_images = true)
|
116
|
-
self.
|
121
|
+
self.log "Updating after #{date_modified}"
|
122
|
+
self.delay(:priority => 10, :queue => 'rets').update_helper('Property' , date_modified, save_images)
|
117
123
|
self.delay(:priority => 10, :queue => 'rets').update_helper('Office' , date_modified, save_images)
|
118
|
-
self.delay(:priority => 10, :queue => 'rets').update_helper('
|
124
|
+
self.delay(:priority => 10, :queue => 'rets').update_helper('Member' , date_modified, save_images)
|
119
125
|
self.delay(:priority => 10, :queue => 'rets').update_helper('OpenHouse', date_modified, save_images)
|
120
126
|
end
|
121
127
|
|
122
|
-
def self.update_helper(class_type, date_modified, save_images = true)
|
128
|
+
def self.update_helper(class_type, date_modified, save_images = true)
|
129
|
+
self.log "In update helper for #{class_type}"
|
123
130
|
m = self.meta(class_type)
|
124
131
|
k = m.remote_key_field
|
125
132
|
d = date_modified.in_time_zone(CabooseRets::timezone).strftime("%FT%T")
|
133
|
+
|
134
|
+
statusquery = ""
|
135
|
+
case class_type
|
136
|
+
when 'Property' then statusquery = "MlsStatus=Active"
|
137
|
+
when 'Office' then statusquery = "OfficeStatus=Active"
|
138
|
+
when 'Member' then statusquery = "MemberStatus=Active"
|
139
|
+
when 'OpenHouse' then statusquery = "OpenHouseKeyNumeric=0+"
|
140
|
+
end
|
141
|
+
|
126
142
|
params = {
|
127
143
|
:search_type => m.search_type,
|
128
144
|
:class => class_type,
|
129
145
|
:select => [m.remote_key_field],
|
130
146
|
:querytype => 'DMQL2',
|
131
|
-
:query => "(#{m.date_modified_field}=#{d}+)",
|
147
|
+
:query => "(#{m.date_modified_field}=#{d}+)AND(#{statusquery})",
|
132
148
|
:standard_names_only => true,
|
133
149
|
:timeout => -1
|
134
150
|
}
|
135
151
|
self.log(params)
|
136
152
|
self.client.search(params) do |data|
|
137
153
|
case class_type
|
138
|
-
when '
|
154
|
+
when 'Property' then self.delay(:priority => 10, :queue => 'rets').import_properties(data[k], save_images)
|
139
155
|
when 'Office' then self.delay(:priority => 10, :queue => 'rets').import_office( data[k], save_images)
|
140
|
-
when '
|
156
|
+
when 'Member' then self.delay(:priority => 10, :queue => 'rets').import_agent( data[k], save_images)
|
141
157
|
when 'OpenHouse' then self.delay(:priority => 10, :queue => 'rets').import_open_house(data[k], save_images)
|
142
158
|
end
|
143
159
|
end
|
@@ -158,36 +174,33 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
158
174
|
# end
|
159
175
|
# end
|
160
176
|
|
161
|
-
def self.import_properties(
|
162
|
-
self.import('
|
163
|
-
p = CabooseRets::Property.where(:
|
164
|
-
# p = CabooseRets::Property.create(:matrix_unique_id => mui.to_s) if p.nil?
|
177
|
+
def self.import_properties(mls_id, save_images = true)
|
178
|
+
self.import('Property', "(ListingId=#{mls_id})")
|
179
|
+
p = CabooseRets::Property.where(:mls_number => mls_id.to_s).first
|
165
180
|
if p != nil
|
166
|
-
self.download_property_images(p)
|
181
|
+
self.download_property_images(p) if save_images
|
167
182
|
self.update_coords(p)
|
168
183
|
else
|
169
|
-
self.log("No Property associated with #{
|
184
|
+
self.log("No Property associated with #{mls_id}")
|
170
185
|
end
|
171
186
|
end
|
172
187
|
|
173
|
-
def self.import_office(
|
174
|
-
self.import('Office', "(
|
175
|
-
office = CabooseRets::Office.where(:matrix_unique_id =>
|
176
|
-
# self.download_office_image(office) if save_images == true
|
188
|
+
def self.import_office(mls_id, save_images = true)
|
189
|
+
self.import('Office', "(OfficeMlsId=#{mls_id})")
|
190
|
+
office = CabooseRets::Office.where(:matrix_unique_id => mls_id.to_s).first
|
177
191
|
end
|
178
192
|
|
179
|
-
def self.import_agent(
|
180
|
-
self.import('
|
181
|
-
a = CabooseRets::Agent.where(:
|
182
|
-
# self.download_agent_image(a) #if save_images == true
|
193
|
+
def self.import_agent(mls_id, save_images = true)
|
194
|
+
self.import('Member', "(MemberMlsId=#{mls_id})")
|
195
|
+
a = CabooseRets::Agent.where(:mls_id => mls_id.to_s).first
|
183
196
|
end
|
184
197
|
|
185
|
-
def self.import_open_house(
|
186
|
-
self.import('OpenHouse', "(
|
198
|
+
def self.import_open_house(oh_id, save_images = true)
|
199
|
+
self.import('OpenHouse', "(OpenHouseKey=#{oh_id})")
|
187
200
|
end
|
188
201
|
|
189
202
|
def self.import_media(id, save_images = true)
|
190
|
-
self.import('
|
203
|
+
self.import('Media', "((MediaObjectID=#{id}+),(MediaObjectID=#{id}-))")
|
191
204
|
end
|
192
205
|
|
193
206
|
#=============================================================================
|
@@ -233,11 +246,13 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
233
246
|
# end
|
234
247
|
|
235
248
|
def self.download_property_images(p)
|
236
|
-
self.log "Saving images for #{p.
|
249
|
+
self.log "Saving images for #{p.mls_number}..."
|
237
250
|
begin
|
238
|
-
|
239
|
-
|
240
|
-
|
251
|
+
self.client.get_object(:resource => 'Property', :type => 'Photo', :location=> false, :id => "#{p.matrix_unique_id}:*") do |headers, content|
|
252
|
+
|
253
|
+
self.log "headers: #{headers.to_s}"
|
254
|
+
|
255
|
+
m = CabooseRets::Media.where(:media_mui => headers['content-id'], :media_order => headers['orderhint']).first
|
241
256
|
m = CabooseRets::Media.new if m.nil?
|
242
257
|
|
243
258
|
tmp_path = "#{Rails.root}/tmp/rets_media_#{headers['content-id']}:#{headers['object-id']}.jpeg"
|
@@ -249,8 +264,8 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
249
264
|
|
250
265
|
# Parse downloaded content
|
251
266
|
m.media_mui = headers['content-id']
|
252
|
-
m.media_order = headers['
|
253
|
-
|
267
|
+
m.media_order = headers['orderhint']
|
268
|
+
# m.media_remarks = headers['ShortDescription']
|
254
269
|
m.media_type = 'Photo'
|
255
270
|
|
256
271
|
cm = Caboose::Media.new
|
@@ -266,26 +281,26 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
266
281
|
# Remove temporary file
|
267
282
|
`rm #{tmp_path}`
|
268
283
|
|
269
|
-
self.log("Image #{headers['content-id']}
|
284
|
+
self.log("Image rets_media_#{headers['content-id']}_#{headers['object-id']} saved")
|
270
285
|
end
|
271
286
|
rescue RETS::APIError => err
|
272
|
-
self.log "No image for #{p.
|
287
|
+
self.log "No image for #{p.mls_number}."
|
273
288
|
self.log err
|
274
289
|
end
|
275
290
|
end
|
276
291
|
|
277
292
|
def self.download_agent_image(agent)
|
278
|
-
self.log "Saving image for #{agent.first_name} #{agent.last_name}..."
|
279
|
-
begin
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
rescue RETS::APIError => err
|
286
|
-
|
287
|
-
|
288
|
-
end
|
293
|
+
# self.log "Saving image for #{agent.first_name} #{agent.last_name}..."
|
294
|
+
# begin
|
295
|
+
# self.client.get_object(:resource => :Member, :type => :Photo, :location => true, :id => property.list_agent_mls_id) do |headers, content|
|
296
|
+
# agent.verify_meta_exists
|
297
|
+
# agent.meta.image_location = headers['location']
|
298
|
+
# agent.meta.save
|
299
|
+
# end
|
300
|
+
# rescue RETS::APIError => err
|
301
|
+
# self.log "No image for #{agent.first_name} #{agent.last_name}."
|
302
|
+
# self.log err
|
303
|
+
# end
|
289
304
|
end
|
290
305
|
|
291
306
|
def self.download_office_image(office)
|
@@ -311,16 +326,16 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
311
326
|
model = CabooseRets::Property
|
312
327
|
i = 0
|
313
328
|
self.log "Updating coords properties..."
|
314
|
-
model.where(:latitude => nil).reorder(:
|
329
|
+
model.where(:latitude => nil).reorder(:mls_number).each do |p1|
|
315
330
|
self.delay(:priority => 10, :queue => 'rets').update_coords(p1)
|
316
331
|
end
|
317
332
|
return
|
318
333
|
end
|
319
334
|
|
320
|
-
self.log "Getting coords for
|
335
|
+
self.log "Getting coords for MLS # #{p.mls_number}..."
|
321
336
|
coords = self.coords_from_address(CGI::escape "#{p.street_number} #{p.street_name}, #{p.city}, #{p.state_or_province} #{p.postal_code}")
|
322
337
|
if coords.nil? || coords == false
|
323
|
-
self.log "Can't set coords for
|
338
|
+
self.log "Can't set coords for MLS # #{p.mls_number}..."
|
324
339
|
return
|
325
340
|
end
|
326
341
|
|
@@ -330,9 +345,8 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
330
345
|
end
|
331
346
|
|
332
347
|
def self.coords_from_address(address)
|
333
|
-
#return false
|
334
348
|
begin
|
335
|
-
uri = "https://maps.googleapis.com/maps/api/geocode/json?address=#{address}
|
349
|
+
uri = "https://maps.googleapis.com/maps/api/geocode/json?key=AIzaSyBD34Da5DhRH5wkq3sROsE7-jv90-f1v6o&address=#{address}"
|
336
350
|
uri.gsub!(" ", "+")
|
337
351
|
resp = HTTParty.get(uri)
|
338
352
|
json = JSON.parse(resp.body)
|
@@ -352,13 +366,13 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
352
366
|
self.log('purging')
|
353
367
|
self.purge_properties
|
354
368
|
self.purge_offices
|
355
|
-
|
369
|
+
self.purge_agents
|
356
370
|
self.purge_open_houses
|
357
371
|
end
|
358
372
|
|
359
|
-
def self.purge_properties() self.delay(:priority => 10, :queue => 'rets').purge_helper('
|
373
|
+
def self.purge_properties() self.delay(:priority => 10, :queue => 'rets').purge_helper('Property', '2012-01-01') end
|
360
374
|
def self.purge_offices() self.delay(:priority => 10, :queue => 'rets').purge_helper('Office', '2012-01-01') end
|
361
|
-
def self.purge_agents() self.delay(:priority => 10, :queue => 'rets').purge_helper('
|
375
|
+
def self.purge_agents() self.delay(:priority => 10, :queue => 'rets').purge_helper('Member', '2012-01-01') end
|
362
376
|
def self.purge_open_houses() self.delay(:priority => 10, :queue => 'rets').purge_helper('OpenHouse', '2012-01-01') end
|
363
377
|
|
364
378
|
|
@@ -370,10 +384,20 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
370
384
|
|
371
385
|
# Get the total number of records
|
372
386
|
self.log("- Getting total number of records for #{class_type}...")
|
387
|
+
|
388
|
+
statusquery = ""
|
389
|
+
|
390
|
+
case class_type
|
391
|
+
when 'Property' then statusquery = "MlsStatus=Active"
|
392
|
+
when 'Office' then statusquery = "OfficeStatus=Active"
|
393
|
+
when 'Member' then statusquery = "MemberStatus=Active"
|
394
|
+
when 'OpenHouse' then statusquery = "OpenHouseKeyNumeric=0+"
|
395
|
+
end
|
396
|
+
|
373
397
|
params = {
|
374
398
|
:search_type => m.search_type,
|
375
399
|
:class => class_type,
|
376
|
-
:query => "(#{m.date_modified_field}=#{date_modified}T00:00:01+)",
|
400
|
+
:query => "(#{m.date_modified_field}=#{date_modified}T00:00:01+)AND(#{statusquery})",
|
377
401
|
:standard_names_only => true,
|
378
402
|
:timeout => -1
|
379
403
|
}
|
@@ -394,6 +418,8 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
394
418
|
# Only do stuff if we got a real response from the server
|
395
419
|
if ids.count > 0
|
396
420
|
|
421
|
+
puts "Remote IDs found: #{ids.to_s}"
|
422
|
+
|
397
423
|
# Delete any records in the local database that shouldn't be there
|
398
424
|
self.log("- Finding #{class_type} records in the local database that are not in the remote database...")
|
399
425
|
t = m.local_table
|
@@ -401,6 +427,7 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
401
427
|
query = "select distinct #{k} from #{t}"
|
402
428
|
rows = ActiveRecord::Base.connection.select_all(ActiveRecord::Base.send(:sanitize_sql_array, query))
|
403
429
|
local_ids = rows.collect{ |row| row[k] }
|
430
|
+
puts "Local IDs found: #{local_ids.to_s}"
|
404
431
|
ids_to_remove = local_ids - ids
|
405
432
|
self.log("- Found #{ids_to_remove.count} #{class_type} records in the local database that are not in the remote database.")
|
406
433
|
self.log("- Deleting #{class_type} records in the local database that shouldn't be there...")
|
@@ -412,15 +439,16 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
412
439
|
query = "select distinct #{k} from #{t}"
|
413
440
|
rows = ActiveRecord::Base.connection.select_all(ActiveRecord::Base.send(:sanitize_sql_array, query))
|
414
441
|
local_ids = rows.collect{ |row| row[k] }
|
442
|
+
puts "Local IDs found: #{local_ids.to_s}"
|
415
443
|
ids_to_add = ids - local_ids
|
416
444
|
ids_to_add = ids_to_add.sort.reverse
|
417
445
|
self.log("- Found #{ids_to_add.count} #{class_type} records in the remote database that we need to add to the local database.")
|
418
446
|
ids_to_add.each do |id|
|
419
447
|
self.log("- Importing #{id}...")
|
420
448
|
case class_type
|
421
|
-
when "
|
449
|
+
when "Property" then self.delay(:priority => 10, :queue => 'rets').import_properties(id, false)
|
422
450
|
when "Office" then self.delay(:priority => 10, :queue => 'rets').import_office(id, false)
|
423
|
-
when "
|
451
|
+
when "Member" then self.delay(:priority => 10, :queue => 'rets').import_agent(id, false)
|
424
452
|
when "OpenHouse" then self.delay(:priority => 10, :queue => 'rets').import_open_house(id, false)
|
425
453
|
end
|
426
454
|
end
|
@@ -465,9 +493,9 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
465
493
|
ids_to_add.each do |id|
|
466
494
|
self.log("Importing #{id}...")
|
467
495
|
case class_type
|
468
|
-
when "
|
496
|
+
when "Property" then self.delay(:priority => 10, :queue => 'rets').import_properties(id, false)
|
469
497
|
when "Office" then self.delay(:priority => 10, :queue => 'rets').import_office(id, false)
|
470
|
-
when "
|
498
|
+
when "Member" then self.delay(:priority => 10, :queue => 'rets').import_agent(id, false)
|
471
499
|
when "OpenHouse" then self.delay(:priority => 10, :queue => 'rets').import_open_house(id, false)
|
472
500
|
end
|
473
501
|
end
|
@@ -337,50 +337,52 @@ class CabooseRets::Schema < Caboose::Utilities::Schema
|
|
337
337
|
}
|
338
338
|
end
|
339
339
|
|
340
|
-
def self.load_data
|
340
|
+
def self.load_data
|
341
341
|
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
342
|
+
# bt = Caboose::BlockType.where(:name => 'layout_rets').first
|
343
|
+
# if bt.nil?
|
344
|
+
# cat = Caboose::BlockTypeCategory.where(:name => 'Layouts').first
|
345
|
+
# bt = Caboose::BlockType.create(:name => 'layout_rets', :description => 'RETS Layout', :block_type_category_id => cat.id, :allow_child_blocks => false, :field_type => 'block')
|
346
|
+
# end
|
347
347
|
|
348
|
-
|
349
|
-
home_page = Caboose::Page.index_page(site.id)
|
348
|
+
# Caboose::Site.where(:use_rets => true).reorder(:id).all.each do |site|
|
349
|
+
# home_page = Caboose::Page.index_page(site.id)
|
350
350
|
|
351
|
-
# Check that the rets layout is applied to the site
|
352
|
-
bt.add_to_site(site.id)
|
351
|
+
# # Check that the rets layout is applied to the site
|
352
|
+
# bt.add_to_site(site.id)
|
353
353
|
|
354
|
-
# Verify that the site has all the rets pages created and each page has the rets layout
|
355
|
-
rets_page = Caboose::Page.where(:site_id => site.id, :alias => 'rets').first
|
356
|
-
rets_page = Caboose::Page.create(:site_id => site.id, :alias => 'rets', :slug => 'rets', :uri => 'rets', :title => 'RETS', :parent_id => home_page.id) if rets_page.nil?
|
354
|
+
# # Verify that the site has all the rets pages created and each page has the rets layout
|
355
|
+
# rets_page = Caboose::Page.where(:site_id => site.id, :alias => 'rets').first
|
356
|
+
# rets_page = Caboose::Page.create(:site_id => site.id, :alias => 'rets', :slug => 'rets', :uri => 'rets', :title => 'RETS', :parent_id => home_page.id) if rets_page.nil?
|
357
357
|
|
358
|
-
pages = []
|
359
|
-
if !Caboose::Page.where(:site_id => site.id, :alias => 'property').exists?
|
360
|
-
|
361
|
-
end
|
362
|
-
if !Caboose::Page.where(:site_id => site.id, :alias => 'open-houses' ).exists?
|
363
|
-
|
364
|
-
end
|
365
|
-
if !Caboose::Page.where(:site_id => site.id, :alias => 'agents' ).exists?
|
366
|
-
|
367
|
-
end
|
368
|
-
if !Caboose::Page.where(:site_id => site.id, :alias => 'saved-searches' ).exists?
|
369
|
-
|
370
|
-
end
|
371
|
-
if !Caboose::Page.where(:site_id => site.id, :alias => 'saved-properties' ).exists?
|
372
|
-
|
373
|
-
end
|
358
|
+
# pages = []
|
359
|
+
# if !Caboose::Page.where(:site_id => site.id, :alias => 'property').exists?
|
360
|
+
# then pages << Caboose::Page.create(:site_id => site.id, :slug => 'properties' , :alias => 'property' , :uri => 'property' , :title => 'Properties' , :parent_id => rets_page.id)
|
361
|
+
# end
|
362
|
+
# if !Caboose::Page.where(:site_id => site.id, :alias => 'open-houses' ).exists?
|
363
|
+
# then pages << Caboose::Page.create(:site_id => site.id, :slug => 'open-houses' , :alias => 'open-houses' , :uri => 'open-houses' , :title => 'Open Houses' , :parent_id => rets_page.id)
|
364
|
+
# end
|
365
|
+
# if !Caboose::Page.where(:site_id => site.id, :alias => 'agents' ).exists?
|
366
|
+
# then pages << Caboose::Page.create(:site_id => site.id, :slug => 'agents' , :alias => 'agents' , :uri => 'agents' , :title => 'Agents' , :parent_id => rets_page.id)
|
367
|
+
# end
|
368
|
+
# if !Caboose::Page.where(:site_id => site.id, :alias => 'saved-searches' ).exists?
|
369
|
+
# then pages << Caboose::Page.create(:site_id => site.id, :slug => 'saved-searches' , :alias => 'saved-searches' , :uri => 'saved-searches' , :title => 'Saved Searches' , :parent_id => rets_page.id)
|
370
|
+
# end
|
371
|
+
# if !Caboose::Page.where(:site_id => site.id, :alias => 'saved-properties' ).exists?
|
372
|
+
# then pages << Caboose::Page.create(:site_id => site.id, :slug => 'saved-properties' , :alias => 'saved-properties' , :uri => 'saved-properties' , :title => 'Saved Properties' , :parent_id => rets_page.id)
|
373
|
+
# end
|
374
374
|
|
375
|
-
|
376
|
-
|
377
|
-
|
375
|
+
# pages.each do |p|
|
376
|
+
# Caboose::Block.where(:page_id => p.id).destroy_all
|
377
|
+
# Caboose::Block.create(:page_id => p.id, :block_type_id => bt.id, :name => bt.name)
|
378
378
|
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
end
|
379
|
+
# viewers = Caboose::PagePermission.where(:page_id => home_page.id, :action => 'view').pluck(:role_id)
|
380
|
+
# editors = Caboose::PagePermission.where(:page_id => home_page.id, :action => 'edit').pluck(:role_id)
|
381
|
+
# Caboose::Page.update_authorized_for_action(p.id, 'view', viewers)
|
382
|
+
# Caboose::Page.update_authorized_for_action(p.id, 'edit', editors)
|
383
|
+
# end
|
384
|
+
# end
|
385
385
|
end
|
386
|
+
|
387
|
+
|
386
388
|
end
|