Merge branch 'improve_speed_policies'
This commit is contained in:
@ -11,6 +11,10 @@ class StudyGroup < ApplicationRecord
|
||||
external_users + internal_users
|
||||
end
|
||||
|
||||
def user_count
|
||||
external_users.count + internal_users.count
|
||||
end
|
||||
|
||||
def to_s
|
||||
if name.blank?
|
||||
"StudyGroup " + id.to_s
|
||||
|
@ -31,20 +31,19 @@ class ApplicationPolicy
|
||||
study_group = @record.study_group
|
||||
return false if study_group.blank?
|
||||
|
||||
users_in_same_study_group = study_group.users
|
||||
study_groups = [study_group]
|
||||
elsif @record.respond_to? :user # e.g. exercise
|
||||
# ToDo: Add role to study_group_membership and use for check
|
||||
study_groups = @record.user.study_groups
|
||||
users_in_same_study_group = study_groups.collect(&:users).flatten
|
||||
elsif @record.respond_to? :users # e.g. study_group
|
||||
users_in_same_study_group = @record.users
|
||||
study_groups = [@record]
|
||||
elsif @record.respond_to? :study_groups # e.g. user
|
||||
study_groups = @record.study_groups
|
||||
users_in_same_study_group = study_groups.collect(&:users).flatten
|
||||
else
|
||||
return false
|
||||
end
|
||||
|
||||
users_in_same_study_group.include? @user
|
||||
@user.study_groups.any?{|i| study_groups.include?(i) }
|
||||
end
|
||||
private :everyone_in_study_group
|
||||
|
||||
|
@ -4,7 +4,7 @@ class StudyGroupPolicy < AdminOnlyPolicy
|
||||
end
|
||||
|
||||
[:show?, :destroy?, :edit?, :update?, :stream_la?].each do |action|
|
||||
define_method(action) { admin? || @user.teacher? && @record.present? && @record.users.include?(@user) }
|
||||
define_method(action) { admin? || @user.teacher? && @record.present? && @user.study_groups.exists?(@record.id) }
|
||||
end
|
||||
|
||||
class Scope < Scope
|
||||
|
@ -25,7 +25,7 @@ h1 = StudyGroup.model_name.human(count: 2)
|
||||
td
|
||||
code = group.external_id
|
||||
td = link_to_if(policy(group.consumer).show?, group.consumer, group.consumer)
|
||||
td = group.users.count
|
||||
td = group.user_count
|
||||
td = link_to(t('shared.show'), group) if policy(group).show?
|
||||
td = link_to(t('shared.edit'), edit_study_group_path(group)) if policy(group).edit?
|
||||
td = link_to(t('shared.destroy'), group, data: {confirm: t('shared.confirm_destroy')}, method: :delete) if policy(group).destroy?
|
||||
|
@ -7,7 +7,7 @@ h1
|
||||
= row(label: 'study_group.external_id') do
|
||||
code = @study_group.external_id
|
||||
= row(label: 'study_group.consumer', value: link_to_if(policy(@study_group).show?, @study_group.consumer, @study_group.consumer))
|
||||
= row(label: 'study_group.member_count', value: @study_group.users.count)
|
||||
= row(label: 'study_group.member_count', value: @study_group.user_count)
|
||||
|
||||
|
||||
h2.mt-4 = t('activerecord.attributes.study_group.members')
|
||||
|
Reference in New Issue
Block a user