use init_from_args in favs and avatar job
This commit is contained in:
@@ -7,14 +7,20 @@ class Domain::Fa::Job::Base < Scraper::JobBase
|
||||
|
||||
protected
|
||||
|
||||
def init_from_args!(args, require_user_exists: false)
|
||||
def init_from_args!(args, build_user: true, require_user_exists: false)
|
||||
@force_scan = !!args[:force_scan]
|
||||
@caused_by_entry = args[:caused_by_entry]
|
||||
|
||||
@user = find_or_build_user_from_args(args, caused_by_entry: @caused_by_entry)
|
||||
logger.prefix =
|
||||
"[user #{(@user.url_name || @user.name).bold} / #{@user.state.bold}]"
|
||||
if build_user
|
||||
@user = find_or_build_user_from_args(args, caused_by_entry: @caused_by_entry)
|
||||
else
|
||||
@user = find_user_from_args(args)
|
||||
end
|
||||
|
||||
logger.prefix =
|
||||
"[user #{(@user&.url_name || @user&.name || args[:url_name])&.bold} / #{@user&.state&.bold}]"
|
||||
|
||||
return nil unless @user
|
||||
if @user.new_record?
|
||||
if require_user_exists
|
||||
fatal_error("user must already exist")
|
||||
@@ -47,9 +53,15 @@ class Domain::Fa::Job::Base < Scraper::JobBase
|
||||
|
||||
def user_due_for_scan?(scan_type)
|
||||
unless @user.scan_due?(scan_type)
|
||||
logger.warn("scanned #{@user.scanned_ago_in_words(scan_type).bold} - skipping")
|
||||
return false
|
||||
if @force_scan
|
||||
logger.warn("scanned #{@user.scanned_ago_in_words(scan_type).bold} - force scanning")
|
||||
return true
|
||||
else
|
||||
logger.warn("scanned #{@user.scanned_ago_in_words(scan_type).bold} - skipping")
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
|
||||
@@ -8,10 +8,9 @@ class Domain::Fa::Job::FavsJob < Domain::Fa::Job::Base
|
||||
ignore_signature_args :caused_by_entry
|
||||
|
||||
def perform(args)
|
||||
@caused_by_entry = args[:caused_by_entry]
|
||||
@first_job_entry = nil
|
||||
@force_scan = !!args[:force_scan]
|
||||
@user = find_user_from_args(args) || begin
|
||||
init_from_args!(args, build_user: false)
|
||||
@user || begin
|
||||
Domain::Fa::Job::UserPageJob.perform_later({
|
||||
url_name: args[:url_name],
|
||||
caused_by_entry: best_caused_by_entry,
|
||||
@@ -49,10 +48,16 @@ class Domain::Fa::Job::FavsJob < Domain::Fa::Job::Base
|
||||
"updated favs list to #{@user.fav_post_joins.count.to_s.bold} posts"
|
||||
}) do
|
||||
ReduxApplicationRecord.transaction do
|
||||
@user.fav_post_joins.where(post_id: to_remove).delete_all
|
||||
@user.fav_post_joins.insert_all!(to_add.map do |id|
|
||||
{ post_id: id }
|
||||
end) unless to_add.empty?
|
||||
if to_remove.any?
|
||||
@user.fav_post_joins.where(post_id: to_remove).delete_all
|
||||
end
|
||||
|
||||
if to_add.any?
|
||||
@user.fav_post_joins.insert_all!(to_add.map do |id|
|
||||
{ post_id: id }
|
||||
end)
|
||||
end
|
||||
|
||||
@user.scanned_favs_at = Time.now
|
||||
@user.save!
|
||||
end
|
||||
|
||||
@@ -3,12 +3,12 @@ class Domain::Fa::Job::UserAvatarJob < Domain::Fa::Job::Base
|
||||
ignore_signature_args :caused_by_entry
|
||||
|
||||
def perform(args)
|
||||
@caused_by_entry = args[:caused_by_entry]
|
||||
@user = args[:user] || raise("user arg is required")
|
||||
@force_scan = !!args[:force_scan]
|
||||
logger.prefix = "[#{(@user.url_name || @user.name).bold} / #{@user.state.bold}]"
|
||||
@avatar = @user.avatar_or_create
|
||||
init_from_args!(args, build_user: false)
|
||||
@user || begin
|
||||
raise("user must exist")
|
||||
end
|
||||
|
||||
@avatar = @user.avatar_or_create
|
||||
if @avatar.file_sha256 && !@force_scan
|
||||
logger.warn("downloaded #{time_ago_in_words(@avatar.downloaded_file_at)}, skipping")
|
||||
return
|
||||
|
||||
@@ -10,7 +10,11 @@
|
||||
<div class='flex-row'>
|
||||
<% @posts.each do |post| %>
|
||||
<div class=''>
|
||||
<img class='' alt='<%= post.title %>' src='<%= contents_log_entry_path(post.file, thumb: "small") %>' />
|
||||
<% if post.file %>
|
||||
<img class='' alt='<%= post.title %>' src='<%= contents_log_entry_path(post.file, thumb: "small") %>' />
|
||||
<% else %>
|
||||
<span>No file for <%= post.fa_id %></span>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
@@ -15,6 +15,12 @@ describe Domain::Fa::Job::UserAvatarJob do
|
||||
end
|
||||
end
|
||||
|
||||
context "when the user does not exist" do
|
||||
it "throws" do
|
||||
perform_now({ url_name: "meesh" }, should_raise: /user must exist/)
|
||||
end
|
||||
end
|
||||
|
||||
context "when the avatar model does not yet exist" do
|
||||
include_context "create meesh user"
|
||||
context "the user model has a last_user_page_id" do
|
||||
|
||||
Reference in New Issue
Block a user