caboose-rets 0.0.2 → 0.0.3
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/commercial_controller.rb +3 -7
- data/app/controllers/caboose_rets/land_controller.rb +58 -10
- data/app/controllers/caboose_rets/multi_family_controller.rb +98 -0
- data/app/controllers/caboose_rets/residential_controller.rb +6 -7
- data/app/models/caboose_rets/commercial_property.rb +13 -14
- data/app/models/caboose_rets/land_property.rb +13 -14
- data/app/models/caboose_rets/multi_family_property.rb +5 -15
- data/app/models/caboose_rets/office.rb +1 -1
- data/app/models/caboose_rets/residential_property.rb +13 -14
- data/app/models/caboose_rets/rets_importer.rb +24 -36
- data/app/views/caboose_rets/residential/_search_form.html.erb +201 -0
- data/app/views/caboose_rets/residential/index.html.erb +46 -99
- data/config/routes.rb +56 -85
- data/lib/caboose_rets/version.rb +1 -1
- data/lib/tasks/caboose_rets.rake +1 -1
- metadata +8 -5
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NDY2ZmI0MGRhMDAxODUxNjg0ZTczMjA4YzJmYjNkNzE1N2YyY2IyZg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZTUyZjkzOGY4MDFjM2VjMDA4M2VmNWIxZDQ2OGEzOTMwODM4ZGQyNQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZjM0YWEyZjEwZDM2NDFmNWQ2YjUyZmQzNDI2NjM1ZGIyNmQ1ZGE3MDAyYmQ3
|
10
|
+
ODBiNjQ1Y2VmNjk0YjAwZTMyMDZkMjI1ZjllODJjNTc3NmQwNmM2M2Y4MzIx
|
11
|
+
NWM2ZjhlYTE0ODZlNDdiMGI0NWFkNzU0MDZkMmViZDI5MjI5OGE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ODc1ODE5MTU3YmU1ODRmMzYyODkwMGVhODQ2MGEzYzQwYjdlYzU1Mjk2NGYy
|
14
|
+
ZTExZmE3ZjIwMjQxZDk3ZTM5ZGRkNzc5ZDk4NTllZWVmMmQ5MmRkODkxOWQ3
|
15
|
+
Y2UwZmZkZDE1Yjc3YWQwMWJjZDgwY2JmZDUzY2RjM2IyZWY5YWM=
|
@@ -1,5 +1,5 @@
|
|
1
1
|
|
2
|
-
|
2
|
+
module CabooseRets
|
3
3
|
class CommercialController < ApplicationController
|
4
4
|
|
5
5
|
# GET /commercial
|
@@ -18,7 +18,7 @@ class CabooseRets
|
|
18
18
|
'lo_code' => '',
|
19
19
|
'address' => '',
|
20
20
|
},{
|
21
|
-
'model' => 'CommercialProperty',
|
21
|
+
'model' => 'CabooseRets::CommercialProperty',
|
22
22
|
'sort' => 'mls_acct',
|
23
23
|
'desc' => false,
|
24
24
|
'base_url' => '/commercial',
|
@@ -29,11 +29,7 @@ class CabooseRets
|
|
29
29
|
|
30
30
|
# GET /commercial/:mls_acct/details
|
31
31
|
def details
|
32
|
-
@property = CommercialProperty.where(:mls_acct => params[:mls_acct]).first
|
33
|
-
if @property.lo_code == '46'
|
34
|
-
@agent = Agent.where(:la_code => @property.la_code).first
|
35
|
-
end
|
36
|
-
@message = Message.new
|
32
|
+
@property = CommercialProperty.where(:mls_acct => params[:mls_acct]).first
|
37
33
|
end
|
38
34
|
|
39
35
|
#=============================================================================
|
@@ -4,31 +4,79 @@ module CabooseRets
|
|
4
4
|
|
5
5
|
# GET /land
|
6
6
|
def index
|
7
|
-
@gen = Caboose::PageBarGenerator.new(params, {
|
8
|
-
'
|
7
|
+
@gen = Caboose::PageBarGenerator.new(params, {
|
8
|
+
'acreage' => '',
|
9
|
+
'acreage_gte' => '',
|
10
|
+
'acreage_lte' => '',
|
11
|
+
'acreage_source' => '',
|
12
|
+
'adjoining_land_use' => '',
|
13
|
+
'agent_notes_like' => '',
|
14
|
+
'area' => '',
|
15
|
+
'bom_date' => '',
|
16
|
+
'city' => '',
|
17
|
+
'city_code' => '',
|
18
|
+
'co_la_code' => '',
|
19
|
+
'co_lo_code' => '',
|
20
|
+
'co_sa_code' => '',
|
21
|
+
'co_so_code' => '',
|
22
|
+
'converted' => '',
|
23
|
+
'county' => '',
|
24
|
+
'current_price_gte' => '',
|
25
|
+
'current_price_lte' => '',
|
26
|
+
'date_created_gte' => '',
|
27
|
+
'date_created_lte' => '',
|
28
|
+
'date_modified_gte' => '',
|
29
|
+
'date_modified_lte' => '',
|
30
|
+
'elem_school' => '',
|
31
|
+
'ftr_access_like' => '',
|
32
|
+
'ftr_lotdesc_like' => '',
|
33
|
+
'ftr_mineralrights' => '',
|
34
|
+
'ftr_zoning' => '',
|
35
|
+
'high_school' => '',
|
36
|
+
'internet_yn' => '',
|
37
|
+
'la_code' => '',
|
38
|
+
'list_date_gte' => '',
|
39
|
+
'list_date_lte' => '',
|
40
|
+
'list_price_gte' => '',
|
41
|
+
'list_price_lte' => '',
|
42
|
+
'lo_code' => '',
|
43
|
+
'middle_school' => '',
|
44
|
+
'mls_acct' => '',
|
45
|
+
'municipality' => '',
|
46
|
+
'parcel_id' => '',
|
47
|
+
'prop_type' => '',
|
48
|
+
'remarks_like' => '',
|
49
|
+
'sa_code' => '',
|
50
|
+
'so_code' => '',
|
51
|
+
'state' => '',
|
52
|
+
'status' => '',
|
53
|
+
'street_name_like' => '',
|
54
|
+
'street_num_like' => '',
|
55
|
+
'subdivision' => '',
|
56
|
+
'unit_num' => '',
|
57
|
+
'waterfront' => '',
|
58
|
+
'waterfront_yn' => '',
|
59
|
+
'zip' => ''
|
9
60
|
},{
|
10
|
-
'model' => '
|
61
|
+
'model' => 'CabooseRets::LandProperty',
|
11
62
|
'sort' => 'mls_acct',
|
12
63
|
'desc' => false,
|
13
64
|
'base_url' => '/land',
|
14
65
|
'items_per_page' => 10
|
15
66
|
})
|
16
|
-
|
67
|
+
|
17
68
|
@properties = @gen.items
|
18
69
|
if params[:waterfront].present? then @properties.reject!{|p| p.waterfront.blank?} end
|
19
|
-
if params[:ftr_lotdesc] == 'golf' then @properties.reject!{|p| p.ftr_lotdesc != 'golf'} end
|
20
|
-
#if params[:foreclosure] then @properties.reject!{|p| p.foreclosure_yn != "Y"} end
|
21
70
|
end
|
22
71
|
|
23
72
|
# GET /land/:mls_acct/details
|
24
73
|
def details
|
25
|
-
@property =
|
74
|
+
@property = CabooseRets::LandProperty.where(:mls_acct => params[:mls_acct]).first
|
26
75
|
if @property.nil?
|
27
76
|
@mls_acct = params[:mls_acct]
|
28
|
-
render 'land/
|
77
|
+
render 'land/not_exists'
|
29
78
|
return
|
30
|
-
end
|
31
|
-
@message = Message.new
|
79
|
+
end
|
32
80
|
end
|
33
81
|
|
34
82
|
#=============================================================================
|
@@ -0,0 +1,98 @@
|
|
1
|
+
|
2
|
+
module CabooseRets
|
3
|
+
class MultiFamilyController < ApplicationController
|
4
|
+
|
5
|
+
# GET /multi-family
|
6
|
+
def index
|
7
|
+
params[:street_num_like] = params[:street_name_like].tr('A-z', '').tr(' ', '') unless params[:street_name_like].nil?
|
8
|
+
unless params[:street_name_like].nil?
|
9
|
+
params[:street_name_like] = params[:street_name_like].tr('0-9', "")
|
10
|
+
until params[:street_name_like][0] != " " || params[:street_name_like] == ''
|
11
|
+
params[:street_name_like][0] = '' if params[:street_name_like][0].to_i == 0
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
@gen = Caboose::PageBarGenerator.new(params, {
|
16
|
+
'name' => '',
|
17
|
+
'current_price_gte' => '',
|
18
|
+
'current_price_lte' => '',
|
19
|
+
'bedrooms_gte' => '',
|
20
|
+
'bedrooms_lte' => '',
|
21
|
+
'prop_type' => '',
|
22
|
+
'tot_heat_sqft_gte' => '',
|
23
|
+
'tot_heat_sqft_lte' => '',
|
24
|
+
'neighborhood' => '',
|
25
|
+
'elem_school' => '',
|
26
|
+
'middle_school' => '',
|
27
|
+
'high_school' => '',
|
28
|
+
'address' => '',
|
29
|
+
'lo_lo_code' => '',
|
30
|
+
'remarks_like' => '',
|
31
|
+
'waterfront' => '',
|
32
|
+
'ftr_lotdesc_like' => '',
|
33
|
+
'mls_acct' => '',
|
34
|
+
'subdivision' => '',
|
35
|
+
'foreclosure_yn' => '',
|
36
|
+
'street_name_like' => '',
|
37
|
+
'street_num_like' => '',
|
38
|
+
'date_created_gte' => '',
|
39
|
+
'date_created_lte' => '',
|
40
|
+
'date_modified_gte' => '',
|
41
|
+
'date_modified_lte' => '',
|
42
|
+
'status' => ['active', 'pending']
|
43
|
+
},{
|
44
|
+
'model' => 'CabooseRets::MultiFamilyProperty',
|
45
|
+
'sort' => 'current_price ASC, mls_acct',
|
46
|
+
'desc' => false,
|
47
|
+
'base_url' => '/multi-family',
|
48
|
+
'items_per_page' => 10
|
49
|
+
})
|
50
|
+
@properties = @gen.items
|
51
|
+
end
|
52
|
+
|
53
|
+
# GET /multi_family/:mls_acct/details
|
54
|
+
def details
|
55
|
+
@property = MultiFamilyProperty.where(:mls_acct => params[:mls_acct]).first
|
56
|
+
if @property.nil?
|
57
|
+
@mls_acct = params[:mls_acct]
|
58
|
+
render 'multi_family/not_exists'
|
59
|
+
return
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
#=============================================================================
|
64
|
+
# Admin actions
|
65
|
+
#=============================================================================
|
66
|
+
|
67
|
+
# GET /admin/multi_family
|
68
|
+
def admin_index
|
69
|
+
return if !user_is_allowed('properties', 'view')
|
70
|
+
|
71
|
+
@gen = Caboose::PageBarGenerator.new(params, {
|
72
|
+
'mls_acct' => ''
|
73
|
+
},{
|
74
|
+
'model' => 'MultiFamilyProperty',
|
75
|
+
'sort' => 'mls_acct',
|
76
|
+
'desc' => false,
|
77
|
+
'base_url' => '/admin/multi_family'
|
78
|
+
})
|
79
|
+
@properties = @gen.items
|
80
|
+
render :layout => 'caboose/admin'
|
81
|
+
end
|
82
|
+
|
83
|
+
# GET /admin/multi_family/:mls_acct/edit
|
84
|
+
def admin_edit
|
85
|
+
return if !user_is_allowed('properties', 'edit')
|
86
|
+
@property = MultiFamilyProperty.where(:mls_acct => params[:mls_acct]).first
|
87
|
+
render :layout => 'caboose/admin'
|
88
|
+
end
|
89
|
+
|
90
|
+
# GET /admin/multi_family/:mls_acct/refresh
|
91
|
+
def admin_refresh
|
92
|
+
RetsMultiFamilyImporter.import_property(params[:mls_acct])
|
93
|
+
flash[:message] = "<p class='note success'>The property info has been updated from MLS.</p>"
|
94
|
+
render :json => Caboose::StdClass.new({ 'reload' => true })
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
98
|
+
end
|
@@ -26,7 +26,7 @@ module CabooseRets
|
|
26
26
|
'middle_school' => '',
|
27
27
|
'high_school' => '',
|
28
28
|
'address' => '',
|
29
|
-
'
|
29
|
+
'lo_lo_code' => '',
|
30
30
|
'remarks_like' => '',
|
31
31
|
'waterfront' => '',
|
32
32
|
'ftr_lotdesc_like' => '',
|
@@ -41,16 +41,15 @@ module CabooseRets
|
|
41
41
|
'date_modified_lte' => '',
|
42
42
|
'status' => ['active', 'pending']
|
43
43
|
},{
|
44
|
-
'model' => 'ResidentialProperty',
|
44
|
+
'model' => 'CabooseRets::ResidentialProperty',
|
45
45
|
'sort' => 'current_price ASC, mls_acct',
|
46
46
|
'desc' => false,
|
47
47
|
'base_url' => '/residential',
|
48
48
|
'items_per_page' => 10
|
49
49
|
})
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
@properties = @gen.items
|
50
|
+
|
51
|
+
@properties = @gen.items
|
52
|
+
|
54
53
|
if params[:waterfront].present? then @properties.reject!{|p| p.waterfront.blank?} end
|
55
54
|
if params[:ftr_lotdesc] == 'golf' then @properties.reject!{|p| p.ftr_lotdesc != 'golf'} end
|
56
55
|
#if params[:foreclosure] then @properties.reject!{|p| p.foreclosure_yn != "Y"} end
|
@@ -67,7 +66,7 @@ module CabooseRets
|
|
67
66
|
render 'residential/residential_not_exists'
|
68
67
|
return
|
69
68
|
end
|
70
|
-
|
69
|
+
#@message = Message.new
|
71
70
|
end
|
72
71
|
|
73
72
|
#=============================================================================
|
@@ -2,21 +2,20 @@
|
|
2
2
|
class CabooseRets::CommercialProperty < ActiveRecord::Base
|
3
3
|
self.table_name = "rets_commercial"
|
4
4
|
|
5
|
-
def agent
|
6
|
-
|
7
|
-
end
|
8
|
-
|
9
|
-
def office
|
10
|
-
return Office.where(:lo_code => self.lo_code).first
|
11
|
-
end
|
5
|
+
def agent() return CabooseRets::Agent.where(:la_code => self.la_code).first end
|
6
|
+
def office() return CabooseRets::Office.where(:lo_code => self.lo_code).first end
|
7
|
+
def images() return CabooseRets::Media.where(:mls_acct => self.mls_acct).order(:media_order).all end
|
12
8
|
|
13
|
-
def
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.
|
18
|
-
|
19
|
-
end
|
9
|
+
def self.geolocatable() all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL") end
|
10
|
+
#def self.property_types() self.pucs("prop_type" ).reject(&:empty?).sort end
|
11
|
+
#def self.statuses() self.pucs("status" ).reject(&:empty?).sort end
|
12
|
+
#def self.zips() self.pucs("zip" ).reject(&:empty?).sort end
|
13
|
+
#def self.cities() self.pucs("city" ).reject(&:empty?).sort end
|
14
|
+
#def self.counties() self.pucs("county" ).reject(&:empty?).sort end
|
15
|
+
#def self.subdivisions() self.pucs("subdivision" ).reject(&:empty?).sort end
|
16
|
+
#def self.elem_schools() self.pucs("elem_school" ).reject(&:empty?).sort end
|
17
|
+
#def self.middle_schools() self.pucs("middle_school" ).reject(&:empty?).sort end
|
18
|
+
#def self.high_schools() self.pucs("high_school" ).reject(&:empty?).sort end
|
20
19
|
|
21
20
|
def parse(data)
|
22
21
|
self.acreage = data['ACREAGE']
|
@@ -2,21 +2,20 @@
|
|
2
2
|
class CabooseRets::LandProperty < ActiveRecord::Base
|
3
3
|
self.table_name = "rets_land"
|
4
4
|
|
5
|
-
def agent
|
6
|
-
|
7
|
-
end
|
5
|
+
def agent() return CabooseRets::Agent.where(:la_code => self.la_code).first end
|
6
|
+
def office() return CabooseRets::Office.where(:lo_code => self.lo_code).first end
|
7
|
+
def images() return CabooseRets::Media.where(:mls_acct => self.mls_acct).order(:media_order).all end
|
8
8
|
|
9
|
-
def
|
10
|
-
|
11
|
-
end
|
12
|
-
|
13
|
-
def
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.
|
18
|
-
|
19
|
-
end
|
9
|
+
def self.geolocatable() all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL") end
|
10
|
+
#def self.property_types() self.unique_field("prop_type" ) end
|
11
|
+
#def self.statuses() self.unique_field("status" ) end
|
12
|
+
#def self.zips() self.unique_field("zip" ) end
|
13
|
+
#def self.cities() self.unique_field("city" ) end
|
14
|
+
#def self.counties() self.unique_field("county" ) end
|
15
|
+
#def self.subdivisions() self.unique_field("subdivision" ) end
|
16
|
+
#def self.elem_schools() self.unique_field("elem_school" ) end
|
17
|
+
#def self.middle_schools() self.unique_field("middle_school" ) end
|
18
|
+
#def self.high_schools() self.unique_field("high_school" ) end
|
20
19
|
|
21
20
|
def parse(data)
|
22
21
|
self.acreage = data['ACREAGE']
|
@@ -2,22 +2,12 @@
|
|
2
2
|
class CabooseRets::MultiFamilyProperty < ActiveRecord::Base
|
3
3
|
self.table_name = "rets_multi_family"
|
4
4
|
|
5
|
-
def agent
|
6
|
-
|
7
|
-
end
|
8
|
-
|
9
|
-
def
|
10
|
-
return Office.where(:lo_code => self.lo_code).first
|
11
|
-
end
|
5
|
+
def agent() return CabooseRets::Agent.where(:la_code => self.la_code).first end
|
6
|
+
def office() return CabooseRets::Office.where(:lo_code => self.lo_code).first end
|
7
|
+
def images() return CabooseRets::Media.where(:mls_acct => self.mls_acct).order(:media_order).all end
|
8
|
+
|
9
|
+
def self.geolocatable() all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL") end
|
12
10
|
|
13
|
-
def images
|
14
|
-
return Media.where(:mls_acct => self.id).order(:media_order).all
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.geolocatable
|
18
|
-
all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL")
|
19
|
-
end
|
20
|
-
|
21
11
|
def parse(data)
|
22
12
|
self.acreage = data['ACREAGE']
|
23
13
|
self.agent_notes = data['AGENT_NOTES']
|
@@ -9,7 +9,7 @@ class CabooseRets::Office < ActiveRecord::Base
|
|
9
9
|
self.lo_email = data['LO_EMAIL']
|
10
10
|
self.lo_fax_phone = data['LO_FAX_PHONE']
|
11
11
|
self.lo_idx_yn = data['LO_IDX_YN']
|
12
|
-
self.
|
12
|
+
self.lo_code = data['LO_LO_CODE']
|
13
13
|
self.lo_mailaddr1 = data['LO_MAILADDR1']
|
14
14
|
self.lo_mailaddr2 = data['LO_MAILADDR2']
|
15
15
|
self.lo_mailcity = data['LO_MAILCITY']
|
@@ -2,21 +2,20 @@
|
|
2
2
|
class CabooseRets::ResidentialProperty < ActiveRecord::Base
|
3
3
|
self.table_name = "rets_residential"
|
4
4
|
|
5
|
-
def agent
|
6
|
-
|
7
|
-
end
|
5
|
+
def agent() return CabooseRets::Agent.where(:la_code => self.la_code).first end
|
6
|
+
def office() return CabooseRets::Office.where(:lo_code => self.lo_code).first end
|
7
|
+
def images() return CabooseRets::Media.where(:mls_acct => self.mls_acct).order(:media_order).all end
|
8
8
|
|
9
|
-
def
|
10
|
-
|
11
|
-
end
|
12
|
-
|
13
|
-
def
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.
|
18
|
-
|
19
|
-
end
|
9
|
+
def self.geolocatable() all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL") end
|
10
|
+
#def self.property_types() self.uniq.pluck("prop_type" ).reject(&:empty?).sort end
|
11
|
+
#def self.statuses() self.uniq.pluck("status" ).reject(&:empty?).sort end
|
12
|
+
#def self.zips() self.uniq.pluck("zip" ).reject(&:empty?).sort end
|
13
|
+
#def self.cities() self.uniq.pluck("city" ).reject(&:empty?).sort end
|
14
|
+
#def self.counties() self.uniq.pluck("county" ).reject(&:empty?).sort end
|
15
|
+
#def self.subdivisions() self.uniq.pluck("subdivision" ).reject(&:empty?).sort end
|
16
|
+
#def self.elem_schools() self.uniq.pluck("elem_school" ).reject(&:empty?).sort end
|
17
|
+
#def self.middle_schools() self.uniq.pluck("middle_school" ).reject(&:empty?).sort end
|
18
|
+
#def self.high_schools() self.uniq.pluck("high_school" ).reject(&:empty?).sort end
|
20
19
|
|
21
20
|
def parse(data)
|
22
21
|
self.bedrooms = data['BEDROOMS']
|
@@ -2,10 +2,7 @@ require 'ruby-rets'
|
|
2
2
|
require 'httparty'
|
3
3
|
require 'json'
|
4
4
|
|
5
|
-
# Check for examples:
|
6
5
|
# http://rets.solidearth.com/ClientHome.aspx
|
7
|
-
# https://www.flexmls.com/developers/rets/tutorials/dmql-tutorial/
|
8
|
-
# https://www.flexmls.com/developers/rets/tutorials/how-to-efficiently-replicate-rets-data/
|
9
6
|
|
10
7
|
class CabooseRets::RetsImporter # < ActiveRecord::Base
|
11
8
|
|
@@ -83,10 +80,13 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
83
80
|
# Main updater
|
84
81
|
#=============================================================================
|
85
82
|
|
86
|
-
def self.update_after(date_modified)
|
87
|
-
self.
|
88
|
-
|
89
|
-
|
83
|
+
def self.update_after(date_modified)
|
84
|
+
self.update_data_after(date_modified)
|
85
|
+
self.update_images_after(date_modified)
|
86
|
+
end
|
87
|
+
|
88
|
+
def self.update_data_after(date_modified)
|
89
|
+
self.get_config if @@config.nil? || @@config['url'].nil?
|
90
90
|
self.import_modified_after(date_modified, 'Agent' , 'AGT')
|
91
91
|
self.import_modified_after(date_modified, 'Office' , 'OFF')
|
92
92
|
self.import_modified_after(date_modified, 'OpenHouse' , 'OPH')
|
@@ -94,9 +94,11 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
94
94
|
self.import_modified_after(date_modified, 'Property' , 'LND')
|
95
95
|
self.import_modified_after(date_modified, 'Property' , 'MUL')
|
96
96
|
self.import_modified_after(date_modified, 'Property' , 'RES')
|
97
|
-
|
98
|
-
|
99
|
-
|
97
|
+
self.update_coords
|
98
|
+
end
|
99
|
+
|
100
|
+
def self.update_images_after(date_modified)
|
101
|
+
self.get_config if @@config.nil? || @@config['url'].nil?
|
100
102
|
self.download_agent_images_modified_after(date_modified)
|
101
103
|
self.download_property_images_modified_after(date_modified)
|
102
104
|
end
|
@@ -197,7 +199,8 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
197
199
|
#=============================================================================
|
198
200
|
|
199
201
|
def self.download_property_images_modified_after(date_modified)
|
200
|
-
[CommercialProperty, LandProperty, MultiFamilyProperty, ResidentialProperty]
|
202
|
+
models = [CabooseRets::CommercialProperty, CabooseRets::LandProperty, CabooseRets::MultiFamilyProperty, CabooseRets::ResidentialProperty]
|
203
|
+
models.each do |model|
|
201
204
|
model.where("photo_date_modified > ?", date_modified.strftime('%FT%T')).each do |p|
|
202
205
|
self.download_property_images(p)
|
203
206
|
end
|
@@ -243,29 +246,16 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
243
246
|
# GPS
|
244
247
|
#=============================================================================
|
245
248
|
|
246
|
-
def self.update_coords(p
|
247
|
-
if
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
end
|
254
|
-
end
|
255
|
-
|
256
|
-
def self.update_property_coords(property_class, symbolic_name, property = nil)
|
257
|
-
if (property.nil?)
|
258
|
-
if (property_class.where(:latitude => nil).count == 0)
|
259
|
-
self.log "All #{symbolic_name} properties have GPS coordinates."
|
260
|
-
return
|
249
|
+
def self.update_coords(p = nil)
|
250
|
+
if p.nil?
|
251
|
+
models = [CabooseRets::CommercialProperty, CabooseRets::LandProperty, CabooseRets::MultiFamilyProperty, CabooseRets::ResidentialProperty]
|
252
|
+
models.each do |model|
|
253
|
+
model.where(:latitude => nil).reorder(:mls_acct).each do |p|
|
254
|
+
self.update_coords(p)
|
255
|
+
end
|
261
256
|
end
|
262
|
-
property_class.where(:latitude => nil).reorder(:mls_acct).each do |p|
|
263
|
-
self.update_property_coords(property_class, symbolic_name, p)
|
264
|
-
end
|
265
|
-
self.update_property_coords(property_class, symbolic_name, nil)
|
266
257
|
return
|
267
258
|
end
|
268
|
-
p = property
|
269
259
|
|
270
260
|
coords = self.coords_from_address(CGI::escape "#{p.street_num} #{p.street_name}, #{p.city}, #{p.state} #{p.zip}")
|
271
261
|
return if coords.nil? || coords == false
|
@@ -273,14 +263,13 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
273
263
|
p.latitude = coords['lat']
|
274
264
|
p.longitude = coords['lng']
|
275
265
|
p.save
|
276
|
-
self.log "Saved
|
266
|
+
self.log "Saved coords for mls_acct #{p.mls_acct}"
|
277
267
|
end
|
278
268
|
|
279
269
|
def self.coords_from_address(address)
|
280
270
|
begin
|
281
271
|
uri = "https://maps.googleapis.com/maps/api/geocode/json?address=#{address}&sensor=false"
|
282
|
-
uri.gsub!(" ", "+")
|
283
|
-
|
272
|
+
uri.gsub!(" ", "+")
|
284
273
|
resp = HTTParty.get(uri)
|
285
274
|
json = JSON.parse(resp.body)
|
286
275
|
return json['results'][0]['geometry']['location']
|
@@ -298,6 +287,5 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
|
|
298
287
|
def self.log(msg)
|
299
288
|
puts "[rets_importer] #{msg}"
|
300
289
|
Rails.logger.info("[rets_importer] #{msg}")
|
301
|
-
end
|
302
|
-
|
290
|
+
end
|
303
291
|
end
|
@@ -0,0 +1,201 @@
|
|
1
|
+
|
2
|
+
<label onclick="toggle_slide('residential_search_form');">Search Form</label>
|
3
|
+
|
4
|
+
<div class='search_form' id='residential_search_form' style='display: none;'>
|
5
|
+
<form action="/residential" method="get" id='search_form'>
|
6
|
+
<ul>
|
7
|
+
<li class='price_range'>
|
8
|
+
<label>Price Range</label>
|
9
|
+
<div>
|
10
|
+
<select id="current_price_gte" name="current_price_gte">
|
11
|
+
<option value="" selected="selected">Select</option>
|
12
|
+
<% (10000..50000).step(10000) do |x| %><option value="<%= x %>"><%= number_to_currency(x, :precision => 0) %></option><% end %>
|
13
|
+
<% (100000..950000).step(50000) do |x| %><option value="<%= x %>"><%= number_to_currency(x, :precision => 0) %></option><% end %>
|
14
|
+
<option value="1000000">$1,000,000+</option>
|
15
|
+
</select>
|
16
|
+
<span>To</span>
|
17
|
+
<select id="current_price_lte" name="current_price_lte">
|
18
|
+
<option value="" selected="selected">Select</option>
|
19
|
+
<% (10000..50000).step(10000) do |x| %><option value="<%= x %>"><%= number_to_currency(x, :precision => 0) %></option><% end %>
|
20
|
+
<% (100000..950000).step(50000) do |x| %><option value="<%= x %>"><%= number_to_currency(x, :precision => 0) %></option><% end %>
|
21
|
+
<option value="1000000">$1,000,000+</option>
|
22
|
+
</select>
|
23
|
+
</div>
|
24
|
+
</li>
|
25
|
+
|
26
|
+
<li class='bedroom_count'>
|
27
|
+
<label>How Many Beds?</label>
|
28
|
+
<div>
|
29
|
+
<select id="bedrooms_gte" name="bedrooms_gte">
|
30
|
+
<option value="">Any</option>
|
31
|
+
<% (1..5).each do |x| %><option value="<%= x %>"><%= x %></option><% end %>
|
32
|
+
</select>
|
33
|
+
<span>To</span>
|
34
|
+
<select id="bedrooms_lte" name="bedrooms_lte">
|
35
|
+
<option value="">Any</option>
|
36
|
+
<% (1..5).each do |x| %><option value="<%= x %>"><%= x %></option><% end %>
|
37
|
+
</select>
|
38
|
+
</div>
|
39
|
+
</li>
|
40
|
+
|
41
|
+
<li class='property_type'>
|
42
|
+
<label>Property Type</label>
|
43
|
+
<div>
|
44
|
+
<select id="prop_type" name="prop_type">
|
45
|
+
<option value="">Select</option>
|
46
|
+
<% @types.each do |f| %><option value="<%= f %>"> <%= f.titleize %></option><% end %>
|
47
|
+
</select>
|
48
|
+
</div>
|
49
|
+
</li>
|
50
|
+
|
51
|
+
<li class='mls_acct'>
|
52
|
+
<label>MLS #</label>
|
53
|
+
<div><input class="search-input" id="mls_acct" name="mls_acct" type="text" placeholder="Enter Here" /></div>
|
54
|
+
</li>
|
55
|
+
|
56
|
+
<li class='square_footage'>
|
57
|
+
<label>Square Feet</label>
|
58
|
+
<div>
|
59
|
+
<select id="tot_heat_sqft_gte" name="tot_heat_sqft_gte">
|
60
|
+
<option value="" selected="selected">Select</option>
|
61
|
+
<% (250..4000).step(250) do |x| %><option value="<%= x %>"><%= x %></option><% end %>
|
62
|
+
</select>
|
63
|
+
<span>To</span>
|
64
|
+
<select id="tot_heat_sqft_lte" name="tot_heat_sqft_lte">
|
65
|
+
<option value="" selected="selected">Select</option>
|
66
|
+
<% (250..4000).step(250) do |x| %><option value="<%= x %>"><%= x %></option><% end %>
|
67
|
+
</select>
|
68
|
+
</div>
|
69
|
+
</li>
|
70
|
+
|
71
|
+
<li class='neighborhood'>
|
72
|
+
<label>Neighborhood</label>
|
73
|
+
<div>
|
74
|
+
<select id="subdivision" name="subdivision">
|
75
|
+
<option value="">Neighborhood</option>
|
76
|
+
<% @subdivisions.each do |f| %><option value="<%= f %>"><%= f.titleize %></option><% end %>
|
77
|
+
</select>
|
78
|
+
</div>
|
79
|
+
</li>
|
80
|
+
|
81
|
+
<li class='elem_school'>
|
82
|
+
<label>Elementary School</label>
|
83
|
+
<div>
|
84
|
+
<select id="elem_school" name="elem_school">
|
85
|
+
<option value="">Select</option>
|
86
|
+
<% @elem_schools.each do |f| %><option value="<%= f %>"><%= f.titleize %></option><% end %>
|
87
|
+
</select>
|
88
|
+
</div>
|
89
|
+
</li>
|
90
|
+
|
91
|
+
<li class='middle_school'>
|
92
|
+
<label>Middle School</label>
|
93
|
+
<div>
|
94
|
+
<select id="middle_school" name="middle_school">
|
95
|
+
<option value="">Select</option>
|
96
|
+
<% @middle_schools.each do |f| %><option value="<%= f %>"><%= f.titleize %></option><% end %>
|
97
|
+
</select>
|
98
|
+
</div>
|
99
|
+
</li>
|
100
|
+
|
101
|
+
<li class='high_school'>
|
102
|
+
<label>High School</label>
|
103
|
+
<div>
|
104
|
+
<select id="high_school" name="high_school">
|
105
|
+
<option value="">Select</option>
|
106
|
+
<% @high_schools.each do |f| %><option value="<%= f %>"><%= f.titleize %></option><% end %>
|
107
|
+
</select>
|
108
|
+
</div>
|
109
|
+
</li>
|
110
|
+
|
111
|
+
<li class='street'>
|
112
|
+
<label>Street</label>
|
113
|
+
<div><input id="street_name_like" name="street_name_like" type="text" placeholder="Street" /></div>
|
114
|
+
</li>
|
115
|
+
|
116
|
+
<li class='remarks'>
|
117
|
+
<label>Search Keyword</label>
|
118
|
+
<div><input id="remarks" name="remarks_like" type="text" placeholder="Keywords" /></div>
|
119
|
+
</li>
|
120
|
+
|
121
|
+
<li class='waterfront'>
|
122
|
+
<label>Waterfront</label>
|
123
|
+
<div>
|
124
|
+
<select id="waterfront" name="waterfront">
|
125
|
+
<option value="" selected="selected">Select</option>
|
126
|
+
<option value="Y">Yes</option>
|
127
|
+
<option value="">No</option>
|
128
|
+
</select>
|
129
|
+
</div>
|
130
|
+
</li>
|
131
|
+
|
132
|
+
<li class='golf'>
|
133
|
+
<label class="h-float-right">Golf Course</label>
|
134
|
+
<div>
|
135
|
+
<select id="ftr_lotdesc_like" name="ftr_lotdesc_like">
|
136
|
+
<option value="" selected="selected">Select</option>
|
137
|
+
<option value="golf">Yes</option>
|
138
|
+
<option value="">No</option>
|
139
|
+
</select>
|
140
|
+
</div>
|
141
|
+
</li>
|
142
|
+
|
143
|
+
<li class='latest'>
|
144
|
+
<label>Show listings created when?</label>
|
145
|
+
<div>
|
146
|
+
<select id="date_created_gte" name="date_created_gte">
|
147
|
+
<option value="">All Listings</option>
|
148
|
+
<% d = DateTime.now - 3 %><option value="<%= d.strftime('%F') %>">In the past 3 days</option>
|
149
|
+
<% d = DateTime.now - 7 %><option value="<%= d.strftime('%F') %>">In the past 7 days</option>
|
150
|
+
<% d = DateTime.now - 30 %><option value="<%= d.strftime('%F') %>">In the past month</option>
|
151
|
+
</select>
|
152
|
+
</div>
|
153
|
+
</li>
|
154
|
+
|
155
|
+
<li class='property_status'>
|
156
|
+
<label>Property Status</label>
|
157
|
+
<div>
|
158
|
+
<select id="status" name="status">
|
159
|
+
<option value="">All</option>
|
160
|
+
<% @statuses.each do |x| %><option value="<%= x %>" <% if x == 'Active'%> selected="selected" <% end %> ><%= x %></option><% end %>
|
161
|
+
</select>
|
162
|
+
</div>
|
163
|
+
</li>
|
164
|
+
</ul>
|
165
|
+
|
166
|
+
<p><input type="submit" value="Search" onclick='search_properties(); return false;' /></p>
|
167
|
+
</form>
|
168
|
+
</div>
|
169
|
+
|
170
|
+
<% content_for :js do %>
|
171
|
+
<script type='text/javascript'>
|
172
|
+
|
173
|
+
function input_val(el) {
|
174
|
+
t = $(el).attr('type');
|
175
|
+
if (t == 'button' || t == 'submit')
|
176
|
+
return false;
|
177
|
+
val = $(el).val();
|
178
|
+
if (val.length > 0)
|
179
|
+
return "" + $(el).attr('id') + "=" + val;
|
180
|
+
}
|
181
|
+
function search_properties() {
|
182
|
+
data = []
|
183
|
+
$('#search_form input' ).each(function(i, el) { v = input_val(el); if (v) data[data.length] = v; });
|
184
|
+
$('#search_form select' ).each(function(i, el) { v = input_val(el); if (v) data[data.length] = v; });
|
185
|
+
data = data.join('&');
|
186
|
+
if (data.length > 0)
|
187
|
+
data = "?" + data
|
188
|
+
window.location = '/residential' + data
|
189
|
+
}
|
190
|
+
|
191
|
+
function toggle_slide(el)
|
192
|
+
{
|
193
|
+
var div = $('#' + el);
|
194
|
+
if (div.is(":visible"))
|
195
|
+
div.slideUp();
|
196
|
+
else
|
197
|
+
div.slideDown();
|
198
|
+
}
|
199
|
+
|
200
|
+
</script>
|
201
|
+
<% end %>
|
@@ -1,102 +1,49 @@
|
|
1
|
-
<div class="l-wrapper">
|
2
|
-
<a class="m-btn h-space-mtm" href="/search/residential">Search Residential Listings</a>
|
3
|
-
|
4
|
-
<div class="l-sidebar-border inflate-tenor-baritone h-space-pvm">
|
5
|
-
<div class="sidebar-body l-grid-border">
|
6
|
-
<p></p>
|
7
|
-
<div class="l-grid inflate-baritone-bass listing">
|
8
|
-
<% if @properties.nil? || @properties == [] %>
|
9
|
-
<div class='no-results'>No results found</div>
|
10
|
-
<% else %>
|
11
|
-
<% @properties.each do |p| %>
|
12
|
-
<div class='grid-row'>
|
13
|
-
<div class='grid-unit-1of4 list-part' id='list1'>
|
14
|
-
<a href="/residential/<%= p.mls_acct %>/details"><img src='https://s3.amazonaws.com/advantagerealtygroup.com/residential/<%= p.mls_acct %>_1_thumb.jpg' width="400" /></a><br>
|
15
|
-
<div id='list-meta'>
|
16
|
-
<span class='address'><% if !p.unit_num.nil? && p.unit_num.strip.length > 0 %>Unit <%= p.unit_num %>, <% end %><%= p.street_num %> <%= p.street_name.titleize %></span><br> <!-- , {city}, {state} {zip} -->
|
17
|
-
<% if p.lo_code != '46' %>
|
18
|
-
<span class="nonadvantage_agent"><% if p.owner_name && p.office && p.office.name %>Listing Courtesy of <%= p.office.name.titleize %><% end %></span>
|
19
|
-
<% else %>
|
20
|
-
<span class="advantage_agent"><% if p.agent %>Listing Courtesy of <%= p.agent.first_name.titleize %> <%= p.agent.last_name.titleize %><% end %></span>
|
21
|
-
<% end %>
|
22
|
-
</div>
|
23
|
-
</div>
|
24
|
-
|
25
|
-
<div class='grid-unit-1of4 list-part' id='list2'>
|
26
|
-
<% if p.current_price != 0 %><span class='price'><%=h number_to_currency(p.current_price, :precision => 0) %></span><br><% end %>
|
27
|
-
<% if p.foreclosure_yn == 'Y' %> <span class='list-info' style='font-size: 0.8em;'>(Foreclosure)</span><br> <% end %>
|
28
|
-
<div class="info-meta">
|
29
|
-
<span class='list-info'>Sq. footage: <span class='sqfeet'> <%= p.tot_heat_sqft %></span></span> <br>
|
30
|
-
<span class='list-info'>Bedrooms: <%= p.bedrooms %></span> <br>
|
31
|
-
<span class='list-info'>Full baths: <%= p.baths_full %></span> <br>
|
32
|
-
<span class='list-info'>Half baths: <%= p.baths_half %></span> <br>
|
33
|
-
</div>
|
34
|
-
<span>MLS#: <%= p.mls_acct %></span>
|
35
|
-
</div>
|
36
1
|
|
37
|
-
|
38
|
-
<div class="list-schools">
|
39
|
-
Schools:<br>
|
40
|
-
<span class="school"> Elementary - <%= p.elem_school.titleize %></span> <br>
|
41
|
-
<span class="school">Middle - <%= p.middle_school.titleize %></span> <br>
|
42
|
-
<span class="school">High - <%= p.high_school.titleize %></span> <br>
|
43
|
-
</div>
|
44
|
-
<div class='desc-container'>
|
45
|
-
<span class='description'><%= p.remarks %></span>
|
46
|
-
</div>
|
47
|
-
</div>
|
2
|
+
<%= render :partial => 'caboose_rets/residential/search_form' %>
|
48
3
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
<% else %>
|
59
|
-
<a href="/agents/048540000" class="m-btn-ornate">
|
60
|
-
<div class="btn-inner contact-btn">Contact Advantage</div>
|
61
|
-
</a>
|
62
|
-
<% end %>
|
63
|
-
<br>
|
64
|
-
<% unless defined? p.virtual_tour && p.virtual_tour %>
|
65
|
-
<a href="<%= p.virtual_tour %>" class="m-btn-ornate">
|
66
|
-
<div class="btn-inner contact-btn">Take Virtual Tour</div>
|
67
|
-
</a>
|
68
|
-
<% end %>
|
69
|
-
</div>
|
70
|
-
</div>
|
71
|
-
<% end %>
|
72
|
-
<%= @gen.generate.html_safe %>
|
4
|
+
<div class='listings'>
|
5
|
+
<% if @properties.nil? || @properties == [] %>
|
6
|
+
<div class='no-results'>No results found</div>
|
7
|
+
<% else %>
|
8
|
+
<ul>
|
9
|
+
<% @properties.each do |p| %>
|
10
|
+
<li>
|
11
|
+
<% if p.images && p.images.count > 0 %>
|
12
|
+
<div class='image'><a href="/residential/<%= p.mls_acct %>/details"><img src="<%= p.images[0].url(:thumb) %>" /></a></div>
|
73
13
|
<% end %>
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
</
|
102
|
-
<% end %>
|
14
|
+
<div class="address"><% if !p.unit_num.nil? && p.unit_num.strip.length > 0 %>Unit <%= p.unit_num %>, <% end %><%= p.street_num %> <%= p.street_name.titleize %></div>
|
15
|
+
<% if p.agent %>
|
16
|
+
<div class="agent">
|
17
|
+
Listing Courtesy of <%= p.agent.first_name.titleize %> <%= p.agent.last_name.titleize %>
|
18
|
+
<% if p.office %> with <%= p.office.name.titleize %><% end %>
|
19
|
+
</div>
|
20
|
+
<% end %>
|
21
|
+
<% if p.current_price != 0 %><span class='price' >$<%= p.current_price %></span><% end %>
|
22
|
+
<% if p.foreclosure_yn == 'Y' %><span class='foreclosure' >(Foreclosure)</span><% end %>
|
23
|
+
<ul class="meta">
|
24
|
+
<li class='sq_footage' ><label>Sq. footage: </label><span><%= p.tot_heat_sqft %></span></li>
|
25
|
+
<li class='bedrooms' ><label>Bedrooms: </label><span><%= p.bedrooms %></span></li>
|
26
|
+
<li class='full_baths' ><label>Full baths: </label><span><%= p.baths_full %></span></li>
|
27
|
+
<li class='half_baths' ><label>Half baths: </label><span><%= p.baths_half %></span></li>
|
28
|
+
</div>
|
29
|
+
<ul class='schools'>
|
30
|
+
<li><label>Elementary: </label><span><%= p.elem_school.titleize %><span></li>
|
31
|
+
<li><label>Middle: </label><span><%= p.middle_school.titleize %><span></li>
|
32
|
+
<li><label>High: </label><span><%= p.high_school.titleize %><span></li>
|
33
|
+
</ul>
|
34
|
+
<div class='mls_acct'><label>MLS#: </label><span><%= p.mls_acct %></span></div>
|
35
|
+
<div class='remarks'><%= p.remarks %></div>
|
36
|
+
<div class='more_details'><a href='/residential/<%= p.mls_acct %>/details'>MORE DETAILS</a></div>
|
37
|
+
<% if p.agent || p.office %>
|
38
|
+
<div class='contact lo_code_<%= p.lo_code %>'>Contact
|
39
|
+
<% if p.agent %><a href="/agents/<%= p.la_code %>"><%= p.agent.first_name.titleize %> <%= p.agent.last_name.titleize %></a>
|
40
|
+
<% else %><a href="/offices/<%= p.lo_code %>"><%= p.office.name %></a><% end %>
|
41
|
+
</div>
|
42
|
+
<% end %>
|
43
|
+
<% if p.virtual_tour %><div class='virtual_tour'><a href="<%= p.virtual_tour %>">Take Virtual Tour</a></div><% end %>
|
44
|
+
</li>
|
45
|
+
<% end %>
|
46
|
+
</ul>
|
47
|
+
<%= @gen.generate.html_safe %>
|
48
|
+
<% end %>
|
49
|
+
</div>
|
data/config/routes.rb
CHANGED
@@ -1,87 +1,58 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
get
|
4
|
-
|
5
|
-
get
|
6
|
-
get
|
7
|
-
|
8
|
-
get
|
9
|
-
|
10
|
-
get
|
11
|
-
get
|
12
|
-
|
1
|
+
CabooseRets::Engine.routes.draw do
|
2
|
+
|
3
|
+
get "agents" => "agents#index"
|
4
|
+
get "agents/:la_code" => "agents#details"
|
5
|
+
get "agents/:la_code/listings" => "agents#listings"
|
6
|
+
get "admin/agents" => "agents#admin_index"
|
7
|
+
get "admin/agents/assistant-to-options" => "agents#admin_assistant_to_options"
|
8
|
+
get "admin/agents/agent_options" => "agents#agent_options"
|
9
|
+
get "admin/agents/:id/edit" => "agents#admin_edit"
|
10
|
+
get "admin/agents/:id/edit-bio" => "agents#admin_edit_bio"
|
11
|
+
get "admin/agents/:id/edit-contact-info" => "agents#admin_edit_contact_info"
|
12
|
+
get "admin/agents/:id/edit-mls-info" => "agents#admin_edit_mls_info"
|
13
|
+
get "admin/agents/:id/refresh" => "agents#admin_refresh"
|
14
|
+
put "admin/agents/:id" => "agents#admin_update"
|
15
|
+
post "admin/agents/:id" => "agents#admin_update"
|
16
|
+
|
17
|
+
get "open-houses" => "open_houses#index"
|
18
|
+
get "open-houses/:id" => "open_houses#details"
|
19
|
+
get "admin/open-houses/new" => "open_houses#admin_new"
|
20
|
+
post "admin/open-houses" => "open_houses#admin_add"
|
21
|
+
|
22
|
+
get "commercial" => "commercial#index"
|
23
|
+
get "commercial/:mls_acct/details" => "commercial#details"
|
24
|
+
get "commercial/:mls_acct" => "commercial#details"
|
25
|
+
get "admin/commercial" => "commercial#admin_index"
|
26
|
+
get "admin/commercial/:mls_acct/edit" => "commercial#admin_edit"
|
27
|
+
get "admin/commercial/:mls_acct/refresh" => "commercial#admin_refresh"
|
28
|
+
put "admin/commercial/:mls_acct" => "commercial#admin_update"
|
29
|
+
post "admin/commercial/:mls_acct" => "commercial#admin_update"
|
30
|
+
|
31
|
+
get "residential" => "residential#index"
|
32
|
+
get "residential/:mls_acct/details" => "residential#details"
|
33
|
+
get "residential/:mls_acct" => "residential#details"
|
34
|
+
get "admin/residential" => "residential#admin_index"
|
35
|
+
get "admin/residential/:mls_acct/edit" => "residential#admin_edit"
|
36
|
+
get "admin/residential/:mls_acct/refresh" => "residential#admin_refresh"
|
37
|
+
put "admin/residential/:mls_acct" => "residential#admin_update"
|
38
|
+
post "admin/residential/:mls_acct" => "residential#admin_update"
|
39
|
+
|
40
|
+
get "land" => "land#index"
|
41
|
+
get "land/:mls_acct/details" => "land#details"
|
42
|
+
get "land/:mls_acct" => "land#details"
|
43
|
+
get "admin/land" => "land#admin_index"
|
44
|
+
get "admin/land/:mls_acct/edit" => "land#admin_edit"
|
45
|
+
get "admin/land/:mls_acct/refresh" => "land#admin_refresh"
|
46
|
+
put "admin/land/:mls_acct" => "land#admin_update"
|
47
|
+
post "admin/land/:mls_acct" => "land#admin_update"
|
48
|
+
|
49
|
+
get "multi-family" => "multi_family#index"
|
50
|
+
get "multi-family/:mls_acct/details" => "multi_family#details"
|
51
|
+
get "multi-family/:mls_acct" => "multi_family#details"
|
52
|
+
get "admin/multi-family" => "multi_family#admin_index"
|
53
|
+
get "admin/multi-family/:mls_acct/edit" => "multi_family#admin_edit"
|
54
|
+
get "admin/multi-family/:mls_acct/refresh" => "multi_family#admin_refresh"
|
55
|
+
put "admin/multi-family/:mls_acct" => "multi_family#admin_update"
|
56
|
+
post "admin/multi-family/:mls_acct" => "multi_family#admin_update"
|
13
57
|
|
14
|
-
get "admin/users" => "users#index"
|
15
|
-
get "admin/users/options" => "users#options"
|
16
|
-
get "admin/users/new" => "users#new"
|
17
|
-
get "admin/users/:id/edit-password" => "users#edit_password"
|
18
|
-
get "admin/users/:id/edit" => "users#edit"
|
19
|
-
put "admin/users/:id" => "users#update"
|
20
|
-
post "admin/users" => "users#create"
|
21
|
-
delete "admin/users/:id" => "users#destroy"
|
22
|
-
|
23
|
-
get "admin/roles" => "roles#index"
|
24
|
-
get "admin/roles/options" => "roles#options"
|
25
|
-
get "admin/roles/new" => "roles#new"
|
26
|
-
get "admin/roles/:id/edit" => "roles#edit"
|
27
|
-
put "admin/roles/:id" => "roles#update"
|
28
|
-
post "admin/roles" => "roles#create"
|
29
|
-
delete "admin/roles/:id" => "roles#destroy"
|
30
|
-
|
31
|
-
get "admin/permissions" => "permissions#index"
|
32
|
-
get "admin/permissions/options" => "permissions#options"
|
33
|
-
get "admin/permissions/new" => "permissions#new"
|
34
|
-
get "admin/permissions/:id/edit" => "permissions#edit"
|
35
|
-
put "admin/permissions/:id" => "permissions#update"
|
36
|
-
post "admin/permissions" => "permissions#create"
|
37
|
-
delete "admin/permissions/:id" => "permissions#destroy"
|
38
|
-
|
39
|
-
get "admin/settings" => "settings#index"
|
40
|
-
get "admin/settings/options" => "settings#options"
|
41
|
-
get "admin/settings/new" => "settings#new"
|
42
|
-
get "admin/settings/:id/edit" => "settings#edit"
|
43
|
-
put "admin/settings/:id" => "settings#update"
|
44
|
-
post "admin/settings" => "settings#create"
|
45
|
-
delete "admin/settings/:id" => "settings#destroy"
|
46
|
-
|
47
|
-
#get "pages" => "pages#index"
|
48
|
-
get "pages/:id" => "pages#show"
|
49
|
-
get "pages/:id/redirect" => "pages#redirect"
|
50
|
-
get "admin/pages/sitemap-options" => "pages#admin_sitemap_options"
|
51
|
-
get "admin/pages/robots-options" => "pages#admin_robots_options"
|
52
|
-
get "admin/pages/format-options" => "pages#admin_content_format_options"
|
53
|
-
get "admin/pages/new" => "pages#admin_new"
|
54
|
-
get "admin/pages/:id/uri" => "pages#admin_page_uri"
|
55
|
-
get "admin/pages/:id/delete" => "pages#admin_delete_form"
|
56
|
-
get "admin/pages/:id/sitemap" => "pages#admin_sitemap"
|
57
|
-
get "admin/pages/:id/edit" => "pages#admin_edit_general"
|
58
|
-
get "admin/pages/:id/css" => "pages#admin_edit_css"
|
59
|
-
get "admin/pages/:id/js" => "pages#admin_edit_js"
|
60
|
-
get "admin/pages/:id/seo" => "pages#admin_edit_seo"
|
61
|
-
get "admin/pages/:id/content" => "pages#admin_edit_content"
|
62
|
-
put "admin/pages/:id" => "pages#admin_update"
|
63
|
-
get "admin/pages" => "pages#admin_index"
|
64
|
-
post "admin/pages" => "pages#admin_create"
|
65
|
-
delete "admin/pages/:id" => "pages#admin_delete"
|
66
|
-
|
67
|
-
get "posts" => "posts#index"
|
68
|
-
get "posts/:id" => "posts#detail"
|
69
|
-
get "admin/posts/category-options" => "posts#admin_category_options"
|
70
|
-
get "admin/posts/new" => "posts#admin_new"
|
71
|
-
get "admin/posts/:id/delete" => "posts#admin_delete_form"
|
72
|
-
get "admin/posts/:id/edit" => "posts#admin_edit_general"
|
73
|
-
get "admin/posts/:id/content" => "posts#admin_edit_content"
|
74
|
-
get "admin/posts/:id/categories" => "posts#admin_edit_categories"
|
75
|
-
get "admin/posts/:id/add-to-category" => "posts#admin_add_to_category"
|
76
|
-
get "admin/posts/:id/remove-from-category" => "posts#admin_remove_from_category"
|
77
|
-
get "admin/posts/:id/delete" => "posts#admin_delete_form"
|
78
|
-
put "admin/posts/:id" => "posts#admin_update"
|
79
|
-
post "admin/posts/:id" => "posts#admin_update"
|
80
|
-
get "admin/posts" => "posts#admin_index"
|
81
|
-
post "admin/posts" => "posts#admin_add"
|
82
|
-
delete "admin/posts/:id" => "posts#admin_delete"
|
83
|
-
|
84
|
-
match '*path' => 'pages#show'
|
85
|
-
root :to => 'pages#show'
|
86
|
-
|
87
58
|
end
|
data/lib/caboose_rets/version.rb
CHANGED
data/lib/tasks/caboose_rets.rake
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Barry
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-11-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: caboose-cms
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.2.
|
19
|
+
version: 0.2.81
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.2.
|
26
|
+
version: 0.2.81
|
27
27
|
description: Library to download RETS data to a local website for easy use.
|
28
28
|
email:
|
29
29
|
- william@nine.is
|
@@ -35,6 +35,7 @@ files:
|
|
35
35
|
- app/controllers/caboose_rets/application_controller.rb
|
36
36
|
- app/controllers/caboose_rets/commercial_controller.rb
|
37
37
|
- app/controllers/caboose_rets/land_controller.rb
|
38
|
+
- app/controllers/caboose_rets/multi_family_controller.rb
|
38
39
|
- app/controllers/caboose_rets/open_houses_controller.rb
|
39
40
|
- app/controllers/caboose_rets/residential_controller.rb
|
40
41
|
- app/helpers/caboose_rets/application_helper.rb
|
@@ -62,6 +63,7 @@ files:
|
|
62
63
|
- app/views/caboose_rets/commercial/details.html.erb
|
63
64
|
- app/views/caboose_rets/commercial/index.html.erb
|
64
65
|
- app/views/caboose_rets/open_houses/admin_new.html.erb
|
66
|
+
- app/views/caboose_rets/residential/_search_form.html.erb
|
65
67
|
- app/views/caboose_rets/residential/admin_edit.html.erb
|
66
68
|
- app/views/caboose_rets/residential/admin_index.html.erb
|
67
69
|
- app/views/caboose_rets/residential/details.html.erb
|
@@ -111,7 +113,8 @@ files:
|
|
111
113
|
- test/integration/navigation_test.rb
|
112
114
|
- test/test_helper.rb
|
113
115
|
homepage: http://github.com/williambarry007/caboose-rets
|
114
|
-
licenses:
|
116
|
+
licenses:
|
117
|
+
- MIT
|
115
118
|
metadata: {}
|
116
119
|
post_install_message:
|
117
120
|
rdoc_options: []
|