mls 1.5.0 → 1.5.1
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 +4 -4
- data/lib/mls.rb +9 -27
- data/lib/mls/account.rb +120 -16
- data/lib/mls/accounts_region.rb +6 -0
- data/lib/mls/action.rb +18 -0
- data/lib/mls/api_key.rb +5 -0
- data/lib/mls/coworking_space.rb +16 -2
- data/lib/mls/credit_card.rb +11 -0
- data/lib/mls/datum.rb +5 -0
- data/lib/mls/document.rb +8 -26
- data/lib/mls/email.rb +2 -1
- data/lib/mls/email_address.rb +5 -0
- data/lib/mls/email_digest.rb +10 -0
- data/lib/mls/event.rb +30 -5
- data/lib/mls/flyer.rb +11 -0
- data/lib/mls/image_ordering.rb +1 -1
- data/lib/mls/impression_count.rb +21 -0
- data/lib/mls/inquiry.rb +49 -1
- data/lib/mls/invoice.rb +16 -0
- data/lib/mls/lead.rb +1 -5
- data/lib/mls/listing.rb +57 -22
- data/lib/mls/membership.rb +27 -0
- data/lib/mls/metadatum.rb +3 -0
- data/lib/mls/mistake.rb +1 -1
- data/lib/mls/organization.rb +3 -1
- data/lib/mls/ownership.rb +8 -0
- data/lib/mls/phone.rb +7 -1
- data/lib/mls/property.rb +95 -71
- data/lib/mls/region.rb +6 -0
- data/lib/mls/session.rb +2 -2
- data/lib/mls/source.rb +3 -2
- data/lib/mls/subscription.rb +24 -0
- data/lib/mls/task.rb +14 -8
- data/lib/mls/team.rb +6 -0
- data/lib/mls/view.rb +24 -0
- data/lib/mls/webpage.rb +1 -1
- data/mls.gemspec +4 -1
- metadata +59 -8
- data/lib/mls/agency.rb +0 -6
- data/lib/mls/change.rb +0 -40
- data/lib/mls/event_action.rb +0 -6
- data/lib/mls/green_sheet.rb +0 -5
- data/lib/mls/unit.rb +0 -38
data/lib/mls/region.rb
CHANGED
@@ -4,6 +4,8 @@ class Region < MLS::Model
|
|
4
4
|
|
5
5
|
self.inheritance_column = nil
|
6
6
|
|
7
|
+
CITY_TYPES = ["City", "Municipality", "Village", "Rural Municipality", "Town", "Resort Village", "Community Government"]
|
8
|
+
|
7
9
|
belongs_to :cover_photo, :class_name => 'Image'
|
8
10
|
belongs_to :market, :class_name => 'Region'
|
9
11
|
belongs_to :flagship, :class_name => 'Region'
|
@@ -23,6 +25,10 @@ class Region < MLS::Model
|
|
23
25
|
end
|
24
26
|
end
|
25
27
|
|
28
|
+
def tree_name
|
29
|
+
slug.split("/").map(&:humanize).map(&:titleize).map{|r| r.length == 2 ? r.upcase : r}.reverse.join(", ")
|
30
|
+
end
|
31
|
+
|
26
32
|
def cover_photo_url(options={})
|
27
33
|
|
28
34
|
options.reverse_merge!({
|
data/lib/mls/session.rb
CHANGED
@@ -10,8 +10,8 @@ class Session < MLS::Model
|
|
10
10
|
email_address = email_address[:email_address]
|
11
11
|
end
|
12
12
|
|
13
|
-
Session.create(:email_address => email_address, :password => password)
|
14
|
-
rescue Sunstone::Exception::Unauthorized
|
13
|
+
Session.create!(:email_address => email_address, :password => password)
|
14
|
+
rescue Sunstone::Exception::Unauthorized, ActiveRecord::RecordInvalid
|
15
15
|
nil
|
16
16
|
end
|
17
17
|
|
data/lib/mls/source.rb
CHANGED
@@ -2,14 +2,15 @@ class Source < MLS::Model
|
|
2
2
|
|
3
3
|
has_many :tasks, :as => :subject
|
4
4
|
has_many :emails
|
5
|
+
has_many :email_addresses
|
6
|
+
has_many :webpages, :inverse_of => :source
|
5
7
|
|
6
8
|
belongs_to :account
|
7
9
|
belongs_to :organization
|
8
10
|
belongs_to :upload, class_name: 'Flyer'
|
9
11
|
|
10
12
|
def name
|
11
|
-
|
12
|
-
url.match(/^(?:https?:\/\/)?(?:www\.)?([^\/]+)/)[1]
|
13
|
+
domain
|
13
14
|
end
|
14
15
|
|
15
16
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class Subscription < MLS::Model
|
2
|
+
self.inheritance_column = nil
|
3
|
+
|
4
|
+
belongs_to :membership
|
5
|
+
belongs_to :subject, polymorphic: true
|
6
|
+
belongs_to :credit_card
|
7
|
+
|
8
|
+
def name
|
9
|
+
case self.type
|
10
|
+
when "unlimited"
|
11
|
+
"Unlimited Premium Listings"
|
12
|
+
when "premium"
|
13
|
+
"Premium Listings"
|
14
|
+
when "elite"
|
15
|
+
"Elite Account"
|
16
|
+
when "coworking"
|
17
|
+
"Coworking Space"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def cost
|
22
|
+
read_attribute(:cost) / 100.0 if read_attribute(:cost)
|
23
|
+
end
|
24
|
+
end
|
data/lib/mls/task.rb
CHANGED
@@ -3,6 +3,7 @@ class Task < MLS::Model
|
|
3
3
|
|
4
4
|
belongs_to :subject, :polymorphic => true
|
5
5
|
belongs_to :account
|
6
|
+
belongs_to :source
|
6
7
|
|
7
8
|
has_many :events
|
8
9
|
has_many :mistakes
|
@@ -15,7 +16,7 @@ class Task < MLS::Model
|
|
15
16
|
end
|
16
17
|
|
17
18
|
def for_task?
|
18
|
-
subject_type == "
|
19
|
+
subject_type == "Task"
|
19
20
|
end
|
20
21
|
|
21
22
|
def review?
|
@@ -30,23 +31,28 @@ class Task < MLS::Model
|
|
30
31
|
type == "parse"
|
31
32
|
end
|
32
33
|
|
34
|
+
def crawl?
|
35
|
+
type == "crawl"
|
36
|
+
end
|
37
|
+
|
38
|
+
def paused?
|
39
|
+
status == 'paused'
|
40
|
+
end
|
41
|
+
|
33
42
|
def duration
|
34
|
-
|
43
|
+
time_logs.where(TimeLog.arel_table[:started_at].not_eq(nil)).where(TimeLog.arel_table[:stopped_at].not_eq(nil)).sum("duration")
|
35
44
|
end
|
36
45
|
|
37
46
|
def pause
|
38
|
-
log = time_logs.where(:
|
47
|
+
log = time_logs.where(:stopped_at => nil).where(TimeLog.arel_table[:started_at].not_eq(nil)).first
|
39
48
|
if log
|
40
49
|
log.update(:stopped_at => Time.now)
|
41
50
|
end
|
42
51
|
end
|
43
52
|
|
44
53
|
def resume
|
45
|
-
time_logs << TimeLog.create(:started_at => Time.now)
|
46
|
-
|
47
|
-
|
48
|
-
def paused?
|
49
|
-
!started_at.nil? && completed_at.nil? && time_logs.where(:started_at => true, :stopped_at => false).length == 0
|
54
|
+
#time_logs << TimeLog.create(:started_at => Time.now)
|
55
|
+
TimeLog.create(task_id: self.id, started_at: Time.now)
|
50
56
|
end
|
51
57
|
|
52
58
|
end
|
data/lib/mls/team.rb
ADDED
data/lib/mls/view.rb
CHANGED
@@ -1,3 +1,27 @@
|
|
1
1
|
class View < MLS::Model
|
2
2
|
belongs_to :subject, polymorphic: true
|
3
|
+
|
4
|
+
def self.by_day(filter)
|
5
|
+
req = Net::HTTP::Get.new("/views/by_day")
|
6
|
+
req.body = {
|
7
|
+
where: filter
|
8
|
+
}.to_json
|
9
|
+
connection.instance_variable_get(:@connection).send_request(req).body
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.by_week(filter)
|
13
|
+
req = Net::HTTP::Get.new("/views/by_week")
|
14
|
+
req.body = {
|
15
|
+
where: filter
|
16
|
+
}.to_json
|
17
|
+
connection.instance_variable_get(:@connection).send_request(req).body
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.by_month(filter)
|
21
|
+
req = Net::HTTP::Get.new("/views/by_month")
|
22
|
+
req.body = {
|
23
|
+
where: filter
|
24
|
+
}.to_json
|
25
|
+
connection.instance_variable_get(:@connection).send_request(req).body
|
26
|
+
end
|
3
27
|
end
|
data/lib/mls/webpage.rb
CHANGED
data/mls.gemspec
CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "mls"
|
6
|
-
s.version = '1.5.
|
6
|
+
s.version = '1.5.1'
|
7
7
|
s.authors = ["Jon Bracy", "James R. Bracy"]
|
8
8
|
s.email = ["jon@42floors.com", "james@42floors.com"]
|
9
9
|
s.homepage = "http://mls.42floors.com"
|
@@ -31,6 +31,9 @@ Gem::Specification.new do |s|
|
|
31
31
|
s.add_development_dependency 'sdoc-templates-42floors'
|
32
32
|
|
33
33
|
# Runtime
|
34
|
+
s.add_runtime_dependency 'phony'
|
35
|
+
s.add_runtime_dependency 'arel-extensions'
|
34
36
|
s.add_runtime_dependency 'rgeo', '>= 0.4.0'
|
35
37
|
s.add_runtime_dependency 'sunstone', '>= 2.0.1'
|
38
|
+
s.add_runtime_dependency 'bcrypt'
|
36
39
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mls
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jon Bracy
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2017-04-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -165,6 +165,34 @@ dependencies:
|
|
165
165
|
- - ">="
|
166
166
|
- !ruby/object:Gem::Version
|
167
167
|
version: '0'
|
168
|
+
- !ruby/object:Gem::Dependency
|
169
|
+
name: phony
|
170
|
+
requirement: !ruby/object:Gem::Requirement
|
171
|
+
requirements:
|
172
|
+
- - ">="
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
175
|
+
type: :runtime
|
176
|
+
prerelease: false
|
177
|
+
version_requirements: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - ">="
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '0'
|
182
|
+
- !ruby/object:Gem::Dependency
|
183
|
+
name: arel-extensions
|
184
|
+
requirement: !ruby/object:Gem::Requirement
|
185
|
+
requirements:
|
186
|
+
- - ">="
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: '0'
|
189
|
+
type: :runtime
|
190
|
+
prerelease: false
|
191
|
+
version_requirements: !ruby/object:Gem::Requirement
|
192
|
+
requirements:
|
193
|
+
- - ">="
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
version: '0'
|
168
196
|
- !ruby/object:Gem::Dependency
|
169
197
|
name: rgeo
|
170
198
|
requirement: !ruby/object:Gem::Requirement
|
@@ -193,6 +221,20 @@ dependencies:
|
|
193
221
|
- - ">="
|
194
222
|
- !ruby/object:Gem::Version
|
195
223
|
version: 2.0.1
|
224
|
+
- !ruby/object:Gem::Dependency
|
225
|
+
name: bcrypt
|
226
|
+
requirement: !ruby/object:Gem::Requirement
|
227
|
+
requirements:
|
228
|
+
- - ">="
|
229
|
+
- !ruby/object:Gem::Version
|
230
|
+
version: '0'
|
231
|
+
type: :runtime
|
232
|
+
prerelease: false
|
233
|
+
version_requirements: !ruby/object:Gem::Requirement
|
234
|
+
requirements:
|
235
|
+
- - ">="
|
236
|
+
- !ruby/object:Gem::Version
|
237
|
+
version: '0'
|
196
238
|
description: Ruby library for integrating with the 42Floors MLS
|
197
239
|
email:
|
198
240
|
- jon@42floors.com
|
@@ -207,25 +249,33 @@ files:
|
|
207
249
|
- Rakefile
|
208
250
|
- lib/mls.rb
|
209
251
|
- lib/mls/account.rb
|
252
|
+
- lib/mls/accounts_region.rb
|
253
|
+
- lib/mls/action.rb
|
210
254
|
- lib/mls/address.rb
|
211
|
-
- lib/mls/
|
212
|
-
- lib/mls/change.rb
|
255
|
+
- lib/mls/api_key.rb
|
213
256
|
- lib/mls/comment.rb
|
214
257
|
- lib/mls/coworking_space.rb
|
258
|
+
- lib/mls/credit_card.rb
|
259
|
+
- lib/mls/datum.rb
|
215
260
|
- lib/mls/document.rb
|
216
261
|
- lib/mls/email.rb
|
217
262
|
- lib/mls/email_address.rb
|
263
|
+
- lib/mls/email_digest.rb
|
218
264
|
- lib/mls/event.rb
|
219
|
-
- lib/mls/
|
265
|
+
- lib/mls/flyer.rb
|
220
266
|
- lib/mls/geometry.rb
|
221
|
-
- lib/mls/green_sheet.rb
|
222
267
|
- lib/mls/image_ordering.rb
|
268
|
+
- lib/mls/impression_count.rb
|
223
269
|
- lib/mls/inquiry.rb
|
270
|
+
- lib/mls/invoice.rb
|
224
271
|
- lib/mls/lead.rb
|
225
272
|
- lib/mls/listing.rb
|
226
273
|
- lib/mls/locality.rb
|
274
|
+
- lib/mls/membership.rb
|
275
|
+
- lib/mls/metadatum.rb
|
227
276
|
- lib/mls/mistake.rb
|
228
277
|
- lib/mls/organization.rb
|
278
|
+
- lib/mls/ownership.rb
|
229
279
|
- lib/mls/phone.rb
|
230
280
|
- lib/mls/property.rb
|
231
281
|
- lib/mls/recommendation.rb
|
@@ -236,9 +286,10 @@ files:
|
|
236
286
|
- lib/mls/source.rb
|
237
287
|
- lib/mls/space.rb
|
238
288
|
- lib/mls/stat.rb
|
289
|
+
- lib/mls/subscription.rb
|
239
290
|
- lib/mls/task.rb
|
291
|
+
- lib/mls/team.rb
|
240
292
|
- lib/mls/time_log.rb
|
241
|
-
- lib/mls/unit.rb
|
242
293
|
- lib/mls/use.rb
|
243
294
|
- lib/mls/vendor.rb
|
244
295
|
- lib/mls/view.rb
|
@@ -268,7 +319,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
268
319
|
version: '0'
|
269
320
|
requirements: []
|
270
321
|
rubyforge_project: mls
|
271
|
-
rubygems_version: 2.
|
322
|
+
rubygems_version: 2.5.1
|
272
323
|
signing_key:
|
273
324
|
specification_version: 4
|
274
325
|
summary: 42Floors MLS Client
|
data/lib/mls/agency.rb
DELETED
data/lib/mls/change.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
class Change < MLS::Model
|
2
|
-
self.inheritance_column = nil
|
3
|
-
|
4
|
-
belongs_to :subject, :polymorphic => true
|
5
|
-
has_many :event_actions, :as => :action
|
6
|
-
has_many :mistakes
|
7
|
-
|
8
|
-
# Returns the association instance for the given name, instantiating it if it doesn't already exist
|
9
|
-
def association(name) #:nodoc:
|
10
|
-
association = super
|
11
|
-
|
12
|
-
return association if name.to_s != 'subject'
|
13
|
-
|
14
|
-
association.instance_exec do
|
15
|
-
def klass
|
16
|
-
type = owner[reflection.foreign_type]
|
17
|
-
type.presence && type.constantize
|
18
|
-
rescue NameError
|
19
|
-
nil
|
20
|
-
end
|
21
|
-
|
22
|
-
def reader(force_reload=false)
|
23
|
-
if klass
|
24
|
-
if force_reload
|
25
|
-
klass.uncached { reload }
|
26
|
-
elsif !loaded? || stale_target?
|
27
|
-
reload
|
28
|
-
end
|
29
|
-
|
30
|
-
target
|
31
|
-
else
|
32
|
-
nil
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
association
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
data/lib/mls/event_action.rb
DELETED
data/lib/mls/green_sheet.rb
DELETED
data/lib/mls/unit.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
class Unit < MLS::Model
|
2
|
-
self.inheritance_column = nil
|
3
|
-
|
4
|
-
include MLS::Slugger
|
5
|
-
include MLS::Avatar
|
6
|
-
|
7
|
-
belongs_to :property
|
8
|
-
belongs_to :floorplan, :class_name => 'Document'
|
9
|
-
|
10
|
-
has_many :listings
|
11
|
-
has_many :image_orderings, as: :subject
|
12
|
-
has_many :photos, through: :image_orderings, source: :image
|
13
|
-
# has_many :photos, -> { order(:order => :asc) }, :as => :subject, :inverse_of => :subject
|
14
|
-
|
15
|
-
has_and_belongs_to_many :uses
|
16
|
-
|
17
|
-
def tags
|
18
|
-
read_attribute(:tags) || []
|
19
|
-
end
|
20
|
-
|
21
|
-
def name
|
22
|
-
name = ""
|
23
|
-
case self.type
|
24
|
-
when 'unit'
|
25
|
-
name += "Unit"
|
26
|
-
name += " #{self.number}" if self.number
|
27
|
-
name += " (Floor #{self.floor})" if self.floor
|
28
|
-
when 'floor'
|
29
|
-
name += "Floor"
|
30
|
-
name += " #{self.floor}" if self.floor
|
31
|
-
name += " (Unit #{self.number})" if self.number
|
32
|
-
when 'building'
|
33
|
-
"Entire Building"
|
34
|
-
end
|
35
|
-
name
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|