Notification now is in the lib, added static map image to the email

pull/5509/head
Mario de Frutos 9 years ago
parent 7fbefc5ab6
commit 22ef8d8415

@ -85,15 +85,13 @@ class UserMailer < ActionMailer::Base
:subject => @subject
end
def trending_map(visualization, mapviews)
def trending_map(visualization, mapviews, visualization_preview_image)
@user = visualization.user
@map_name = visualization.name
@viewer_name = (!viewer_user.name.nil? && !viewer_user.name.empty?) ? viewer_user.name : viewer_user.username
@preview_image = visualization_preview_image
@subject = "Recent activity on one of your maps!"
@greetings = ["congrats", "congratulations", "cool", "awesome", "hooray", "nice", "wow", "rad", "bravo", "yay", "boom"]
@link = "#{@user.public_url}#{CartoDB.path(self, 'public_visualizations_show_map', { id: visualization.id })}"
@viewer_maps_link = "#{viewer_user.public_url}#{CartoDB.path(self, 'public_maps_home')}"
mail :to => @user.email,
:subject => @subject
end

@ -18,12 +18,16 @@ module CartoDB
yesterday_mapviews = stats_manager.get_api_calls_from_redis(username, {from: date, to: date, stat_tag: visualization_id})
total_mapviews = stats_manager.get_total_api_calls_from_redis(username, visualization_id)
if is_trending_map?(yesterday_mapviews[date_key], total_mapviews)
trending_maps[visualization_id] = total_mapviews
trending_maps[visualization_id] = { user: username, mapviews: total_mapviews }
end
end
trending_maps
end
def notify_trending_map(visualization_id, mapviews, preview_image = nil)
::Resque.enqueue(::Resque::UserJobs::Mail::TrendingMap, visualization_id, mapviews, preview_image)
end
def is_trending_map?(mapviews_number_before, total_mapviews_today)
total_mapviews_yesterday = total_mapviews_today - mapviews_number_before
geometric_sequence_position_yesterday = Math.log2(total_mapviews_yesterday/GEOMETRIC_SEQUENCE_BASE)

@ -184,9 +184,9 @@ module Resque
extend ::Resque::Metrics
@queue = :users
def self.perform(visualization_id, mapviews)
def self.perform(visualization_id, mapviews, vis_preview_image)
visualization = Carto::Visualization.find(visualization_id)
UserMailer.trending_map(visualization, mapviews).deliver
UserMailer.trending_map(visualization, mapviews, vis_preview_image).deliver
end
end

@ -3,18 +3,21 @@ module Carto
class StaticMapsURLHelper
def url_for_static_map(request, visualization, map_width, map_height)
static_maps_base_url(request) + static_maps_image_url_fragment(visualization.id, map_width, map_height)
username = CartoDB.extract_subdomain(request)
request_protocol = request.protocol.sub('://','')
static_maps_base_url(username, request_protocol) + static_maps_image_url_fragment(visualization.id, map_width, map_height)
end
def url_for_static_map_without_request(username, request_protocol, visualization, map_width, map_height)
static_maps_base_url(username, request_protocol) + static_maps_image_url_fragment(visualization.id, map_width, map_height)
end
private
# INFO: Assumes no trailing '/' comes inside, so returned string doesn't has it either
def static_maps_base_url(request)
def static_maps_base_url(username, request_protocol)
config = get_static_maps_api_cdn_config
username = CartoDB.extract_subdomain(request)
request_protocol = request.protocol.sub('://','')
if !config.nil? && !config.empty?
# Sample formats:
# {protocol}://{user}.cartodb.com
@ -43,4 +46,4 @@ module Carto
end
end
end

@ -1,15 +1,20 @@
require_relative '../../lib/cartodb/trending_maps'
require_relative '../../lib/static_maps_url_helper'
namespace :cartodb do
namespace :trending_maps do
desc "Search for yesterday's trending maps to notify"
task :notify, [:simulation] => :environment do |t,args|
simulation = (args[:simulation] == false) ? false : true
trending_maps = CartoDB::TrendingMaps.new.get_trending_maps
simulation = (args[:simulation] == 'true') ? true : false
trending_maps_lib = CartoDB::TrendingMaps.new
trending_maps = trending_maps_lib.get_trending_maps
trending_maps.each do |visualization_id,total_mapviews|
puts "Notifying trending map #{visualization_id} with a total of #{total_mapviews} mapviews"
::Resque.enqueue(::Resque::UserJobs::Maps::NotifyTrendingMap, visualization_id, total_mapviews) unless simulation
trending_maps.each do |visualization_id,data|
puts "Notifying trending map #{visualization_id} with a total of #{data[:mapviews]} mapviews"
visualization = CartoDB::Visualization::Member.new(id: visualization_id)
preview_image = Carto::StaticMapsURLHelper.new.url_for_static_map_without_request(data[:user], 'http' , visualization, 600, 300)
trending_maps_lib.notify_trending_map(visualization_id, data[:mapviews], preview_image) unless simulation
end
end

Loading…
Cancel
Save