caboose-rets 0.1.36 → 0.1.37
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.
- 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
|