User.current cannot be used in asynchronous emails

This commit is contained in:
Karel Pičman 2019-03-27 12:28:34 +01:00
commit b3ea5f49fb
11 changed files with 43 additions and 22 deletions

View File

@ -170,7 +170,7 @@ class DmsfController < ApplicationController
if params[:email][:to].strip.blank?
flash[:errors] = l(:error_email_to_must_be_entered)
else
DmsfMailer.deliver_send_documents(@project, params[:email].permit!)
DmsfMailer.deliver_send_documents(@project, params[:email].permit!, User.current)
File.delete(params[:email][:zipped_content])
flash[:notice] = l(:notice_email_sent, params[:email][:to])
end

View File

@ -25,8 +25,8 @@ class DmsfMailer < Mailer
layout 'mailer'
def self.deliver_files_updated(project, files)
files = files.select { |file| file.notify? }
users = get_notify_users(project, files)
files = files.select { |file| file.notify? }
users.each do |user|
files_updated(user, project, files).deliver_later
end
@ -39,6 +39,7 @@ class DmsfMailer < Mailer
@files = files
@project = project
@author = files.first.last_revision.user if files.first.last_revision
@author = User.anonymous unless @author
message_id project
set_language_if_valid user.language
mail :to => user.mail, subject: "[#{@project.name} - #{l(:menu_dmsf)}] #{l(:text_email_doc_updated_subject)}"
@ -46,8 +47,8 @@ class DmsfMailer < Mailer
end
def self.deliver_files_deleted(project, files)
files = files.select { |file| file.notify? }
users = get_notify_users(project, files)
files = files.select { |file| file.notify? }
users.each do |user|
files_deleted(user, project, files).deliver_later
end
@ -60,6 +61,7 @@ class DmsfMailer < Mailer
@files = files
@project = project
@author = files.first.deleted_by_user
@author = User.anonymous unless @author
message_id project
set_language_if_valid user.language
mail :to => user.mail,
@ -67,11 +69,11 @@ class DmsfMailer < Mailer
end
end
def self.deliver_send_documents(project, email_params)
send_documents(User.current, project, email_params).deliver_now
def self.deliver_send_documents(project, email_params, author)
send_documents(User.current, project, email_params, author).deliver_now
end
def send_documents(_, project, email_params)
def send_documents(_, project, email_params, author)
redmine_headers 'Project' => project.identifier if project
@body = email_params[:body]
@links_only = email_params[:links_only] == '1'
@ -79,7 +81,7 @@ class DmsfMailer < Mailer
@expired_at = email_params[:expired_at]
@folders = email_params[:folders]
@files = email_params[:files]
@author = author
unless @links_only
zipped_content_data = open(email_params[:zipped_content], 'rb') { |io| io.read }
attachments['Documents.zip'] = { :content_type => 'application/zip', :content => zipped_content_data }
@ -109,6 +111,7 @@ class DmsfMailer < Mailer
@text2 = l(text2_id)
@notice = notice
@author = User.find_by(id: revision.dmsf_workflow_assigned_by)
@author = User.anonymous unless @author
mail :to => user.mail,
:subject => "[#{@project.name} - #{l(:field_label_dmsf_workflow)}] #{@workflow.name} #{l(subject_id)}"
end

View File

@ -18,7 +18,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.%>
<%= link_to User.current, user_url(User.current) %> <%= l(:text_email_doc_deleted) %>
<%= link_to @author, user_url(@author) %> <%= l(:text_email_doc_deleted) %>
<%= link_to @project, project_url(@project) %> <%= l(:text_email_doc_follows) %>
<% @files.each do |file| %>
<p>

View File

@ -21,7 +21,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.%>
<%= User.current.name %> <%= l(:text_email_doc_deleted) %> <%= @project.name %> <%= l(:text_email_doc_follows) %>
<%= @author.name %> <%= l(:text_email_doc_deleted) %> <%= @project.name %> <%= l(:text_email_doc_follows) %>
<% @files.each do |file| %>
<%= h(file.dmsf_path_str) %> (<%= file.name %>)
<% if file.last_revision %>

View File

@ -18,7 +18,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.%>
<%= link_to User.current, user_url(User.current) %> <%= l(:text_email_doc_updated) %>
<%= link_to @author, user_url(@author) %> <%= l(:text_email_doc_updated) %>
<%= link_to @project, project_url(@project) %> <%= l(:text_email_doc_follows) %>
<% @files.each do |file| %>
<p>

View File

@ -18,7 +18,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.%>
<%= User.current.name %> <%= l(:text_email_doc_updated) %>
<%= @author.name %> <%= l(:text_email_doc_updated) %>
<%= @project.name %> <%= l(:text_email_doc_follows) %>
<% @files.each do |file| %>
<%= h(file.dmsf_path_str) %> (<%= file.name %>),

View File

@ -41,7 +41,7 @@
<% if @public_urls %>
<% dmsf_public_url = DmsfPublicUrl.new %>
<% dmsf_public_url.dmsf_file = file %>
<% dmsf_public_url.user = User.current %>
<% dmsf_public_url.user = @author %>
<% dmsf_public_url.expire_at = @expired_at %>
<% dmsf_public_url.save %>
<%= link_to(h(file.title), dmsf_public_urls_url(:token => dmsf_public_url.token)) %>
@ -68,7 +68,7 @@
<% if @public_urls %>
<% dmsf_public_url = DmsfPublicUrl.new %>
<% dmsf_public_url.dmsf_file = file %>
<% dmsf_public_url.user = User.current %>
<% dmsf_public_url.user = @author %>
<% dmsf_public_url.expire_at = @expired_at %>
<% dmsf_public_url.save %>
<%= link_to(h(file.title), dmsf_public_urls_url(:token => dmsf_public_url.token)) %>

View File

@ -39,7 +39,7 @@
<% if @public_urls %>
<% dmsf_public_url = DmsfPublicUrl.new %>
<% dmsf_public_url.dmsf_file = file %>
<% dmsf_public_url.user = User.current %>
<% dmsf_public_url.user = @author %>
<% dmsf_public_url.expire_at = @expired_at %>
<% dmsf_public_url.save %>
<%= dmsf_public_urls_url(:token => dmsf_public_url.token) %>
@ -61,7 +61,7 @@
<% if @public_urls %>
<% dmsf_public_url = DmsfPublicUrl.new %>
<% dmsf_public_url.dmsf_file = file %>
<% dmsf_public_url.user = User.current %>
<% dmsf_public_url.user = @author %>
<% dmsf_public_url.expire_at = @expired_at %>
<% dmsf_public_url.save %>
<%= dmsf_public_urls_url(:token => dmsf_public_url.token) %>

View File

@ -88,6 +88,20 @@ table.display thead th div.DataTables_sort_wrapper span {
display: block;
}
/* Comptibility with Easy SW: sorting icons are not visible do */
.ui-state-default .ui-icon {
background-image: url("../../../stylesheets/jquery/images/ui-icons_759fcf_256x240.png");
}
.ui-icon-triangle-1-n {
background-position: 0 -16px;
}
.ui-icon-triangle-1-s {
background-position: -64px -16px;
}
/* end */
.dmsf_controls,
.dmsf_controls input,
.dmsf_controls select,

View File

@ -44,12 +44,16 @@ class DmsfFileContainerRollback < ActiveRecord::Migration[4.2]
new_folder_ids << parent.id
end
# Issue folder
folder = DmsfFolder.new
folder.project_id = issue.project.id
folder.dmsf_folder_id = parent.id
folder.title = "#{issue.id} - #{issue.subject}"
folder.user_id = User.anonymous.id
folder.save!
title = "#{issue.id} - #{DmsfFolder.get_valid_title(issue.subject)}"
folder = DmsfFolder.find_by(project_id: issue.project.id, dmsf_folder_id: parent.id, title: title)
unless folder
folder = DmsfFolder.new
folder.project_id = issue.project.id
folder.dmsf_folder_id = parent.id
folder.title = "#{issue.id} - #{DmsfFolder.get_valid_title(issue.subject)}"
folder.user_id = User.anonymous.id
folder.save!
end
new_folder_ids << folder.id
# Move the file into the new folder
file.dmsf_folder_id = folder.id

View File

@ -73,7 +73,7 @@ class DmsfMailerTest < RedmineDmsf::Test::UnitTest
email_params[:expired_at] = DateTime.current.to_s
email_params[:folders] = nil
email_params[:files] = "[\"#{@file1.id}\"]"
DmsfMailer.deliver_send_documents(@file1.project, email_params)
DmsfMailer.deliver_send_documents(@file1.project, email_params, User.current)
email = last_email
assert text_part(email).body.include? body
assert html_part(email).body.include? body