mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-10-02 18:04:29 +08:00
Show inventory activities based on access (just show deleted inventories) [SCI-12224]
This commit is contained in:
parent
b3145f9caa
commit
6a02cbae25
1 changed files with 15 additions and 5 deletions
|
@ -36,23 +36,33 @@ class ActivitiesService
|
|||
visible_projects = Project.readable_by_user(user, teams)
|
||||
visible_my_modules = MyModule.readable_by_user(user, teams)
|
||||
visible_forms = Form.readable_by_user(user, teams)
|
||||
# Temporary solution until handling of deleted subjects is fully implemented
|
||||
visible_repository_teams = user.teams.with_granted_permissions(user, RepositoryPermissions::READ, teams)
|
||||
visible_repositories = Repository.readable_by_user(user, teams)
|
||||
|
||||
deleted_repository_activities =
|
||||
activities.where(subject_type: %w(RepositoryBase RepositoryRow))
|
||||
.joins("LEFT OUTER JOIN repositories ON (activities.subject_id = repositories.id AND activities.subject_type = 'RepositoryBase')")
|
||||
.joins("LEFT OUTER JOIN repository_rows ON (activities.subject_id = repository_rows.id AND activities.subject_type = 'RepositoryRow')")
|
||||
.where("(activities.subject_type = 'RepositoryBase' AND repositories.id IS NULL) OR
|
||||
(activities.subject_type = 'RepositoryRow' AND repository_rows.id IS NULL)")
|
||||
|
||||
activities = Activity.from(activities, 'activities')
|
||||
activities = activities.where(project: nil, team_id: teams).where.not(subject_type: %w(RepositoryBase RepositoryRow Protocol Form))
|
||||
.or(activities.where(subject_type: %w(RepositoryBase RepositoryRow), team_id: visible_repository_teams.select(:id)))
|
||||
.or(activities.where(id: deleted_repository_activities.select(:id)))
|
||||
.or(activities.where(subject_type: 'Protocol', subject_id: Protocol.readable_by_user(user, teams).select(:id)))
|
||||
.or(activities.where(project_id: visible_projects.select(:id)).where.not(subject_type: %w(Experiment MyModule Result Protocol)))
|
||||
.or(activities.where(subject_type: 'Experiment', subject_id: Experiment.readable_by_user(user, teams).select(:id)))
|
||||
.or(activities.where("subject_id IN (?) AND subject_type = 'MyModule' OR " \
|
||||
"subject_id IN (?) AND subject_type = 'Result' OR " \
|
||||
"subject_id IN (?) AND subject_type = 'Protocol' OR " \
|
||||
"subject_id IN (?) AND subject_type = 'Form'",
|
||||
"subject_id IN (?) AND subject_type = 'Form' OR " \
|
||||
"subject_id IN (?) AND subject_type = 'RepositoryBase' OR " \
|
||||
"subject_id IN (?) AND subject_type = 'RepositoryRow'",
|
||||
visible_my_modules.select(:id),
|
||||
Result.with_discarded.where(my_module: visible_my_modules).select(:id),
|
||||
Protocol.where(my_module: visible_my_modules).select(:id),
|
||||
visible_forms.select(:id)))
|
||||
visible_forms.select(:id),
|
||||
visible_repositories.select(:id),
|
||||
RepositoryRow.where(repository_id: visible_repositories).select(:id)))
|
||||
|
||||
activities.order(created_at: :desc)
|
||||
.page(filters[:page])
|
||||
|
|
Loading…
Add table
Reference in a new issue