caboose-rets 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +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: []
|