update user home base (last_jam_blah) fields upon registation and joining a music session as a musician
This commit is contained in:
parent
e6ea200b19
commit
3f688a8392
|
|
@ -151,3 +151,4 @@ user_mods.sql
|
||||||
connection_stale_expire.sql
|
connection_stale_expire.sql
|
||||||
rename_chat_messages.sql
|
rename_chat_messages.sql
|
||||||
fix_connection_fields.sql
|
fix_connection_fields.sql
|
||||||
|
add_last_jam_user_fields.sql
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
ALTER TABLE users ADD COLUMN last_jam_addr BIGINT;
|
||||||
|
|
||||||
|
ALTER TABLE users ADD COLUMN last_jam_locidispid BIGINT;
|
||||||
|
|
||||||
|
-- (j)oin session as musician, (r)egister, (f)tue, (n)etwork test
|
||||||
|
ALTER TABLE users ADD COLUMN last_jam_updated_reason CHAR(1);
|
||||||
|
|
||||||
|
ALTER TABLE users ADD COLUMN last_jam_updated_at TIMESTAMP;
|
||||||
|
|
@ -352,7 +352,7 @@ SQL
|
||||||
|
|
||||||
connection = Connection.find_by_client_id_and_user_id!(client_id, user.id)
|
connection = Connection.find_by_client_id_and_user_id!(client_id, user.id)
|
||||||
|
|
||||||
connection.join_the_session(music_session, as_musician, tracks)
|
connection.join_the_session(music_session, as_musician, tracks, user)
|
||||||
# connection.music_session_id = music_session.id
|
# connection.music_session_id = music_session.id
|
||||||
# connection.as_musician = as_musician
|
# connection.as_musician = as_musician
|
||||||
# connection.joining_session = true
|
# connection.joining_session = true
|
||||||
|
|
|
||||||
|
|
@ -146,13 +146,18 @@ module JamRuby
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
def join_the_session(music_session, as_musician, tracks)
|
def join_the_session(music_session, as_musician, tracks, user)
|
||||||
self.music_session_id = music_session.id
|
self.music_session_id = music_session.id
|
||||||
self.as_musician = as_musician
|
self.as_musician = as_musician
|
||||||
self.joining_session = true
|
self.joining_session = true
|
||||||
self.joined_session_at = Time.now
|
self.joined_session_at = Time.now
|
||||||
associate_tracks(tracks) unless tracks.nil?
|
associate_tracks(tracks) unless tracks.nil?
|
||||||
self.save
|
self.save
|
||||||
|
|
||||||
|
# if user joins the session as a musician, update their addr and location
|
||||||
|
if as_musician
|
||||||
|
user.update_addr_loc(self, 'j')
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def associate_tracks(tracks)
|
def associate_tracks(tracks)
|
||||||
|
|
|
||||||
|
|
@ -773,7 +773,14 @@ module JamRuby
|
||||||
user.country = location[:country]
|
user.country = location[:country]
|
||||||
user.birth_date = birth_date
|
user.birth_date = birth_date
|
||||||
|
|
||||||
if user.musician # only update instruments if the user is a musician
|
if musician
|
||||||
|
user.last_jam_addr = location[:addr]
|
||||||
|
user.last_jam_locidispid = location[:locidispid]
|
||||||
|
user.last_jam_updated_reason = 'r'
|
||||||
|
user.last_jam_updated_at = Time.now
|
||||||
|
end
|
||||||
|
|
||||||
|
if musician # only update instruments if the user is a musician
|
||||||
unless instruments.nil?
|
unless instruments.nil?
|
||||||
instruments.each do |musician_instrument_param|
|
instruments.each do |musician_instrument_param|
|
||||||
instrument = Instrument.find(musician_instrument_param[:instrument_id])
|
instrument = Instrument.find(musician_instrument_param[:instrument_id])
|
||||||
|
|
@ -1138,6 +1145,14 @@ module JamRuby
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def update_addr_loc(connection, reason)
|
||||||
|
self.last_jam_addr = connection.addr
|
||||||
|
self.last_jam_locidispid = connection.locidispid
|
||||||
|
self.last_jam_updated_reason = reason
|
||||||
|
self.last_jam_updated_at = Time.now
|
||||||
|
self.save
|
||||||
|
end
|
||||||
|
|
||||||
def top_followings
|
def top_followings
|
||||||
@topf ||= User.joins("INNER JOIN follows ON follows.followable_id = users.id AND follows.followable_type = '#{self.class.to_s}'")
|
@topf ||= User.joins("INNER JOIN follows ON follows.followable_id = users.id AND follows.followable_type = '#{self.class.to_s}'")
|
||||||
.where(['follows.user_id = ?', self.id])
|
.where(['follows.user_id = ?', self.id])
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ describe ClaimedRecording do
|
||||||
@music_session = FactoryGirl.create(:music_session, :creator => @user, :musician_access => true)
|
@music_session = FactoryGirl.create(:music_session, :creator => @user, :musician_access => true)
|
||||||
# @music_session.connections << @connection
|
# @music_session.connections << @connection
|
||||||
@music_session.save
|
@music_session.save
|
||||||
@connection.join_the_session(@music_session, true, nil)
|
@connection.join_the_session(@music_session, true, nil, @user)
|
||||||
@recording = Recording.start(@music_session, @user)
|
@recording = Recording.start(@music_session, @user)
|
||||||
@recording.stop
|
@recording.stop
|
||||||
@recording.reload
|
@recording.reload
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ describe Mix do
|
||||||
@music_session = FactoryGirl.create(:music_session, :creator => @user, :musician_access => true)
|
@music_session = FactoryGirl.create(:music_session, :creator => @user, :musician_access => true)
|
||||||
# @music_session.connections << @connection
|
# @music_session.connections << @connection
|
||||||
@music_session.save
|
@music_session.save
|
||||||
@connection.join_the_session(@music_session, true, nil)
|
@connection.join_the_session(@music_session, true, nil, @user)
|
||||||
@recording = Recording.start(@music_session, @user)
|
@recording = Recording.start(@music_session, @user)
|
||||||
@recording.stop
|
@recording.stop
|
||||||
@recording.claim(@user, "name", "description", Genre.first, true)
|
@recording.claim(@user, "name", "description", Genre.first, true)
|
||||||
|
|
|
||||||
|
|
@ -398,7 +398,7 @@ describe MusicSession do
|
||||||
@music_session = FactoryGirl.create(:music_session, :creator => @user1, :musician_access => true)
|
@music_session = FactoryGirl.create(:music_session, :creator => @user1, :musician_access => true)
|
||||||
# @music_session.connections << @connection
|
# @music_session.connections << @connection
|
||||||
@music_session.save!
|
@music_session.save!
|
||||||
@connection.join_the_session(@music_session, true, nil)
|
@connection.join_the_session(@music_session, true, nil, @user1)
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "not recording" do
|
describe "not recording" do
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,7 @@ describe 'Musician search' do
|
||||||
music_session = FactoryGirl.create(:music_session, :creator => usr, :musician_access => true)
|
music_session = FactoryGirl.create(:music_session, :creator => usr, :musician_access => true)
|
||||||
# music_session.connections << connection
|
# music_session.connections << connection
|
||||||
music_session.save
|
music_session.save
|
||||||
connection.join_the_session(music_session, true, nil)
|
connection.join_the_session(music_session, true, nil, usr)
|
||||||
recording = Recording.start(music_session, usr)
|
recording = Recording.start(music_session, usr)
|
||||||
recording.stop
|
recording.stop
|
||||||
recording.reload
|
recording.reload
|
||||||
|
|
@ -130,7 +130,7 @@ describe 'Musician search' do
|
||||||
music_session = FactoryGirl.create(:music_session, :creator => usr, :musician_access => true)
|
music_session = FactoryGirl.create(:music_session, :creator => usr, :musician_access => true)
|
||||||
# music_session.connections << connection
|
# music_session.connections << connection
|
||||||
music_session.save
|
music_session.save
|
||||||
connection.join_the_session(music_session, true, nil)
|
connection.join_the_session(music_session, true, nil, usr)
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'musician stat counters' do
|
context 'musician stat counters' do
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,7 @@ describe Recording do
|
||||||
@track2 = FactoryGirl.create(:track, :connection => @connection2, :instrument => @instrument2)
|
@track2 = FactoryGirl.create(:track, :connection => @connection2, :instrument => @instrument2)
|
||||||
|
|
||||||
# @music_session.connections << @connection2
|
# @music_session.connections << @connection2
|
||||||
@connection2.join_the_session(@music_session, true, nil)
|
@connection2.join_the_session(@music_session, true, nil, @user2)
|
||||||
|
|
||||||
@recording = Recording.start(@music_session, @user)
|
@recording = Recording.start(@music_session, @user)
|
||||||
@user.recordings.length.should == 0
|
@user.recordings.length.should == 0
|
||||||
|
|
@ -179,7 +179,7 @@ describe Recording do
|
||||||
@track = FactoryGirl.create(:track, :connection => @connection2, :instrument => @instrument)
|
@track = FactoryGirl.create(:track, :connection => @connection2, :instrument => @instrument)
|
||||||
# @music_session.connections << @connection2
|
# @music_session.connections << @connection2
|
||||||
@music_session.save
|
@music_session.save
|
||||||
@connection2.join_the_session(@music_session, true, nil)
|
@connection2.join_the_session(@music_session, true, nil, @user2)
|
||||||
@recording = Recording.start(@music_session, @user)
|
@recording = Recording.start(@music_session, @user)
|
||||||
@recording.stop
|
@recording.stop
|
||||||
@recording.reload
|
@recording.reload
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,8 @@ class MaxMindManager < BaseManager
|
||||||
def self.lookup(ip_address)
|
def self.lookup(ip_address)
|
||||||
|
|
||||||
city = state = country = nil
|
city = state = country = nil
|
||||||
|
locid = ispid = 0
|
||||||
|
|
||||||
unless ip_address.nil? || ip_address !~ /^\d+\.\d+\.\d+\.\d+$/
|
unless ip_address.nil? || ip_address !~ /^\d+\.\d+\.\d+\.\d+$/
|
||||||
#ActiveRecord::Base.connection_pool.with_connection do |connection|
|
#ActiveRecord::Base.connection_pool.with_connection do |connection|
|
||||||
# pg_conn = connection.instance_variable_get("@connection")
|
# pg_conn = connection.instance_variable_get("@connection")
|
||||||
|
|
@ -23,17 +24,29 @@ class MaxMindManager < BaseManager
|
||||||
# end
|
# end
|
||||||
# end
|
# end
|
||||||
#end
|
#end
|
||||||
ip_as_int = ip_address_to_int(ip_address)
|
|
||||||
block = GeoIpBlocks.lookup(ip_as_int)
|
addr = ip_address_to_int(ip_address)
|
||||||
location = block ? GeoIpLocations.lookup(block.locid) : nil
|
|
||||||
if location
|
block = GeoIpBlocks.lookup(addr)
|
||||||
country = location.countrycode
|
if block
|
||||||
state = location.region
|
locid = block.locid
|
||||||
city = location.city
|
|
||||||
|
location = GeoIpLocations.lookup(locid)
|
||||||
|
if location
|
||||||
|
# todo translate countrycode to country, region(code) to region
|
||||||
|
country = location.countrycode
|
||||||
|
state = location.region
|
||||||
|
city = location.city
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
isp = JamIsp.lookup(addr)
|
||||||
|
if isp
|
||||||
|
ispid = isp.coid
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
a = {:city => city, :state => state, :country => country}
|
{city: city, state: state, country: country, addr: addr, locidispid: locid*1000000+ispid}
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.lookup_isp(ip_address)
|
def self.lookup_isp(ip_address)
|
||||||
|
|
|
||||||
|
|
@ -35,9 +35,15 @@ class UserManager < BaseManager
|
||||||
raise PermissionError, "Signups are currently disabled"
|
raise PermissionError, "Signups are currently disabled"
|
||||||
end
|
end
|
||||||
|
|
||||||
# a user should be able to specify their location, but if they don't, we'll best effort it
|
loc = MaxMindManager.lookup(remote_ip)
|
||||||
if location.nil?
|
# there are three cases here: if location is missing, we'll auto set the city, etc. from
|
||||||
location = MaxMindManager.lookup(remote_ip)
|
# the ip address; if location is present, empty or not empty, we'll set the city, etc. from
|
||||||
|
# what is present in location. we should NOT normally default city, etc. for the user, they
|
||||||
|
# own it, they may want it to be unspecified, that is their right.
|
||||||
|
if location
|
||||||
|
loc[:city] = location[:city]
|
||||||
|
loc[:state] = location[:state]
|
||||||
|
loc[:country] = location[:country]
|
||||||
end
|
end
|
||||||
|
|
||||||
# TODO: figure out why can't user verify_recaptcha here
|
# TODO: figure out why can't user verify_recaptcha here
|
||||||
|
|
@ -54,7 +60,7 @@ class UserManager < BaseManager
|
||||||
password: password,
|
password: password,
|
||||||
password_confirmation: password_confirmation,
|
password_confirmation: password_confirmation,
|
||||||
terms_of_service: terms_of_service,
|
terms_of_service: terms_of_service,
|
||||||
location: location,
|
location: loc,
|
||||||
instruments: instruments,
|
instruments: instruments,
|
||||||
birth_date: birth_date,
|
birth_date: birth_date,
|
||||||
musician: musician,
|
musician: musician,
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ describe ApiClaimedRecordingsController do
|
||||||
@music_session = FactoryGirl.create(:music_session, :creator => @user, :musician_access => true)
|
@music_session = FactoryGirl.create(:music_session, :creator => @user, :musician_access => true)
|
||||||
# @music_session.connections << @connection
|
# @music_session.connections << @connection
|
||||||
@music_session.save
|
@music_session.save
|
||||||
@connection.join_the_session(@music_session, true, nil)
|
@connection.join_the_session(@music_session, true, nil, @user)
|
||||||
@recording = Recording.start(@music_session, @user)
|
@recording = Recording.start(@music_session, @user)
|
||||||
@recording.stop
|
@recording.stop
|
||||||
@recording.reload
|
@recording.reload
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ describe "social metadata" do
|
||||||
ms = FactoryGirl.create(:music_session, :creator => user, :musician_access => true)
|
ms = FactoryGirl.create(:music_session, :creator => user, :musician_access => true)
|
||||||
# ms.connections << connection
|
# ms.connections << connection
|
||||||
ms.save!
|
ms.save!
|
||||||
connection.join_the_session(ms, true, nil)
|
connection.join_the_session(ms, true, nil, user)
|
||||||
ms
|
ms
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -93,7 +93,7 @@ describe "social metadata" do
|
||||||
@music_session = FactoryGirl.create(:music_session, :creator => @user, :musician_access => true)
|
@music_session = FactoryGirl.create(:music_session, :creator => @user, :musician_access => true)
|
||||||
# @music_session.connections << @connection
|
# @music_session.connections << @connection
|
||||||
@music_session.save
|
@music_session.save
|
||||||
@connection.join_the_session(@music_session, true, nil)
|
@connection.join_the_session(@music_session, true, nil, @user)
|
||||||
@recording = Recording.start(@music_session, @user)
|
@recording = Recording.start(@music_session, @user)
|
||||||
@recording.stop
|
@recording.stop
|
||||||
@recording.reload
|
@recording.reload
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ describe MusicSessionHelper do
|
||||||
@music_session = FactoryGirl.create(:music_session, :creator => @user, :musician_access => true)
|
@music_session = FactoryGirl.create(:music_session, :creator => @user, :musician_access => true)
|
||||||
# @music_session.connections << @connection
|
# @music_session.connections << @connection
|
||||||
@music_session.save
|
@music_session.save
|
||||||
@connection.join_the_session(@music_session, true, nil)
|
@connection.join_the_session(@music_session, true, nil, @user)
|
||||||
@recording = Recording.start(@music_session, @user)
|
@recording = Recording.start(@music_session, @user)
|
||||||
@recording.stop
|
@recording.stop
|
||||||
@recording.reload
|
@recording.reload
|
||||||
|
|
|
||||||
|
|
@ -700,7 +700,7 @@ describe "Music Session API ", :type => :api do
|
||||||
music_session = FactoryGirl.create(:music_session, :creator => user, :musician_access => true)
|
music_session = FactoryGirl.create(:music_session, :creator => user, :musician_access => true)
|
||||||
# music_session.connections << connection
|
# music_session.connections << connection
|
||||||
music_session.save
|
music_session.save
|
||||||
connection.join_the_session(music_session, true, nil)
|
connection.join_the_session(music_session, true, nil, user)
|
||||||
recording = Recording.start(music_session, user)
|
recording = Recording.start(music_session, user)
|
||||||
recording.stop
|
recording.stop
|
||||||
recording.reload
|
recording.reload
|
||||||
|
|
|
||||||
|
|
@ -985,8 +985,9 @@ describe "User API", :type => :api do
|
||||||
ms = FactoryGirl.create(:music_session, :creator => user, :musician_access => true)
|
ms = FactoryGirl.create(:music_session, :creator => user, :musician_access => true)
|
||||||
# ms.connections << connection
|
# ms.connections << connection
|
||||||
ms.save!
|
ms.save!
|
||||||
connection.join_the_session(ms, true, nil)
|
connection.join_the_session(ms, true, nil, user)
|
||||||
ms }
|
ms
|
||||||
|
}
|
||||||
|
|
||||||
it "fetches facebook successfully" do
|
it "fetches facebook successfully" do
|
||||||
login(user.email, user.password, 200, true)
|
login(user.email, user.password, 200, true)
|
||||||
|
|
@ -1122,7 +1123,7 @@ describe "User API", :type => :api do
|
||||||
@music_session = FactoryGirl.create(:music_session, :creator => user, :musician_access => true)
|
@music_session = FactoryGirl.create(:music_session, :creator => user, :musician_access => true)
|
||||||
# @music_session.connections << @connection
|
# @music_session.connections << @connection
|
||||||
@music_session.save
|
@music_session.save
|
||||||
@connection.join_the_session(@music_session, true, nil)
|
@connection.join_the_session(@music_session, true, nil, user)
|
||||||
@recording = Recording.start(@music_session, user)
|
@recording = Recording.start(@music_session, user)
|
||||||
@recording.stop
|
@recording.stop
|
||||||
@recording.reload
|
@recording.reload
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue