caboose-rets 0.0.24 → 0.0.25

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.
@@ -39,7 +39,7 @@ module CabooseRets
39
39
  'date_created_lte' => '',
40
40
  'date_modified_gte' => '',
41
41
  'date_modified_lte' => '',
42
- 'status' => ['Active', 'Pending']
42
+ 'status' => 'Active'
43
43
  },{
44
44
  'model' => 'CabooseRets::MultiFamilyProperty',
45
45
  'sort' => 'current_price ASC, mls_acct',
@@ -52,7 +52,8 @@ module CabooseRets
52
52
 
53
53
  # GET /multi_family/:mls_acct/details
54
54
  def details
55
- @property = MultiFamilyProperty.where(:mls_acct => params[:mls_acct]).first
55
+ @property = MultiFamilyProperty.where(:mls_acct => params[:mls_acct]).first
56
+ @saved = logged_in? && SavedProperty.where(:user_id => logged_in_user.id, :mls_acct => params[:mls_acct]).exists?
56
57
  if @property.nil?
57
58
  @mls_acct = params[:mls_acct]
58
59
  render 'multi_family/not_exists'
@@ -38,7 +38,7 @@ module CabooseRets
38
38
  end
39
39
 
40
40
  # GET /admin/offices/options
41
- def office_options
41
+ def admin_options
42
42
  options = [{
43
43
  'value' => '',
44
44
  'text' => '-- No Office --'
@@ -39,7 +39,7 @@ module CabooseRets
39
39
  'date_created_lte' => '',
40
40
  'date_modified_gte' => '',
41
41
  'date_modified_lte' => '',
42
- 'status' => ['Active', 'Pending']
42
+ 'status' => 'Active'
43
43
  },{
44
44
  'model' => 'CabooseRets::ResidentialProperty',
45
45
  'sort' => 'current_price ASC, mls_acct',
@@ -63,6 +63,7 @@ module CabooseRets
63
63
  # GET /residential/:mls_acct/details
64
64
  def details
65
65
  @property = ResidentialProperty.where(:mls_acct => params[:mls_acct]).first
66
+ @saved = logged_in? && SavedProperty.where(:user_id => logged_in_user.id, :mls_acct => params[:mls_acct]).exists?
66
67
  if @property.lo_code == '46'
67
68
  @agent = Agent.where(:la_code => @property.la_code).first
68
69
  end
@@ -0,0 +1,90 @@
1
+ module CabooseRets
2
+ class SavedPropertiesController < ApplicationController
3
+
4
+ # GET /saved-properties
5
+ def index
6
+ return if !verify_logged_in
7
+ @properties = SavedProperty.where(:user_id => logged_in_user.id).all
8
+ end
9
+
10
+ # POST /saved-properties
11
+ def add
12
+ return if !verify_logged_in
13
+
14
+ resp = Caboose::StdClass.new
15
+
16
+ if SavedProperty.exists?(:user_id => logged_in_user.id, :mls_acct => params[:mls_acct])
17
+ resp.success = true
18
+ else
19
+ p = SavedProperty.new(
20
+ :user_id => logged_in_user.id,
21
+ :mls_acct => params[:mls_acct]
22
+ )
23
+ if p.save
24
+ resp.success = true
25
+ else
26
+ resp.error = "There was an error saving your property."
27
+ end
28
+ end
29
+ render :json => resp
30
+ end
31
+
32
+ # DELETE /saved-properties/:mls_acct
33
+ def delete
34
+ return if !verify_logged_in
35
+ SavedProperty.where(:user_id => logged_in_user.id, :mls_acct => params[:mls_acct]).destroy_all
36
+ render :json => Caboose::StdClass.new('success' => true)
37
+ end
38
+
39
+ # POST /saved-properties
40
+ def add
41
+ return if !verify_logged_in
42
+
43
+ resp = Caboose::StdClass.new
44
+
45
+ if SavedProperty.exists?(:user_id => logged_in_user.id, :mls_acct => params[:mls_acct])
46
+ resp.success = true
47
+ else
48
+ p = SavedProperty.new(
49
+ :user_id => logged_in_user.id,
50
+ :mls_acct => params[:mls_acct]
51
+ )
52
+ if p.save
53
+ resp.success = true
54
+ else
55
+ resp.error = "There was an error saving your property."
56
+ end
57
+ end
58
+ render :json => resp
59
+ end
60
+
61
+ # GET /saved-properties/:mls_acct/toggle
62
+ def toggle_save
63
+ return if !verify_logged_in
64
+
65
+ resp = Caboose::StdClass.new
66
+ if SavedProperty.where(:user_id => logged_in_user.id, :mls_acct => params[:mls_acct]).exists?
67
+ SavedProperty.where(:user_id => logged_in_user.id, :mls_acct => params[:mls_acct]).destroy_all
68
+ resp.saved = false
69
+ else
70
+ p = SavedProperty.new
71
+ p.user_id = logged_in_user.id
72
+ p.mls_acct = params[:mls_acct]
73
+ p.save
74
+ resp.saved = true
75
+ end
76
+
77
+ render :json => resp
78
+ end
79
+
80
+ # GET /saved-properties/:mls_acct/status
81
+ def status
82
+ return if !verify_logged_in
83
+
84
+ resp = Caboose::StdClass.new
85
+ resp.saved = SavedProperty.where(:user_id => logged_in_user.id, :mls_acct => params[:mls_acct]).exists?
86
+ render :json => resp
87
+ end
88
+
89
+ end
90
+ end
@@ -5,25 +5,15 @@ class CabooseRets::CommercialProperty < ActiveRecord::Base
5
5
  def url() return "/commercial/#{self.id}" end
6
6
  def agent() return CabooseRets::Agent.where(:la_code => self.la_code).first end
7
7
  def office() return CabooseRets::Office.where(:lo_code => self.lo_code).first end
8
- def images() return CabooseRets::Media.where(:mls_acct => self.mls_acct).order(:media_order).all end
9
-
8
+ def images() return CabooseRets::Media.where(:mls_acct => self.mls_acct, :media_type => 'Photo').reorder(:media_order).all end
9
+ def files() return CabooseRets::Media.where(:mls_acct => self.mls_acct, :media_type => 'File' ).reorder(:media_order).all end
10
10
  def virtual_tour
11
11
  return nil if !CabooseRets::Media.where(:mls_acct => self.mls_acct.to_s).where(:media_type => 'Virtual Tour').exists?
12
12
  media = CabooseRets::Media.where(:mls_acct => self.mls_acct.to_s, :media_type => 'Virtual Tour').first
13
13
  return media.url
14
14
  end
15
+ def self.geolocatable() all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL") end
15
16
 
16
- def self.geolocatable() all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL") end
17
- #def self.property_types() self.pucs("prop_type" ).reject(&:empty?).sort end
18
- #def self.statuses() self.pucs("status" ).reject(&:empty?).sort end
19
- #def self.zips() self.pucs("zip" ).reject(&:empty?).sort end
20
- #def self.cities() self.pucs("city" ).reject(&:empty?).sort end
21
- #def self.counties() self.pucs("county" ).reject(&:empty?).sort end
22
- #def self.subdivisions() self.pucs("subdivision" ).reject(&:empty?).sort end
23
- #def self.elem_schools() self.pucs("elem_school" ).reject(&:empty?).sort end
24
- #def self.middle_schools() self.pucs("middle_school" ).reject(&:empty?).sort end
25
- #def self.high_schools() self.pucs("high_school" ).reject(&:empty?).sort end
26
-
27
17
  def parse(data)
28
18
  self.acreage = data['ACREAGE']
29
19
  self.adjoining_land_use = data['ADJOINING_LAND_USE']
@@ -1,29 +1,19 @@
1
1
 
2
2
  class CabooseRets::LandProperty < ActiveRecord::Base
3
3
  self.table_name = "rets_land"
4
-
5
- def url() return "/land/#{self.id}" end
4
+
5
+ def url() return "/land/#{self.id}" end
6
6
  def agent() return CabooseRets::Agent.where(:la_code => self.la_code).first end
7
- def office() return CabooseRets::Office.where(:lo_code => self.lo_code).first end
8
- def images() return CabooseRets::Media.where(:mls_acct => self.mls_acct).order(:media_order).all end
9
-
7
+ def office() return CabooseRets::Office.where(:lo_code => self.lo_code).first end
8
+ def images() return CabooseRets::Media.where(:mls_acct => self.mls_acct, :media_type => 'Photo').reorder(:media_order).all end
9
+ def files() return CabooseRets::Media.where(:mls_acct => self.mls_acct, :media_type => 'File' ).reorder(:media_order).all end
10
10
  def virtual_tour
11
11
  return nil if !CabooseRets::Media.where(:mls_acct => self.mls_acct.to_s).where(:media_type => 'Virtual Tour').exists?
12
12
  media = CabooseRets::Media.where(:mls_acct => self.mls_acct.to_s, :media_type => 'Virtual Tour').first
13
13
  return media.url
14
14
  end
15
+ def self.geolocatable() all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL") end
15
16
 
16
- def self.geolocatable() all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL") end
17
- #def self.property_types() self.unique_field("prop_type" ) end
18
- #def self.statuses() self.unique_field("status" ) end
19
- #def self.zips() self.unique_field("zip" ) end
20
- #def self.cities() self.unique_field("city" ) end
21
- #def self.counties() self.unique_field("county" ) end
22
- #def self.subdivisions() self.unique_field("subdivision" ) end
23
- #def self.elem_schools() self.unique_field("elem_school" ) end
24
- #def self.middle_schools() self.unique_field("middle_school" ) end
25
- #def self.high_schools() self.unique_field("high_school" ) end
26
-
27
17
  def parse(data)
28
18
  self.acreage = data['ACREAGE']
29
19
  self.acreage_source = data['ACREAGE_SOURCE']
@@ -2,6 +2,7 @@
2
2
  class CabooseRets::Media < ActiveRecord::Base
3
3
  self.table_name = "rets_media"
4
4
 
5
+ has_attached_file :file, :path => 'rets/media/:mls_acct_:media_order.:extension'
5
6
  has_attached_file :image,
6
7
  :path => 'rets/media/:mls_acct_:media_order_:style.:extension',
7
8
  :styles => {
@@ -9,6 +10,7 @@ class CabooseRets::Media < ActiveRecord::Base
9
10
  :thumb => '400x300>',
10
11
  :large => '640x480>'
11
12
  }
13
+ attr_accessible :date_modified, :file_name, :media_id, :media_order, :media_remarks, :media_type, :mls_acct, :url
12
14
 
13
15
  def parse(data)
14
16
  self.date_modified = data['DATE_MODIFIED']
@@ -20,4 +22,46 @@ class CabooseRets::Media < ActiveRecord::Base
20
22
  self.mls_acct = data['MLS_ACCT']
21
23
  self.url = data['URL']
22
24
  end
25
+
26
+ before_post_process :lowercase_file_names
27
+
28
+ def lowercase_file_names
29
+ self.image.instance_write(:file_name, self.image_file_name.downcase) if self.image_file_name
30
+ self.file.instance_write(:file_name, self.file_file_name.downcase) if self.file_file_name
31
+ end
32
+
33
+ #before_post_process :rename_avatar
34
+ #def rename_image
35
+ # extension = File.extname(image_file_name).downcase
36
+ # self.image.instance_write :file_name, "#{self.mls_acct}_#{self.media_order}.#{extension}"
37
+ #end
38
+
39
+ def self.reorder(media_ids, bucket_name)
40
+
41
+ s3 = AWS::S3.new
42
+ b = s3.buckets[bucket_name]
43
+
44
+ # Rename the s3 assets to temp names
45
+ media_ids.each do |id|
46
+ m = CabooseRets::Media.find(id)
47
+ (m.image.styles.keys+[:original]).each { |style| b.objects[m.image.path(style)].rename_to "#{m.image.path(style)}.temp" } if m.image
48
+ #(m.file.styles.keys+[:original]).each { |style| b.objects[m.file.path(style) ].rename_to "#{m.file.path(style)}.temp" } if m.file
49
+ end
50
+
51
+ # Rename the assets to their new names
52
+ i = 1
53
+ media_ids.each do |id|
54
+ m = CabooseRets::Media.find(id)
55
+ orig_image_name = m.image ? "#{m.image.path}.temp" : nil
56
+ #orig_file_name = m.file ? "#{m.image.path}.temp" : nil
57
+ m.media_order = i
58
+ (m.image.styles.keys+[:original]).each { |style| b.objects[orig_image_name.gsub("original", style.to_s)].rename_to m.image.path(style) } if m.image
59
+ #(m.file.styles.keys+[:original]).each { |style| b.objects[orig_file_name.gsub( "original", style.to_s)].rename_to m.file.path(style) } if m.file
60
+ m.save
61
+ i = i + 1
62
+ end
63
+
64
+ return true
65
+ end
66
+
23
67
  end
@@ -4,15 +4,14 @@ class CabooseRets::MultiFamilyProperty < ActiveRecord::Base
4
4
 
5
5
  def url() return "/multi-family/#{self.id}" end
6
6
  def agent() return CabooseRets::Agent.where(:la_code => self.la_code).first end
7
- def office() return CabooseRets::Office.where(:lo_code => self.lo_code).first end
8
- def images() return CabooseRets::Media.where(:mls_acct => self.mls_acct).order(:media_order).all end
9
-
7
+ def office() return CabooseRets::Office.where(:lo_code => self.lo_code).first end
8
+ def images() return CabooseRets::Media.where(:mls_acct => self.mls_acct, :media_type => 'Photo').reorder(:media_order).all end
9
+ def files() return CabooseRets::Media.where(:mls_acct => self.mls_acct, :media_type => 'File' ).reorder(:media_order).all end
10
10
  def virtual_tour
11
11
  return nil if !CabooseRets::Media.where(:mls_acct => self.mls_acct.to_s).where(:media_type => 'Virtual Tour').exists?
12
12
  media = CabooseRets::Media.where(:mls_acct => self.mls_acct.to_s, :media_type => 'Virtual Tour').first
13
13
  return media.url
14
14
  end
15
-
16
15
  def self.geolocatable() all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL") end
17
16
 
18
17
  def parse(data)
@@ -1,29 +1,19 @@
1
-
1
+
2
2
  class CabooseRets::ResidentialProperty < ActiveRecord::Base
3
3
  self.table_name = "rets_residential"
4
4
 
5
5
  def url() return "/residential/#{self.id}" end
6
6
  def agent() return CabooseRets::Agent.where(:la_code => self.la_code).first end
7
- def office() return CabooseRets::Office.where(:lo_code => self.lo_code).first end
8
- def images() return CabooseRets::Media.where(:mls_acct => self.mls_acct).order(:media_order).all end
9
-
7
+ def office() return CabooseRets::Office.where(:lo_code => self.lo_code).first end
8
+ def images() return CabooseRets::Media.where(:mls_acct => self.mls_acct, :media_type => 'Photo').reorder(:media_order).all end
9
+ def files() return CabooseRets::Media.where(:mls_acct => self.mls_acct, :media_type => 'File' ).reorder(:media_order).all end
10
10
  def virtual_tour
11
11
  return nil if !CabooseRets::Media.where(:mls_acct => self.mls_acct.to_s).where(:media_type => 'Virtual Tour').exists?
12
12
  media = CabooseRets::Media.where(:mls_acct => self.mls_acct.to_s, :media_type => 'Virtual Tour').first
13
13
  return media.url
14
14
  end
15
+ def self.geolocatable() all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL") end
15
16
 
16
- def self.geolocatable() all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL") end
17
- #def self.property_types() self.uniq.pluck("prop_type" ).reject(&:empty?).sort end
18
- #def self.statuses() self.uniq.pluck("status" ).reject(&:empty?).sort end
19
- #def self.zips() self.uniq.pluck("zip" ).reject(&:empty?).sort end
20
- #def self.cities() self.uniq.pluck("city" ).reject(&:empty?).sort end
21
- #def self.counties() self.uniq.pluck("county" ).reject(&:empty?).sort end
22
- #def self.subdivisions() self.uniq.pluck("subdivision" ).reject(&:empty?).sort end
23
- #def self.elem_schools() self.uniq.pluck("elem_school" ).reject(&:empty?).sort end
24
- #def self.middle_schools() self.uniq.pluck("middle_school" ).reject(&:empty?).sort end
25
- #def self.high_schools() self.uniq.pluck("high_school" ).reject(&:empty?).sort end
26
-
27
17
  def parse(data)
28
18
  self.bedrooms = data['BEDROOMS']
29
19
  self.dom = data['DOM']
@@ -3,12 +3,18 @@ class CabooseRets::RetsPlugin < Caboose::CaboosePlugin
3
3
  def self.admin_nav(nav, user = nil, page = nil)
4
4
  return nav if user.nil?
5
5
 
6
+ nav << {
7
+ 'id' => 'saved-properties',
8
+ 'text' => 'Saved Properties',
9
+ 'href' => '/saved-properties',
10
+ 'modal' => false
11
+ }
6
12
  nav << {
7
13
  'id' => 'saved-searches',
8
14
  'text' => 'Saved Searches',
9
15
  'href' => '/saved-searches',
10
16
  'modal' => true
11
- }
17
+ }
12
18
 
13
19
  return nav if !user.is_allowed('properties', 'view')
14
20
 
@@ -0,0 +1,10 @@
1
+
2
+ class CabooseRets::SavedProperty < ActiveRecord::Base
3
+ self.table_name = "rets_saved_properties"
4
+ belongs_to :user, :class_name => 'Caboose::User'
5
+ attr_accessible :user_id, :mls_acct
6
+
7
+ def property
8
+ return CabooseRets.get_property(self.mls_acct)
9
+ end
10
+ end
@@ -0,0 +1,832 @@
1
+
2
+ class CabooseRets::Schema < Caboose::Utilities::Schema
3
+
4
+ # The schema of the database
5
+ # { Model => [[name, data_type, options]] }
6
+ def self.schema
7
+ {
8
+ CabooseRets::Agent => [
9
+ [ :beeper_phone , :string ],
10
+ [ :last_name , :string ],
11
+ [ :member_email , :string ],
12
+ [ :phone_home_fax , :string ],
13
+ [ :car_phone , :string ],
14
+ [ :la_code , :string ],
15
+ [ :member_page , :string ],
16
+ [ :phone_pager , :string ],
17
+ [ :date_created , :string ],
18
+ [ :lo_code , :string ],
19
+ [ :member_status , :string ],
20
+ [ :phone_second_home , :string ],
21
+ [ :date_modified , :string ],
22
+ [ :mail_addr1 , :string ],
23
+ [ :nrds_id , :string ],
24
+ [ :phone_toll_free , :string ],
25
+ [ :defaultemail , :string ],
26
+ [ :mail_addr2 , :string ],
27
+ [ :office_phone , :string ],
28
+ [ :phone_voice_mail , :string ],
29
+ [ :fax_phone , :string ],
30
+ [ :mail_city , :string ],
31
+ [ :other_phone , :string ],
32
+ [ :phone_voice_pager , :string ],
33
+ [ :first_name , :string ],
34
+ [ :mail_state , :string ],
35
+ [ :phone_change_date , :string ],
36
+ [ :photo_count , :string ],
37
+ [ :home_phone , :string ],
38
+ [ :mail_zip , :string ],
39
+ [ :phone_direct_office , :string ],
40
+ [ :photo_date_modified , :string ],
41
+ [ :hide , :boolean, { :default => false }],
42
+ [ :bio , :text ],
43
+ [ :contact_info , :text ],
44
+ [ :assistant_to , :string ],
45
+ [ :designation , :string ]
46
+ ],
47
+ CabooseRets::CommercialProperty => [
48
+ [ :acreage , :text ],
49
+ [ :adjoining_land_use , :text ],
50
+ [ :agent_notes , :text ],
51
+ [ :agent_other_contact_desc , :text ],
52
+ [ :agent_other_contact_phone , :text ],
53
+ [ :annual_taxes , :text ],
54
+ [ :approx_age , :text ],
55
+ [ :area , :text ],
56
+ [ :banner , :text ],
57
+ [ :baths , :text ],
58
+ [ :baths_full , :text ],
59
+ [ :baths_half , :text ],
60
+ [ :bedrooms , :text ],
61
+ [ :bom_date , :text ],
62
+ [ :book_number , :text ],
63
+ [ :book_page , :text ],
64
+ [ :book_type , :text ],
65
+ [ :box_on_unit , :text ],
66
+ [ :box_on_unit_yn , :text ],
67
+ [ :business_included_yn , :text ],
68
+ [ :buyer_broker , :text ],
69
+ [ :buyer_broker_type , :text ],
70
+ [ :buyer_city , :text ],
71
+ [ :buyer_name , :text ],
72
+ [ :buyer_state , :text ],
73
+ [ :buyer_zip , :text ],
74
+ [ :category , :text ],
75
+ [ :city , :text ],
76
+ [ :city_code , :text ],
77
+ [ :co_la_code , :text ],
78
+ [ :co_lo_code , :text ],
79
+ [ :co_sa_code , :text ],
80
+ [ :co_so_code , :text ],
81
+ [ :contacts , :text ],
82
+ [ :contr_broker , :text ],
83
+ [ :contr_broker_type , :text ],
84
+ [ :county , :text ],
85
+ [ :current_price , :integer, { :default => 0 }],
86
+ [ :date_created , :text ],
87
+ [ :date_leased , :text ],
88
+ [ :date_modified , :text ],
89
+ [ :df_yn , :text ],
90
+ [ :directions , :text ],
91
+ [ :display_address_yn , :text ],
92
+ [ :dom , :text ],
93
+ [ :elem_school , :text ],
94
+ [ :expenses_assoc , :text ],
95
+ [ :expenses_ins , :text ],
96
+ [ :expenses_maint , :text ],
97
+ [ :expenses_mgmt , :text ],
98
+ [ :expenses_other , :text ],
99
+ [ :expenses_tax , :text ],
100
+ [ :expenses_utility , :text ],
101
+ [ :expire_date , :text ],
102
+ [ :flood_plain , :text ],
103
+ [ :ftr_building , :text ],
104
+ [ :ftr_building_type , :text ],
105
+ [ :ftr_closing , :text ],
106
+ [ :ftr_cooling , :text ],
107
+ [ :ftr_docs_on_file , :text ],
108
+ [ :ftr_exterior , :text ],
109
+ [ :ftr_financing , :text ],
110
+ [ :ftr_flooring , :text ],
111
+ [ :ftr_heating , :text ],
112
+ [ :ftr_interior , :text ],
113
+ [ :ftr_internet , :text ],
114
+ [ :ftr_lease_terms , :text ],
115
+ [ :ftr_property_desc , :text ],
116
+ [ :ftr_roof , :text ],
117
+ [ :ftr_sale_terms , :text ],
118
+ [ :ftr_sewer , :text ],
119
+ [ :ftr_showing , :text ],
120
+ [ :ftr_sprinkler , :text ],
121
+ [ :ftr_style , :text ],
122
+ [ :ftr_utilities , :text ],
123
+ [ :ftr_utilities_rental , :text ],
124
+ [ :ftr_water , :text ],
125
+ [ :geo_precision , :text ],
126
+ [ :georesult , :text ],
127
+ [ :high_school , :text ],
128
+ [ :hoa_fee , :text ],
129
+ [ :hoa_fee_yn , :text ],
130
+ [ :hoa_term , :text ],
131
+ [ :income_gross , :text ],
132
+ [ :income_net , :text ],
133
+ [ :income_other , :text ],
134
+ [ :income_rental , :text ],
135
+ [ :internet_yn , :text ],
136
+ [ :la_code , :text ],
137
+ [ :leased_through , :text ],
138
+ [ :legal_block , :text ],
139
+ [ :legal_lot , :text ],
140
+ [ :legals , :text ],
141
+ [ :list_date , :text ],
142
+ [ :list_price , :text ],
143
+ [ :listing_type , :text ],
144
+ [ :lo_code , :text ],
145
+ [ :lockbox_yn , :text ],
146
+ [ :lot_dimensions , :text ],
147
+ [ :lot_dimensions_source , :text ],
148
+ [ :media_flag , :text ],
149
+ [ :middle_school , :text ],
150
+ [ :mls_acct , :text ],
151
+ [ :municipality , :text ],
152
+ [ :negotiable_price , :boolean ],
153
+ [ :num_units , :text ],
154
+ [ :num_units_occupied , :text ],
155
+ [ :off_mkt_date , :text ],
156
+ [ :off_mkt_days , :text ],
157
+ [ :office_notes , :text ],
158
+ [ :orig_lp , :text ],
159
+ [ :other_fee , :text ],
160
+ [ :other_fee_type , :text ],
161
+ [ :owner_name , :text ],
162
+ [ :owner_phone , :text ],
163
+ [ :parcel_id , :text ],
164
+ [ :pending_date , :text ],
165
+ [ :photo_count , :text ],
166
+ [ :photo_date_modified , :text ],
167
+ [ :photo_description , :text ],
168
+ [ :photo_instr , :text ],
169
+ [ :posession , :text ],
170
+ [ :price_change_date , :text ],
171
+ [ :price_sqft , :text ],
172
+ [ :proj_close_date , :text ],
173
+ [ :prop_desc , :text ],
174
+ [ :prop_id , :text ],
175
+ [ :prop_type , :text ],
176
+ [ :remarks , :text ],
177
+ [ :road_frontage_ft , :text ],
178
+ [ :sa_code , :text ],
179
+ [ :sale_lease , :text ],
180
+ [ :sale_notes , :text ],
181
+ [ :so_code , :text ],
182
+ [ :sold_date , :text ],
183
+ [ :sold_price , :text ],
184
+ [ :sold_terms , :text ],
185
+ [ :sqft_source , :text ],
186
+ [ :state , :text ],
187
+ [ :status , :text ],
188
+ [ :status_date , :text ],
189
+ [ :status_flag , :text ],
190
+ [ :street , :text ],
191
+ [ :street_dir , :text ],
192
+ [ :street_name , :text ],
193
+ [ :street_num , :text ],
194
+ [ :sub_agent , :text ],
195
+ [ :sub_agent_type , :text ],
196
+ [ :sub_area , :text ],
197
+ [ :subdivision , :text ],
198
+ [ :take_photo_yn , :text ],
199
+ [ :third_party_comm_yn , :text ],
200
+ [ :tot_heat_sqft , :text ],
201
+ [ :tour_date , :text ],
202
+ [ :tour_submit_date , :text ],
203
+ [ :type_detailed , :text ],
204
+ [ :u1_dims , :text ],
205
+ [ :u1_free_standing_yn , :text ],
206
+ [ :u1_sqft_manuf , :text ],
207
+ [ :u1_sqft_office , :text ],
208
+ [ :u1_sqft_retail , :text ],
209
+ [ :u1_sqft_total , :text ],
210
+ [ :u1_sqft_warehouse , :text ],
211
+ [ :u1_year_built , :text ],
212
+ [ :u2_dims , :text ],
213
+ [ :u2_free_standing_yn , :text ],
214
+ [ :u2_sqft_manuf , :text ],
215
+ [ :u2_sqft_office , :text ],
216
+ [ :u2_sqft_retail , :text ],
217
+ [ :u2_sqft_total , :text ],
218
+ [ :u2_sqft_warehouse , :text ],
219
+ [ :u2_year_built , :text ],
220
+ [ :u3_dims , :text ],
221
+ [ :u3_free_standing_yn , :text ],
222
+ [ :u3_sqft_manuf , :text ],
223
+ [ :u3_sqft_office , :text ],
224
+ [ :u3_sqft_retail , :text ],
225
+ [ :u3_sqft_total , :text ],
226
+ [ :u3_sqft_warehouse , :text ],
227
+ [ :u3_year_built , :text ],
228
+ [ :unit_num , :text ],
229
+ [ :upload_source , :text ],
230
+ [ :vacancy_rate , :text ],
231
+ [ :vacant_yn , :text ],
232
+ [ :valuation_yn , :text ],
233
+ [ :vt_yn , :text ],
234
+ [ :waterfront_yn , :text ],
235
+ [ :withdrawn_date , :text ],
236
+ [ :year_built , :text ],
237
+ [ :zip , :text ],
238
+ [ :zoning_northport , :text ],
239
+ [ :zoning_tusc , :text ],
240
+ [ :virtual_tour , :text ],
241
+ [ :latitude , :float ],
242
+ [ :longitude , :float ]
243
+ ],
244
+ CabooseRets::LandProperty => [
245
+ [ :acreage , :text ],
246
+ [ :acreage_source , :text ],
247
+ [ :adjoining_land_use , :text ],
248
+ [ :agent_notes , :text ],
249
+ [ :agent_other_contact_desc , :text ],
250
+ [ :agent_other_contact_phone , :text ],
251
+ [ :annual_taxes , :text ],
252
+ [ :area , :text ],
253
+ [ :bom_date , :text ],
254
+ [ :book_number , :text ],
255
+ [ :book_page , :text ],
256
+ [ :book_type , :text ],
257
+ [ :buyer_broker , :text ],
258
+ [ :buyer_broker_type , :text ],
259
+ [ :buyer_name , :text ],
260
+ [ :category , :text ],
261
+ [ :city , :text ],
262
+ [ :city_code , :text ],
263
+ [ :co_la_code , :text ],
264
+ [ :co_lo_code , :text ],
265
+ [ :co_sa_code , :text ],
266
+ [ :co_so_code , :text ],
267
+ [ :contacts , :text ],
268
+ [ :contr_broker , :text ],
269
+ [ :contr_broker_type , :text ],
270
+ [ :converted , :text ],
271
+ [ :county , :text ],
272
+ [ :current_price , :integer, { :default => 0 }],
273
+ [ :date_created , :text ],
274
+ [ :date_modified , :text ],
275
+ [ :df_yn , :text ],
276
+ [ :directions , :text ],
277
+ [ :display_address_yn , :text ],
278
+ [ :dom , :text ],
279
+ [ :elem_school , :text ],
280
+ [ :expire_date , :text ],
281
+ [ :ftr_access , :text ],
282
+ [ :ftr_docs_on_file , :text ],
283
+ [ :ftr_existing_struct , :text ],
284
+ [ :ftr_extras , :text ],
285
+ [ :ftr_internet , :text ],
286
+ [ :ftr_lotdesc , :text ],
287
+ [ :ftr_mineralrights , :text ],
288
+ [ :ftr_possibleuse , :text ],
289
+ [ :ftr_restrictions , :text ],
290
+ [ :ftr_sewer , :text ],
291
+ [ :ftr_showing , :text ],
292
+ [ :ftr_terms , :text ],
293
+ [ :ftr_topography , :text ],
294
+ [ :ftr_utils , :text ],
295
+ [ :ftr_zoning , :text ],
296
+ [ :geo_precision , :text ],
297
+ [ :georesult , :text ],
298
+ [ :high_school , :text ],
299
+ [ :internet_yn , :text ],
300
+ [ :la_code , :text ],
301
+ [ :legal_block , :text ],
302
+ [ :legal_lot , :text ],
303
+ [ :legal_section , :text ],
304
+ [ :legals , :text ],
305
+ [ :list_date , :text ],
306
+ [ :list_price , :text ],
307
+ [ :listing_type , :text ],
308
+ [ :lo_code , :text ],
309
+ [ :lot_dim_source , :text ],
310
+ [ :lot_dimensions , :text ],
311
+ [ :media_flag , :text ],
312
+ [ :middle_school , :text ],
313
+ [ :mls_acct , :text ],
314
+ [ :municipality , :text ],
315
+ [ :off_mkt_date , :text ],
316
+ [ :off_mkt_days , :text ],
317
+ [ :office_notes , :text ],
318
+ [ :orig_lp , :text ],
319
+ [ :orig_price , :text ],
320
+ [ :other_fee , :text ],
321
+ [ :other_fee_type , :text ],
322
+ [ :owner_name , :text ],
323
+ [ :owner_phone , :text ],
324
+ [ :parcel_id , :text ],
325
+ [ :pending_date , :text ],
326
+ [ :photo_count , :text ],
327
+ [ :photo_date_modified , :text ],
328
+ [ :price_change_date , :text ],
329
+ [ :price_sqft , :text ],
330
+ [ :proj_close_date , :text ],
331
+ [ :prop_id , :text ],
332
+ [ :prop_type , :text ],
333
+ [ :remarks , :text ],
334
+ [ :road_frontage_ft , :text ],
335
+ [ :sa_code , :text ],
336
+ [ :sale_lease , :text ],
337
+ [ :sale_notes , :text ],
338
+ [ :so_code , :text ],
339
+ [ :sold_date , :text ],
340
+ [ :sold_price , :text ],
341
+ [ :sold_terms , :text ],
342
+ [ :state , :text ],
343
+ [ :status , :text ],
344
+ [ :status_date , :text ],
345
+ [ :status_flag , :text ],
346
+ [ :street , :text ],
347
+ [ :street_dir , :text ],
348
+ [ :street_name , :text ],
349
+ [ :street_num , :text ],
350
+ [ :sub_agent , :text ],
351
+ [ :sub_agent_type , :text ],
352
+ [ :subdivision , :text ],
353
+ [ :third_party_comm_yn , :text ],
354
+ [ :unit_num , :text ],
355
+ [ :upload_source , :text ],
356
+ [ :valuation_yn , :text ],
357
+ [ :vt_yn , :text ],
358
+ [ :waterfront , :text ],
359
+ [ :waterfront_yn , :text ],
360
+ [ :wf_feet , :text ],
361
+ [ :withdrawn_date , :text ],
362
+ [ :zip , :text ],
363
+ [ :zoning_northport , :text ],
364
+ [ :zoning_tusc , :text ],
365
+ [ :latitude , :float ],
366
+ [ :longitude , :float ]
367
+ ],
368
+ CabooseRets::Media => [
369
+ [ :date_modified , :string ],
370
+ [ :file_name , :string ],
371
+ [ :media_id , :string ],
372
+ [ :media_order , :integer, { :default => 0 }],
373
+ [ :media_remarks , :text ],
374
+ [ :media_type , :string ],
375
+ [ :mls_acct , :string ],
376
+ [ :url , :text ]
377
+ ],
378
+ CabooseRets::MultiFamilyProperty => [
379
+ [ :acreage , :text ],
380
+ [ :agent_notes , :text ],
381
+ [ :agent_other_contact_desc , :text ],
382
+ [ :agent_other_contact_phone , :text ],
383
+ [ :annual_taxes , :text ],
384
+ [ :area , :text ],
385
+ [ :bom_date , :text ],
386
+ [ :book_number , :text ],
387
+ [ :book_page , :text ],
388
+ [ :book_type , :text ],
389
+ [ :box_on_unit , :text ],
390
+ [ :buyer_broker , :text ],
391
+ [ :buyer_broker_type , :text ],
392
+ [ :buyer_name , :text ],
393
+ [ :category , :text ],
394
+ [ :city , :text ],
395
+ [ :city_code , :text ],
396
+ [ :contacts , :text ],
397
+ [ :contr_broker , :text ],
398
+ [ :contr_broker_type , :text ],
399
+ [ :county , :text ],
400
+ [ :co_la_code , :text ],
401
+ [ :co_lo_code , :text ],
402
+ [ :co_sa_code , :text ],
403
+ [ :co_so_code , :text ],
404
+ [ :current_price , :integer ],
405
+ [ :date_created , :text ],
406
+ [ :date_leased , :text ],
407
+ [ :date_modified , :text ],
408
+ [ :df_yn , :text ],
409
+ [ :directions , :text ],
410
+ [ :display_address_yn , :text ],
411
+ [ :dom , :text ],
412
+ [ :elem_school , :text ],
413
+ [ :expenses_association , :text ],
414
+ [ :expenses_insurance , :text ],
415
+ [ :expenses_maintenance , :text ],
416
+ [ :expenses_management , :text ],
417
+ [ :expenses_other , :text ],
418
+ [ :expenses_tax , :text ],
419
+ [ :expire_date , :text ],
420
+ [ :flood_plain , :text ],
421
+ [ :ftr_building_type , :text ],
422
+ [ :ftr_construction , :text ],
423
+ [ :ftr_cooling , :text ],
424
+ [ :ftr_exterior , :text ],
425
+ [ :ftr_exterioramenit , :text ],
426
+ [ :ftr_floors , :text ],
427
+ [ :ftr_heating , :text ],
428
+ [ :ftr_interior , :text ],
429
+ [ :ftr_rent_incl , :text ],
430
+ [ :ftr_roof , :text ],
431
+ [ :ftr_roof_age , :text ],
432
+ [ :ftr_showing , :text ],
433
+ [ :ftr_utils , :text ],
434
+ [ :ftr_zoning , :text ],
435
+ [ :georesult , :text ],
436
+ [ :geo_precision , :text ],
437
+ [ :high_school , :text ],
438
+ [ :hoa_fee , :text ],
439
+ [ :hoa_fee_yn , :text ],
440
+ [ :hoa_term , :text ],
441
+ [ :income , :text ],
442
+ [ :income_other , :text ],
443
+ [ :income_rent , :text ],
444
+ [ :internet_yn , :text ],
445
+ [ :la_code , :text ],
446
+ [ :legals , :text ],
447
+ [ :limited_service_yn , :text ],
448
+ [ :listing_type , :text ],
449
+ [ :list_date , :text ],
450
+ [ :list_price , :text ],
451
+ [ :lot_dimensions , :text ],
452
+ [ :lot_dimensions_source , :text ],
453
+ [ :lo_code , :text ],
454
+ [ :management , :text ],
455
+ [ :media_flag , :text ],
456
+ [ :middle_school , :text ],
457
+ [ :mls_acct , :text ],
458
+ [ :municipality , :text ],
459
+ [ :num_units , :text ],
460
+ [ :num_units_occupied , :text ],
461
+ [ :office_notes , :text ],
462
+ [ :off_mkt_date , :text ],
463
+ [ :off_mkt_days , :text ],
464
+ [ :orig_lp , :text ],
465
+ [ :orig_price , :text ],
466
+ [ :other_fee , :text ],
467
+ [ :other_fee_type , :text ],
468
+ [ :owner_name , :text ],
469
+ [ :owner_phone , :text ],
470
+ [ :parcel_id , :text ],
471
+ [ :pending_date , :text ],
472
+ [ :photo_count , :text ],
473
+ [ :photo_date_modified , :text ],
474
+ [ :price_change_date , :text ],
475
+ [ :price_sqft , :text ],
476
+ [ :proj_close_date , :text ],
477
+ [ :prop_id , :text ],
478
+ [ :prop_type , :text ],
479
+ [ :remarks , :text ],
480
+ [ :sale_notes , :text ],
481
+ [ :sale_rent , :text ],
482
+ [ :sa_code , :text ],
483
+ [ :sold_date , :text ],
484
+ [ :sold_price , :text ],
485
+ [ :sold_terms , :text ],
486
+ [ :so_code , :text ],
487
+ [ :state , :text ],
488
+ [ :status , :text ],
489
+ [ :status_date , :text ],
490
+ [ :status_flag , :text ],
491
+ [ :street , :text ],
492
+ [ :street_dir , :text ],
493
+ [ :street_name , :text ],
494
+ [ :street_num , :text ],
495
+ [ :subdivision , :text ],
496
+ [ :sub_agent , :text ],
497
+ [ :sub_agent_type , :text ],
498
+ [ :third_party_comm_yn , :text ],
499
+ [ :tot_heat_sqft , :text ],
500
+ [ :u1_baths , :text ],
501
+ [ :u1_num , :text ],
502
+ [ :u1_occ , :text ],
503
+ [ :u1_rent , :text ],
504
+ [ :u1_sqft , :text ],
505
+ [ :u1_yn , :text ],
506
+ [ :u2_baths , :text ],
507
+ [ :u2_num , :text ],
508
+ [ :u2_occ , :text ],
509
+ [ :u2_rent , :text ],
510
+ [ :u2_sqft , :text ],
511
+ [ :u2_yn , :text ],
512
+ [ :u3_baths , :text ],
513
+ [ :u3_num , :text ],
514
+ [ :u3_occ , :text ],
515
+ [ :u3_rent , :text ],
516
+ [ :u3_sqft , :text ],
517
+ [ :u3_yn , :text ],
518
+ [ :u4_baths , :text ],
519
+ [ :u4_num , :text ],
520
+ [ :u4_occ , :text ],
521
+ [ :u4_rent , :text ],
522
+ [ :u4_sqft , :text ],
523
+ [ :u4_yn , :text ],
524
+ [ :u5_baths , :text ],
525
+ [ :u5_num , :text ],
526
+ [ :u5_occ , :text ],
527
+ [ :u5_rent , :text ],
528
+ [ :u5_sqft , :text ],
529
+ [ :u5_yn , :text ],
530
+ [ :u6_baths , :text ],
531
+ [ :u6_num , :text ],
532
+ [ :u6_occ , :text ],
533
+ [ :u6_rent , :text ],
534
+ [ :u6_sqft , :text ],
535
+ [ :u6_yn , :text ],
536
+ [ :u7_baths , :text ],
537
+ [ :u7_num , :text ],
538
+ [ :u7_occ , :text ],
539
+ [ :u7_rent , :text ],
540
+ [ :u7_sqft , :text ],
541
+ [ :u7_yn , :text ],
542
+ [ :u8_num , :text ],
543
+ [ :u8_occ , :text ],
544
+ [ :u8_rent , :text ],
545
+ [ :u8_sqft , :text ],
546
+ [ :u8_yn , :text ],
547
+ [ :unit_num , :text ],
548
+ [ :upload_source , :text ],
549
+ [ :valuation_yn , :text ],
550
+ [ :vt_yn , :text ],
551
+ [ :withdrawn_date , :text ],
552
+ [ :year_built , :text ],
553
+ [ :zip , :text ],
554
+ [ :latitude , :float ],
555
+ [ :longitude , :float ]
556
+ ],
557
+ CabooseRets::Office => [
558
+ [ :lo_date_created , :string ],
559
+ [ :lo_date_modified , :string ],
560
+ [ :lo_email , :string ],
561
+ [ :lo_fax_phone , :string ],
562
+ [ :lo_idx_yn , :string ],
563
+ [ :lo_code , :string ],
564
+ [ :lo_mailaddr1 , :string ],
565
+ [ :lo_mailaddr2 , :string ],
566
+ [ :lo_mailcity , :string ],
567
+ [ :lo_mailstate , :string ],
568
+ [ :lo_mailzip , :string ],
569
+ [ :lo_main_lo_code , :string ],
570
+ [ :lo_name , :string ],
571
+ [ :lo_other_phone , :string ],
572
+ [ :lo_page , :string ],
573
+ [ :lo_phone , :string ],
574
+ [ :lo_status , :string ],
575
+ [ :photo_count , :string ],
576
+ [ :photo_date_modified , :string ]
577
+ ],
578
+ CabooseRets::OpenHouse => [
579
+ [ :comments , :string ],
580
+ [ :date_created , :string ],
581
+ [ :date_modified , :string ],
582
+ [ :end_time , :string ],
583
+ [ :la_code , :string ],
584
+ [ :mls_acct , :string ],
585
+ [ :open_house_date , :string ],
586
+ [ :open_house_type , :string ],
587
+ [ :perpetual_yn , :string ],
588
+ [ :prop_type , :string ],
589
+ [ :start_time , :string ]
590
+ ],
591
+ CabooseRets::ResidentialProperty => [
592
+ [ :bedrooms , :text ],
593
+ [ :dom , :text ],
594
+ [ :ftr_pool , :text ],
595
+ [ :rm_other3_desc , :text ],
596
+ [ :baths_full , :text ],
597
+ [ :ftr_diningroom , :text ],
598
+ [ :ftr_porchpatio , :text ],
599
+ [ :rm_other3_name , :text ],
600
+ [ :baths_half , :text ],
601
+ [ :directions , :text ],
602
+ [ :ftr_possession , :text ],
603
+ [ :rm_other4 , :text ],
604
+ [ :baths , :text ],
605
+ [ :display_address_yn , :text ],
606
+ [ :current_price , :integer, { :default => 0 }],
607
+ [ :rm_other4_desc , :text ],
608
+ [ :avm_automated_sales_disabled , :text ],
609
+ [ :ftr_drive , :text ],
610
+ [ :price_change_date , :text ],
611
+ [ :rm_other4_name , :text ],
612
+ [ :avm_instant_valuation_disabled , :text ],
613
+ [ :elem_school , :text ],
614
+ [ :price_sqft , :text ],
615
+ [ :rm_recrm , :text ],
616
+ [ :acreage , :text ],
617
+ [ :expire_date , :text ],
618
+ [ :prop_type , :text ],
619
+ [ :rm_recrm_desc , :text ],
620
+ [ :ftr_age , :text ],
621
+ [ :ftr_exterior , :text ],
622
+ [ :rm_bath1 , :text ],
623
+ [ :rm_study , :text ],
624
+ [ :agent_notes , :text ],
625
+ [ :ftr_citycommunit , :text ],
626
+ [ :rm_bath1_desc , :text ],
627
+ [ :rm_study_desc , :text ],
628
+ [ :agent_other_contact_desc , :text ],
629
+ [ :ftr_fireplace , :text ],
630
+ [ :rm_bath2 , :text ],
631
+ [ :rm_sun , :text ],
632
+ [ :agent_other_contact_phone , :text ],
633
+ [ :flood_plain , :text ],
634
+ [ :rm_bath2_desc , :text ],
635
+ [ :rm_sun_desc , :text ],
636
+ [ :annual_taxes , :text ],
637
+ [ :foreclosure_yn , :text ],
638
+ [ :rm_bath3 , :text ],
639
+ [ :remarks , :text ],
640
+ [ :internet_yn , :text ],
641
+ [ :georesult , :text ],
642
+ [ :rm_bath3_desc , :text ],
643
+ [ :right_red_date , :text ],
644
+ [ :ftr_appliances , :text ],
645
+ [ :ftr_garage , :text ],
646
+ [ :rm_br1 , :text ],
647
+ [ :ftr_roof , :text ],
648
+ [ :tot_heat_sqft , :text ],
649
+ [ :geo_precision , :text ],
650
+ [ :rm_br1_desc , :text ],
651
+ [ :status_flag , :text ],
652
+ [ :area , :text ],
653
+ [ :ftr_hoaamenities , :text ],
654
+ [ :rm_br2 , :text ],
655
+ [ :hoa_fee , :text ],
656
+ [ :ftr_hoaincludes , :text ],
657
+ [ :rm_br2_desc , :text ],
658
+ [ :sale_notes , :text ],
659
+ [ :hoa_term , :text ],
660
+ [ :hoa_fee_yn , :text ],
661
+ [ :rm_br3 , :text ],
662
+ [ :ftr_terms , :text ],
663
+ [ :ftr_attic , :text ],
664
+ [ :ftr_heating , :text ],
665
+ [ :rm_br3_desc , :text ],
666
+ [ :sale_lease , :text ],
667
+ [ :ftr_docs_on_file , :text ],
668
+ [ :high_school , :text ],
669
+ [ :rm_br4 , :text ],
670
+ [ :owner_name , :text ],
671
+ [ :bom_date , :text ],
672
+ [ :homestead_yn , :text ],
673
+ [ :rm_br4_desc , :text ],
674
+ [ :owner_phone , :text ],
675
+ [ :basement_yn , :text ],
676
+ [ :ftr_interior , :text ],
677
+ [ :rm_br5 , :text ],
678
+ [ :sa_code , :text ],
679
+ [ :ftr_basement , :text ],
680
+ [ :lease_exp_date , :text ],
681
+ [ :rm_br5_desc , :text ],
682
+ [ :so_code , :text ],
683
+ [ :book_number , :text ],
684
+ [ :ftr_landscaping , :text ],
685
+ [ :rm_brkfst , :text ],
686
+ [ :ftr_sewer , :text ],
687
+ [ :book_page , :text ],
688
+ [ :ftr_laundry , :text ],
689
+ [ :rm_brkfst_desc , :text ],
690
+ [ :ftr_showing , :text ],
691
+ [ :book_type , :text ],
692
+ [ :legals , :text ],
693
+ [ :rm_den , :text ],
694
+ [ :sold_date , :text ],
695
+ [ :buyer_name , :text ],
696
+ [ :levels , :text ],
697
+ [ :rm_den_desc , :text ],
698
+ [ :sold_price , :text ],
699
+ [ :city_code , :text ],
700
+ [ :list_price , :text ],
701
+ [ :rm_dining , :text ],
702
+ [ :sold_terms , :text ],
703
+ [ :converted , :text ],
704
+ [ :list_date , :text ],
705
+ [ :rm_dining_desc , :text ],
706
+ [ :sqft_source , :text ],
707
+ [ :currentlease_yn , :text ],
708
+ [ :status , :text ],
709
+ [ :rm_family , :text ],
710
+ [ :state , :text ],
711
+ [ :category , :text ],
712
+ [ :listing_type , :text ],
713
+ [ :rm_family_desc , :text ],
714
+ [ :street_dir , :text ],
715
+ [ :city , :text ],
716
+ [ :la_code , :text ],
717
+ [ :rm_foyer , :text ],
718
+ [ :street_name , :text ],
719
+ [ :co_la_code , :text ],
720
+ [ :lo_code , :text ],
721
+ [ :rm_foyer_desc , :text ],
722
+ [ :street_num , :text ],
723
+ [ :co_lo_code , :text ],
724
+ [ :ftr_lotdesc , :text ],
725
+ [ :rm_great , :text ],
726
+ [ :style , :text ],
727
+ [ :co_so_code , :text ],
728
+ [ :lot_dimensions , :text ],
729
+ [ :rm_great_desc , :text ],
730
+ [ :subdivision , :text ],
731
+ [ :co_sa_code , :text ],
732
+ [ :mls_acct , :text ],
733
+ [ :rm_kitchen , :text ],
734
+ [ :take_photo_yn , :text ],
735
+ [ :buyer_broker , :text ],
736
+ [ :master_bed_lvl , :text ],
737
+ [ :rm_kitchen2 , :text ],
738
+ [ :upload_source , :text ],
739
+ [ :buyer_broker_type , :text ],
740
+ [ :middle_school , :text ],
741
+ [ :rm_kitchen2_desc , :text ],
742
+ [ :unit_num , :text ],
743
+ [ :sub_agent , :text ],
744
+ [ :ftr_miscellaneous , :text ],
745
+ [ :rm_kitchen_desc , :text ],
746
+ [ :valuation_yn , :text ],
747
+ [ :sub_agent_type , :text ],
748
+ [ :other_fee , :text ],
749
+ [ :rm_laundry , :text ],
750
+ [ :third_party_comm_yn , :text ],
751
+ [ :contr_broker , :text ],
752
+ [ :off_mkt_date , :text ],
753
+ [ :rm_laundry_desc , :text ],
754
+ [ :vt_yn , :text ],
755
+ [ :contr_broker_type , :text ],
756
+ [ :off_mkt_days , :text ],
757
+ [ :rm_living , :text ],
758
+ [ :ftr_warrantyprogrm , :text ],
759
+ [ :construction_date_comp , :text ],
760
+ [ :outlier_yn , :text ],
761
+ [ :rm_living_desc , :text ],
762
+ [ :wf_feet , :text ],
763
+ [ :ftr_construction , :text ],
764
+ [ :office_notes , :text ],
765
+ [ :rm_lrdr , :text ],
766
+ [ :ftr_waterheater , :text ],
767
+ [ :construction_status , :text ],
768
+ [ :onsite_yn , :text ],
769
+ [ :rm_lrdr_desc , :text ],
770
+ [ :ftr_watersupply , :text ],
771
+ [ :contacts , :text ],
772
+ [ :onsite_days_hours , :text ],
773
+ [ :rm_master , :text ],
774
+ [ :waterfront , :text ],
775
+ [ :ftr_cooling , :text ],
776
+ [ :orig_lp , :text ],
777
+ [ :rm_master_desc , :text ],
778
+ [ :ftr_window_treat , :text ],
779
+ [ :county , :text ],
780
+ [ :other_fee_type , :text ],
781
+ [ :rm_other1 , :text ],
782
+ [ :ftr_windows , :text ],
783
+ [ :df_yn , :text ],
784
+ [ :photo_count , :text ],
785
+ [ :rm_other1_desc , :text ],
786
+ [ :year_built , :text ],
787
+ [ :date_modified , :text ],
788
+ [ :photo_date_modified , :text ],
789
+ [ :rm_other1_name , :text ],
790
+ [ :year_built_source , :text ],
791
+ [ :status_date , :text ],
792
+ [ :prop_id , :text ],
793
+ [ :rm_other2 , :text ],
794
+ [ :zip , :text ],
795
+ [ :date_created , :text ],
796
+ [ :parcel_id , :text ],
797
+ [ :rm_other2_desc , :text ],
798
+ [ :proj_close_date , :text ],
799
+ [ :pending_date , :text ],
800
+ [ :rm_other2_name , :text ],
801
+ [ :withdrawn_date , :text ],
802
+ [ :media_flag , :text ],
803
+ [ :rm_other3 , :text ],
804
+ [ :virtual_tour , :text ],
805
+ [ :latitude , :float ],
806
+ [ :longitude , :float ]
807
+ ],
808
+ CabooseRets::SavedProperty => [
809
+ [ :user_id , :integer ],
810
+ [ :mls_acct , :integer ]
811
+ ],
812
+ CabooseRets::SavedSearch => [
813
+ [ :user_id , :integer ],
814
+ [ :params , :text ],
815
+ [ :date_created , :timestamp ],
816
+ [ :date_last , :timestamp ],
817
+ [ :interval , :integer ],
818
+ [ :property_type , :string ],
819
+ [ :uri , :text ],
820
+ [ :notify , :boolean ]
821
+ ]
822
+ }
823
+ end
824
+
825
+ def self.load_data
826
+ c = ActiveRecord::Base.connection
827
+ c.add_attachment :rets_agents , :image if !c.column_exists? :rets_agents, :image_file_name
828
+ c.add_attachment :rets_media , :image if !c.column_exists? :rets_agents, :image_file_name
829
+ c.add_attachment :rets_media , :file if !c.column_exists? :rets_media , :file_file_name
830
+ end
831
+
832
+ end