mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-20 14:45:56 +08:00
triggers the delayed job in the controller action, fixes smart annotations
This commit is contained in:
parent
b13e39a0d9
commit
c683cfdbd7
|
@ -73,7 +73,8 @@ class RepositoriesController < ApplicationController
|
|||
def destroy
|
||||
flash[:success] = t('repositories.index.delete_flash',
|
||||
name: @repository.name)
|
||||
@repository.destroy
|
||||
@repository.discard
|
||||
ClearDiscardedRepositoriesJob.perform_later
|
||||
redirect_to team_repositories_path
|
||||
end
|
||||
|
||||
|
|
11
app/jobs/clear_discarded_repositories_job.rb
Normal file
11
app/jobs/clear_discarded_repositories_job.rb
Normal file
|
@ -0,0 +1,11 @@
|
|||
class ClearDiscardedRepositoriesJob
|
||||
class << self
|
||||
def perform_later
|
||||
Repository.with_discarded.discarded.destroy_all
|
||||
end
|
||||
|
||||
handle_asynchronously :perform_later,
|
||||
queue: :clear_discarded_repositories,
|
||||
priority: 20
|
||||
end
|
||||
end
|
|
@ -45,13 +45,13 @@ module SmartAnnotations
|
|||
|
||||
def generate_rep_item_snippet(name, object)
|
||||
if object
|
||||
repository_name = object.repository.name
|
||||
repository_name = fetch_repository_name(object)
|
||||
return "<span class='sa-type'>" \
|
||||
"#{trim_repository_name(repository_name)}</span> " \
|
||||
"<a href='#{ROUTES.repository_row_path(object)}' " \
|
||||
"class='record-info-link'>#{object.name}</a>"
|
||||
end
|
||||
"<span class='sa-type'>Rep</span> " \
|
||||
"<span class='sa-type'>Inv</span> " \
|
||||
"#{name} #{I18n.t('atwho.res.deleted')}"
|
||||
end
|
||||
|
||||
|
@ -66,6 +66,13 @@ module SmartAnnotations
|
|||
return "#{names[0].slice(0..1)}#{names[1][0]}" if size == 2
|
||||
"#{names[0][0]}#{names[1][0]}#{names[2][0]}"
|
||||
end
|
||||
|
||||
def fetch_repository_name(object)
|
||||
return object.repository.name if object.repository
|
||||
repository = Repository.with_discarded.find_by_id(object.repository_id)
|
||||
return 'Inv' unless repository
|
||||
repository.name
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -24,7 +24,12 @@ module SmartAnnotations
|
|||
end
|
||||
|
||||
def validate_rep_item_permissions(user, object)
|
||||
can_read_team?(user, object.repository.team)
|
||||
return can_read_team?(user, object.repository.team) if object.repository
|
||||
# handles discarded repositories
|
||||
repository = Repository.with_discarded.find_by_id(object.repository_id)
|
||||
# evaluate to false if repository not found
|
||||
return false unless repository
|
||||
can_read_team?(user, repository.team)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
namespace :clear_discarded_repositories do
|
||||
desc 'Removes all discarded repositories'
|
||||
task run: :environment do
|
||||
Repository.with_discarded.discarded.destroy_all
|
||||
end
|
||||
end
|
|
@ -0,0 +1,9 @@
|
|||
namespace :clear_repository_rows_and_columns_without_repository do
|
||||
desc 'Removes all repository rows/columns and ' \
|
||||
'referenced entities with dependent: destroy'
|
||||
task run: :environment do
|
||||
repository_ids = Repository.select(:id)
|
||||
RepositoryRow.where.not(repository_id: repository_ids).delete_all
|
||||
RepositoryColumn.where.not(repository_id: repository_ids).delete_all
|
||||
end
|
||||
end
|
|
@ -47,7 +47,7 @@ describe SmartAnnotations::HtmlPreview do
|
|||
it 'returns a html snippet' do
|
||||
snippet = subject.html('my item', 'rep_item', nil)
|
||||
expect(snippet).to eq(
|
||||
'<span class=\'sa-type\'>Rep</span> my item (deleted)'
|
||||
'<span class=\'sa-type\'>Inv</span> my item (deleted)'
|
||||
)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue