Class: DestroyProjectJob
Class Method Summary
collapse
Instance Method Summary
collapse
#abbr_day_name, #current_language, #day_letter, #day_name, #find_language, #format_date, #format_hours, #format_time, included, #l, #l_hours, #l_hours_short, #l_or_humanize, #languages_options, #ll, #lu, #month_name, #normalize_float, #set_language_if_valid, #valid_languages
#keep_current_user
Class Method Details
.schedule(project, user: User.current) ⇒ Object
6
7
8
9
10
|
# File 'app/jobs/destroy_project_job.rb', line 6
def self.schedule(project, user: User.current)
project.self_and_descendants.update_all status: Project::STATUS_SCHEDULED_FOR_DELETION
perform_later project.id, user.id, user.remote_ip
end
|
Instance Method Details
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'app/jobs/destroy_project_job.rb', line 12
def perform(project_id, user_id, remote_ip)
user_current_was = User.current
unless @user = User.active.find_by_id(user_id)
info "User check failed: User #{user_id} triggering project destroy does not exist anymore or isn't active."
return
end
@user.remote_ip = remote_ip
User.current = @user
set_language_if_valid @user.language || Setting.default_language
unless @project = Project.find_by_id(project_id)
info "Project check failed: Project has already been deleted."
return
end
unless @project.deletable?
info "Project check failed: User #{user_id} lacks permissions."
return
end
message = if @project.descendants.any?
:mail_destroy_project_with_subprojects_successful
else
:mail_destroy_project_successful
end
delete_project ? success(message) : failure
ensure
User.current = user_current_was
info "End destroy project"
end
|