discourse/app/serializers/basic_group_serializer.rb

83 lines
1.7 KiB
Ruby
Raw Normal View History

class BasicGroupSerializer < ApplicationSerializer
attributes :id,
:automatic,
:name,
:display_name,
:user_count,
:mentionable_level,
:messageable_level,
:visibility_level,
:automatic_membership_email_domains,
:automatic_membership_retroactive,
:primary_group,
:title,
2015-12-07 19:39:28 +08:00
:grant_trust_level,
:incoming_email,
:has_messages,
:flair_url,
:flair_bg_color,
2016-12-05 16:18:24 +08:00
:flair_color,
:bio_raw,
2016-12-07 12:06:56 +08:00
:bio_cooked,
:public_admission,
:public_exit,
2016-12-13 16:16:26 +08:00
:allow_membership_requests,
:full_name,
:default_notification_level,
:membership_request_template,
:is_group_user,
:is_group_owner
2015-12-07 19:39:28 +08:00
def include_display_name?
object.automatic
end
def display_name
if auto_group_name = Group::AUTO_GROUP_IDS[object.id]
I18n.t("groups.default_names.#{auto_group_name}")
end
end
2015-12-07 19:39:28 +08:00
def include_incoming_email?
2016-12-05 16:18:24 +08:00
staff?
end
def include_has_messages?
staff? || scope.can_see_group_messages?(object)
2016-12-05 16:18:24 +08:00
end
def include_bio_raw?
2018-04-17 18:14:19 +08:00
staff? || (include_is_group_owner? && is_group_owner)
2016-12-05 16:18:24 +08:00
end
def include_is_group_user?
user_group_ids.present?
end
def is_group_user
user_group_ids.include?(object.id)
end
2016-12-05 16:18:24 +08:00
def include_is_group_owner?
owner_group_ids.present?
2015-12-07 19:39:28 +08:00
end
def is_group_owner
owner_group_ids.include?(object.id)
end
private
2018-06-07 13:28:18 +08:00
def staff?
@staff ||= scope.is_staff?
end
2018-06-07 13:28:18 +08:00
def user_group_ids
@options[:user_group_ids]
end
2018-06-07 13:28:18 +08:00
def owner_group_ids
@options[:owner_group_ids]
end
2013-05-08 13:20:38 +08:00
end