DEV: Move requested_group_id custom field from post to topic (#9127)

Follow-up-to accbbded15
This commit is contained in:
Bianca Nenciu
2020-03-24 11:12:52 +02:00
committed by GitHub
parent bef8468510
commit d8640fd042
13 changed files with 71 additions and 56 deletions

View File

@@ -40,34 +40,7 @@ class BasicPostSerializer < ApplicationSerializer
I18n.t('flagging.user_must_edit')
end
else
cooked = object.filter_quotes(@parent_post)
if scope&.user
# PERF: this should not run on every post, only specific ones
# also, why is this in basic post serializer?
requested_group_id = post_custom_fields['requested_group_id'].to_i
if requested_group_id > 0
group = Group
.joins('JOIN group_users ON groups.id = group_users.group_id')
.find_by(
id: object.custom_fields['requested_group_id'].to_i,
group_users: { user_id: scope.user.id, owner: true }
)
if group
cooked << <<~EOF
<hr />
<a href="#{Discourse.base_uri}/g/#{group.name}/requests">
#{I18n.t('groups.request_membership_pm.handle')}
</a>
EOF
end
end
end
cooked
object.filter_quotes(@parent_post)
end
end

View File

@@ -70,7 +70,8 @@ class TopicViewSerializer < ApplicationSerializer
:destination_category_id,
:pm_with_non_human_user,
:queued_posts_count,
:show_read_indicator
:show_read_indicator,
:requested_group_name
)
has_one :details, serializer: TopicViewDetailsSerializer, root: false, embed: :objects
@@ -255,4 +256,21 @@ class TopicViewSerializer < ApplicationSerializer
def show_read_indicator
object.show_read_indicator?
end
def requested_group_name
if scope&.user
group = Group
.joins('JOIN group_users ON groups.id = group_users.group_id')
.find_by(
id: object.topic.custom_fields['requested_group_id'].to_i,
group_users: { user_id: scope.user.id, owner: true }
)
group.name if group
end
end
def include_requested_group_name?
object.personal_message
end
end