caboose-rets 0.0.79 → 0.0.80
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/app/controllers/caboose_rets/land_controller.rb +1 -0
- data/app/controllers/caboose_rets/multi_family_controller.rb +1 -0
- data/app/controllers/caboose_rets/residential_controller.rb +2 -1
- data/app/models/caboose_rets/agent.rb +2 -2
- data/app/models/caboose_rets/open_house.rb +2 -0
- data/app/models/caboose_rets/rets_importer.rb +47 -21
- data/lib/caboose-rets.rb +3 -0
- data/lib/caboose_rets/version.rb +1 -1
- metadata +1 -2
- data/app/models/caboose_rets/#Untitled-1# +0 -6
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NTgwODhiYTYyYjBkZjdmNDk3ZTJmYmMxOWU3MDViOTljZDM5Zjk3ZA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YjM5YmRhNmFhYzY5ZjQ0YWJhZjRmNjVmZGM4NmJmZTc1M2UyNjdhZQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MzlhOWY2ZDQ0NTY1NTZmNWZlYmQ2OTBiYTM2YTEwYTM5MzY5YTA2NGZlMzkz
|
10
|
+
ZGQxMWNjNDc4NmExNjE4NDVjZGRmMDE0ZDM4ZDQ5ZDI2M2Y5MGMyNzUwMjll
|
11
|
+
ZDk4MGRlMTY3N2I1OTg0MTU2OTE0M2NiZjZjY2NiYjgxOTk4MmQ=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ODlhYjA2Yjg1NDhmNTc0ZTU3OWUwYzE4MTU5ODQxOGY0YTFhOWZiZmY0Mjc2
|
14
|
+
NmNhYjI3YWQ1YThhNGMzZDg1ZjM4NjE0ZDIyMWNjOWE1ZGQ2NDM5ZWZiZDZj
|
15
|
+
ZjdiZDdkOGQwNTY4OTQzZmVhMjQzZjdlNjFmZWQ0MDE3ZWM2Mzc=
|
@@ -80,6 +80,7 @@ module CabooseRets
|
|
80
80
|
@saved = logged_in? && SavedProperty.where(:user_id => logged_in_user.id, :mls_acct => params[:mls_acct]).exists?
|
81
81
|
if @property.nil?
|
82
82
|
@mls_acct = params[:mls_acct]
|
83
|
+
CabooseRets::RetsImporter.delay.import_property(@mls_acct.to_i)
|
83
84
|
render 'land/not_exists'
|
84
85
|
return
|
85
86
|
end
|
@@ -61,6 +61,7 @@ module CabooseRets
|
|
61
61
|
@saved = logged_in? && SavedProperty.where(:user_id => logged_in_user.id, :mls_acct => params[:mls_acct]).exists?
|
62
62
|
if @property.nil?
|
63
63
|
@mls_acct = params[:mls_acct]
|
64
|
+
CabooseRets::RetsImporter.delay.import_property(@mls_acct.to_i)
|
64
65
|
render 'multi_family/not_exists'
|
65
66
|
return
|
66
67
|
end
|
@@ -74,7 +74,8 @@ module CabooseRets
|
|
74
74
|
@agent = Agent.where(:la_code => @property.la_code).first
|
75
75
|
end
|
76
76
|
if @property.nil?
|
77
|
-
@mls_acct = params[:mls_acct]
|
77
|
+
@mls_acct = params[:mls_acct]
|
78
|
+
CabooseRets::RetsImporter.delay.import_property(@mls_acct.to_i)
|
78
79
|
render 'residential/residential_not_exists'
|
79
80
|
return
|
80
81
|
end
|
@@ -2,8 +2,7 @@
|
|
2
2
|
class CabooseRets::Agent < ActiveRecord::Base
|
3
3
|
self.table_name = "rets_agents"
|
4
4
|
has_many :commercial_properties
|
5
|
-
has_many :residential_properties
|
6
|
-
# attr_accessible :title, :body
|
5
|
+
has_many :residential_properties
|
7
6
|
has_attached_file :image,
|
8
7
|
:path => 'rets/agents/:la_code_:style.:extension',
|
9
8
|
:styles => {
|
@@ -11,6 +10,7 @@ class CabooseRets::Agent < ActiveRecord::Base
|
|
11
10
|
:large => '200x300>'
|
12
11
|
}
|
13
12
|
do_not_validate_attachment_file_type :image
|
13
|
+
attr_accessible :id, :la_code
|
14
14
|
after_initialize :fix_name
|
15
15
|
|
16
16
|
def assistants
|
@@ -2,6 +2,8 @@
|
|
2
2
|
class CabooseRets::OpenHouse < ActiveRecord::Base
|
3
3
|
self.table_name = "rets_open_houses"
|
4
4
|
|
5
|
+
attr_accesible :id
|
6
|
+
|
5
7
|
def property
|
6
8
|
models = [CabooseRets::ResidentialProperty, CabooseRets::CommercialProperty, CabooseRets::LandProperty, CabooseRets::MultiFamilyProperty]
|
7
9
|
models.each do |model|
|
@@ -68,7 +68,7 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
68
68
|
|
69
69
|
def self.import(class_type, query)
|
70
70
|
m = self.meta(class_type)
|
71
|
-
self.log("Importing #{m.search_type}:#{class_type} with query #{query}...")
|
71
|
+
#self.log("Importing #{m.search_type}:#{class_type} with query #{query}...")
|
72
72
|
self.get_config if @@config.nil? || @@config['url'].nil?
|
73
73
|
params = {
|
74
74
|
:search_type => m.search_type,
|
@@ -126,23 +126,24 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
126
126
|
#=============================================================================
|
127
127
|
|
128
128
|
def self.update_after(date_modified, save_images = true)
|
129
|
-
self.update_helper('RES', date_modified, save_images)
|
130
|
-
self.update_helper('COM', date_modified, save_images)
|
131
|
-
self.update_helper('LND', date_modified, save_images)
|
132
|
-
self.update_helper('MUL', date_modified, save_images)
|
133
|
-
self.update_helper('OFF', date_modified, save_images)
|
134
|
-
self.update_helper('AGT', date_modified, save_images)
|
135
|
-
self.update_helper('OPH', date_modified, save_images)
|
129
|
+
self.delay.update_helper('RES', date_modified, save_images)
|
130
|
+
self.delay.update_helper('COM', date_modified, save_images)
|
131
|
+
self.delay.update_helper('LND', date_modified, save_images)
|
132
|
+
self.delay.update_helper('MUL', date_modified, save_images)
|
133
|
+
self.delay.update_helper('OFF', date_modified, save_images)
|
134
|
+
self.delay.update_helper('AGT', date_modified, save_images)
|
135
|
+
self.delay.update_helper('OPH', date_modified, save_images)
|
136
136
|
end
|
137
137
|
|
138
138
|
def self.update_helper(class_type, date_modified, save_images = true)
|
139
139
|
m = self.meta(class_type)
|
140
|
-
k = m.remote_key_field
|
140
|
+
k = m.remote_key_field
|
141
|
+
d = date_modified.in_time_zone(CabooseRets::timezone).strftime("%FT%T")
|
141
142
|
params = {
|
142
143
|
:search_type => m.search_type,
|
143
144
|
:class => class_type,
|
144
145
|
:select => [m.remote_key_field],
|
145
|
-
:query => "(#{m.date_modified_field}=#{
|
146
|
+
:query => "(#{m.date_modified_field}=#{d}+)",
|
146
147
|
:standard_names_only => true,
|
147
148
|
:timeout => -1
|
148
149
|
}
|
@@ -478,8 +479,15 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
478
479
|
# Logging
|
479
480
|
#=============================================================================
|
480
481
|
|
481
|
-
def self.log(msg)
|
482
|
+
def self.log(msg)
|
483
|
+
puts "[rets_importer] #{msg}"
|
484
|
+
#Rails.logger.info("[rets_importer] #{msg}")
|
485
|
+
end
|
486
|
+
|
487
|
+
def self.log2(msg)
|
488
|
+
puts "======================================================================"
|
482
489
|
puts "[rets_importer] #{msg}"
|
490
|
+
puts "======================================================================"
|
483
491
|
#Rails.logger.info("[rets_importer] #{msg}")
|
484
492
|
end
|
485
493
|
|
@@ -488,7 +496,12 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
488
496
|
#=============================================================================
|
489
497
|
|
490
498
|
def self.update_rets
|
491
|
-
|
499
|
+
self.log2("Updating rets...")
|
500
|
+
if self.task_is_locked
|
501
|
+
self.log2("Task is locked, aborting.")
|
502
|
+
return
|
503
|
+
end
|
504
|
+
self.log2("Locking task...")
|
492
505
|
task_started = self.lock_task
|
493
506
|
|
494
507
|
begin
|
@@ -499,17 +512,30 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
499
512
|
# Keep this in here to make sure all updates are caught
|
500
513
|
#overlap = 1.month
|
501
514
|
end
|
515
|
+
|
516
|
+
self.log2("Updating after #{self.last_updated.strftime("%FT%T%:z")}...")
|
502
517
|
self.update_after(self.last_updated - overlap)
|
518
|
+
|
519
|
+
self.log2("Saving the timestamp for when we updated...")
|
503
520
|
self.save_last_updated(task_started)
|
521
|
+
|
522
|
+
self.log2("Unlocking the task...")
|
504
523
|
self.unlock_task
|
505
|
-
rescue
|
524
|
+
rescue Exception => err
|
525
|
+
puts err
|
506
526
|
raise
|
507
527
|
ensure
|
528
|
+
self.log2("Unlocking task if last updated...")
|
508
529
|
self.unlock_task_if_last_updated(task_started)
|
509
530
|
end
|
510
531
|
|
511
532
|
# Start the same update process in five minutes
|
512
|
-
self.
|
533
|
+
self.log2("Adding the update rets task for 5 minutes from now...")
|
534
|
+
q = "handler like '%update_rets%'"
|
535
|
+
count = Delayed::Job.where(q).count
|
536
|
+
if count == 0 || (count == 1 && Delayed::Job.where(q).first.locked_at)
|
537
|
+
self.delay(:run_at => 5.minutes.from_now).update_rets
|
538
|
+
end
|
513
539
|
end
|
514
540
|
|
515
541
|
def self.last_updated
|
@@ -529,14 +555,14 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
529
555
|
end
|
530
556
|
|
531
557
|
def self.save_last_updated(d)
|
532
|
-
s = Caboose::Setting.where(:name => 'rets_last_updated').first
|
533
|
-
s.value = d.strftime(
|
558
|
+
s = Caboose::Setting.where(:name => 'rets_last_updated').first
|
559
|
+
s.value = d.in_time_zone(CabooseRets::timezone).strftime("%FT%T%:z")
|
534
560
|
s.save
|
535
561
|
end
|
536
562
|
|
537
563
|
def self.save_last_purged(d)
|
538
564
|
s = Caboose::Setting.where(:name => 'rets_last_purged').first
|
539
|
-
s.value = d.strftime(
|
565
|
+
s.value = d.in_time_zone(CabooseRets::timezone).strftime("%FT%T%:z")
|
540
566
|
s.save
|
541
567
|
end
|
542
568
|
|
@@ -544,9 +570,9 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
544
570
|
return Caboose::Setting.exists?(:name => 'rets_update_running')
|
545
571
|
end
|
546
572
|
|
547
|
-
def self.lock_task
|
548
|
-
d = DateTime.now.utc
|
549
|
-
Caboose::Setting.create(:name => 'rets_update_running', :value => d.strftime(
|
573
|
+
def self.lock_task
|
574
|
+
d = DateTime.now.utc.in_time_zone(CabooseRets::timezone)
|
575
|
+
Caboose::Setting.create(:name => 'rets_update_running', :value => d.strftime("%FT%T%:z"))
|
550
576
|
return d
|
551
577
|
end
|
552
578
|
|
@@ -556,7 +582,7 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
556
582
|
|
557
583
|
def self.unlock_task_if_last_updated(d)
|
558
584
|
setting = Caboose::Setting.where(:name => 'rets_update_running').first
|
559
|
-
self.unlock_task if setting && d.strftime(
|
585
|
+
self.unlock_task if setting && d.in_time_zone.strftime("%FT%T%:z") == setting.value
|
560
586
|
end
|
561
587
|
|
562
588
|
end
|
data/lib/caboose-rets.rb
CHANGED
data/lib/caboose_rets/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: caboose-rets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.80
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Barry
|
@@ -49,7 +49,6 @@ files:
|
|
49
49
|
- app/controllers/caboose_rets/saved_properties_controller.rb
|
50
50
|
- app/controllers/caboose_rets/saved_searches_controller.rb
|
51
51
|
- app/helpers/caboose_rets/application_helper.rb
|
52
|
-
- app/models/caboose_rets/#Untitled-1#
|
53
52
|
- app/models/caboose_rets/agent.rb
|
54
53
|
- app/models/caboose_rets/commercial_property.rb
|
55
54
|
- app/models/caboose_rets/land_property.rb
|