caboose-rets 0.0.47 → 0.0.48

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MDkwYmI0ZDhhZTQzOGJiOTBiMzU0ZDk4M2UyZWI0ODc1MTI0NWQ4Mw==
4
+ YzhkZmYzZTRlOTVlYTVmZmM4M2Y0ZmY5YWQzNzE1YzAzYmQ0N2NkOQ==
5
5
  data.tar.gz: !binary |-
6
- YmY0NTEwZjhiMDRkM2Q3N2ZlNzZlMjExMWY5YzFlZjFjMzlhNDljNA==
6
+ ODM3ZmU5ZjRlZmUwNTNkMzQzZTE2NjJhNWFlYzA1MWYzOGQwOWMxNA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- OTM2Mzk4ZDY0OWNjMGVlNzc3N2M3NGJmNmI3OWM5ZTZlMjc4YTMwOGEyYzA0
10
- YWY1ODJhZmFhYTRiZWIxNDc1ZDUzODVjMmJmOTdjNjgwMGIyNmU5ZDIzMmVi
11
- ZmUyYTQ4MmI1ZjYxM2RkNTA2NjMzMzE0MTFmMDg1MDVmZjU4ZGM=
9
+ N2E1ZDQyZTA0NzI1YzA3OTUyNjcyYWFkMjhjNTNjYTEyZjQ2MzFkMTAzNTRl
10
+ NTQ2MTM3ZGRkNTU4MGI2YTU3ODk4NGE0ZDQ2YmExZWEwMWZhYjE5YmNiZjMy
11
+ Yzc5NjYzMzE5OTM2NDc5OWFjY2FiMDAzMjcwODc5MjBkNzlmZjI=
12
12
  data.tar.gz: !binary |-
13
- ZDNlNzRmZmUwNTQxMGFhOTA4MmQxZWRiZmY4NWI0NTFhZDdhYWIzYzQ3MzUy
14
- YTA2ZmUwNWRiOWY1ZWYwMjQ0ODEwMGEwYzRmNDA3YjMwYzAxNGRmOGNjNDI3
15
- ZDZiZDhiMzdhMzI2YWU4YzI5NDNhZTJjNDE5ZjQxNDZmNzI2YjQ=
13
+ ZWM3NmEyNDliYmJiZmUzYzIwODU1OWZlNDQ1NjMyMWU1NDc4NGExZTQ4NDVm
14
+ NDIzNDM5MDQ1MjYwMTY1ODgwMTEzNmM5YjJlNDZlZTk3ZjllY2ZlOTgwOTg4
15
+ Zjg0Mjc0YTNiM2ZiY2JjMDI4MGQ5NzlhMGI5OTRmYTkwMjY2YmI=
@@ -24,6 +24,32 @@ class CabooseRets::ResidentialProperty < ActiveRecord::Base
24
24
  CabooseRets::RetsImporter.import_property(mls_acct)
25
25
  end
26
26
 
27
+ #=============================================================================
28
+
29
+ # Assume this is running in a worker dyno
30
+ def self.update_rets
31
+
32
+ cri = CabooseRets::RetsImporter
33
+
34
+ return if cri.task_is_locked
35
+ task_started = cri.lock_task
36
+
37
+ begin
38
+ cri.update_after(cri.last_updated)
39
+ cri.save_last_updated(task_started)
40
+ cri.unlock_task
41
+ rescue
42
+ raise
43
+ ensure
44
+ cri.unlock_task_if_last_updated(task_started)
45
+ end
46
+
47
+ # Start the same update process in five minutes
48
+ self.delay(:run_at => 5.minutes.from_now).update_rets
49
+ end
50
+
51
+ #=============================================================================
52
+
27
53
  def parse(data)
28
54
  self.bedrooms = data['BEDROOMS']
29
55
  self.dom = data['DOM']
@@ -471,4 +471,42 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
471
471
  #puts "[rets_importer] #{msg}"
472
472
  Rails.logger.info("[rets_importer] #{msg}")
473
473
  end
474
+
475
+ #=============================================================================
476
+ # Locking update task
477
+ #=============================================================================
478
+
479
+ def self.last_updated
480
+ if !Caboose::Setting.exists?(:name => 'rets_last_updated')
481
+ Caboose::Setting.create(:name => 'rets_last_updated', :value => '2013-08-06T00:00:01')
482
+ end
483
+ s = Caboose::Setting.where(:name => 'rets_last_updated').first
484
+ return DateTime.parse(s.value)
485
+ end
486
+
487
+ def self.save_last_updated(d)
488
+ s = Caboose::Setting.where(:name => 'rets_last_updated').first
489
+ s.value = d.strftime('%FT%T')
490
+ s.save
491
+ end
492
+
493
+ def self.task_is_locked
494
+ return Caboose::Setting.exists?(:name => 'rets_update_running')
495
+ end
496
+
497
+ def self.lock_task
498
+ date = DateTime.now
499
+ Caboose::Setting.create(:name => 'rets_update_running', :value => date.strftime('%F %T'))
500
+ return date
501
+ end
502
+
503
+ def self.unlock_task
504
+ Caboose::Setting.where(:name => 'rets_update_running').first.destroy
505
+ end
506
+
507
+ def self.unlock_task_if_last_updated(d)
508
+ setting = Caboose::Setting.where(:name => 'rets_update_running').first
509
+ unlock_task if setting && d.strftime('%F %T') == setting.value
510
+ end
511
+
474
512
  end
@@ -1,3 +1,3 @@
1
1
  module CabooseRets
2
- VERSION = '0.0.47'
2
+ VERSION = '0.0.48'
3
3
  end
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.47
4
+ version: 0.0.48
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Barry