triggers the delayed job in the controller action, fixes smart annotations

This commit is contained in:
zmagod 2018-05-25 11:41:43 +02:00
parent b13e39a0d9
commit c683cfdbd7
7 changed files with 38 additions and 11 deletions

View file

@ -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

View 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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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