mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-10-07 20:40:26 +08:00
Merge pull request #8175 from aignatov-bio/ai-sci-11487-add-team-owner-self-assign-to-forms
Add team owner self assign to forms [SCI-11487]
This commit is contained in:
commit
af049ea782
4 changed files with 25 additions and 4 deletions
|
@ -1,7 +1,12 @@
|
||||||
<template>
|
<template>
|
||||||
<a :href="params.data.urls.show" :title="params.data.name">
|
<a v-if="params.data.urls.show"
|
||||||
|
:href="params.data.urls.show"
|
||||||
|
:title="params.data.name">
|
||||||
{{ params.data.name }}
|
{{ params.data.name }}
|
||||||
</a>
|
</a>
|
||||||
|
<span v-else class="text-sn-grey" :title="params.data.name">
|
||||||
|
{{ params.data.name }}
|
||||||
|
</span>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
|
@ -36,6 +36,20 @@ class Form < ApplicationRecord
|
||||||
|
|
||||||
enum :visibility, { hidden: 0, visible: 1 }
|
enum :visibility, { hidden: 0, visible: 1 }
|
||||||
|
|
||||||
|
def self.viewable_by_user(user, teams)
|
||||||
|
# Team owners see all forms in the team
|
||||||
|
owner_role = UserRole.find_predefined_owner_role
|
||||||
|
forms = Form.where(team: teams)
|
||||||
|
viewable_as_team_owner = forms.joins("INNER JOIN user_assignments team_user_assignments " \
|
||||||
|
"ON team_user_assignments.assignable_type = 'Team' " \
|
||||||
|
"AND team_user_assignments.assignable_id = forms.team_id")
|
||||||
|
.where(team_user_assignments: { user_id: user, user_role_id: owner_role })
|
||||||
|
.select(:id)
|
||||||
|
viewable_as_assigned = forms.with_granted_permissions(user, FormPermissions::READ).select(:id)
|
||||||
|
|
||||||
|
where('forms.id IN ((?) UNION (?))', viewable_as_team_owner, viewable_as_assigned)
|
||||||
|
end
|
||||||
|
|
||||||
def archived_branch?
|
def archived_branch?
|
||||||
archived?
|
archived?
|
||||||
end
|
end
|
||||||
|
|
|
@ -57,10 +57,11 @@ module Lists
|
||||||
|
|
||||||
def urls
|
def urls
|
||||||
urls_list = {
|
urls_list = {
|
||||||
show: form_path(object),
|
|
||||||
show_access: access_permissions_form_path(object)
|
show_access: access_permissions_form_path(object)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
urls_list[:show] = form_path(object) if can_read_form?(object)
|
||||||
|
|
||||||
if can_manage_form_users?(object)
|
if can_manage_form_users?(object)
|
||||||
urls_list[:update_access] = access_permissions_form_path(object)
|
urls_list[:update_access] = access_permissions_form_path(object)
|
||||||
urls_list[:new_access] = new_access_permissions_form_path(id: object.id)
|
urls_list[:new_access] = new_access_permissions_form_path(id: object.id)
|
||||||
|
|
|
@ -10,8 +10,9 @@ module Lists
|
||||||
def fetch_records
|
def fetch_records
|
||||||
@records =
|
@records =
|
||||||
Form.includes(:team, user_assignments: %i(user user_role))
|
Form.includes(:team, user_assignments: %i(user user_role))
|
||||||
.joins(:user_assignments)
|
.left_outer_joins(:user_assignments)
|
||||||
.left_outer_joins(:form_responses)
|
.left_outer_joins(:form_responses)
|
||||||
|
.viewable_by_user(@user, @team)
|
||||||
.joins(
|
.joins(
|
||||||
'LEFT OUTER JOIN users AS publishers ' \
|
'LEFT OUTER JOIN users AS publishers ' \
|
||||||
'ON forms.published_by_id = publishers.id'
|
'ON forms.published_by_id = publishers.id'
|
||||||
|
@ -20,7 +21,7 @@ module Lists
|
||||||
'publishers.full_name AS published_by_user',
|
'publishers.full_name AS published_by_user',
|
||||||
'COUNT(DISTINCT form_responses.id) AS used_in_protocols_count',
|
'COUNT(DISTINCT form_responses.id) AS used_in_protocols_count',
|
||||||
'COUNT(DISTINCT user_assignments.id) AS user_assignment_count'
|
'COUNT(DISTINCT user_assignments.id) AS user_assignment_count'
|
||||||
).where(team: @team).readable_by_user(@user).group('forms.id', 'publishers.full_name')
|
).where(team: @team).group('forms.id', 'publishers.full_name')
|
||||||
|
|
||||||
view_mode = @params[:view_mode] || 'active'
|
view_mode = @params[:view_mode] || 'active'
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue