mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 04:24:35 +08:00
FEATURE: Allow manual assignment of related post to badge
PERF: clean up performance of user badges admin when large number of badges exist
This commit is contained in:
@ -25,8 +25,10 @@ class UserBadgesController < ApplicationController
|
||||
end
|
||||
|
||||
user_badges = user_badges.includes(badge: [:badge_grouping, :badge_type])
|
||||
.includes(post: :topic)
|
||||
.includes(:granted_by)
|
||||
|
||||
render_serialized(user_badges, BasicUserBadgeSerializer, root: "user_badges")
|
||||
render_serialized(user_badges, DetailedUserBadgeSerializer, root: "user_badges")
|
||||
end
|
||||
|
||||
def create
|
||||
@ -39,9 +41,22 @@ class UserBadgesController < ApplicationController
|
||||
end
|
||||
|
||||
badge = fetch_badge_from_params
|
||||
user_badge = BadgeGranter.grant(badge, user, granted_by: current_user)
|
||||
post_id = nil
|
||||
|
||||
render_serialized(user_badge, UserBadgeSerializer, root: "user_badge")
|
||||
if params[:reason].present?
|
||||
path = URI.parse(params[:reason]).path rescue nil
|
||||
route = Rails.application.routes.recognize_path(path) if path
|
||||
if route
|
||||
topic_id = route[:topic_id].to_i
|
||||
post_number = route[:post_number] || 1
|
||||
|
||||
post_id = Post.find_by(topic_id: topic_id, post_number: post_number).try(:id) if topic_id > 0
|
||||
end
|
||||
end
|
||||
|
||||
user_badge = BadgeGranter.grant(badge, user, granted_by: current_user, post_id: post_id)
|
||||
|
||||
render_serialized(user_badge, DetailedUserBadgeSerializer, root: "user_badge")
|
||||
end
|
||||
|
||||
def destroy
|
||||
|
Reference in New Issue
Block a user