Skip to content

Commit 6116f26

Browse files
committed
DEV: Apply syntax_tree formatting
1 parent 8c11d4d commit 6116f26

File tree

52 files changed

+1871
-1284
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+1871
-1284
lines changed

Gemfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ source "https://rubygems.org"
55
group :development do
66
gem "rubocop-discourse", git: "https://github.com/discourse/rubocop-discourse/", branch: "stree"
77
gem "syntax_tree"
8-
end
8+
end

app/controllers/discourse_assign/assign_controller.rb

+121-66
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ class AssignController < ApplicationController
77

88
def suggestions
99
users = [current_user]
10-
users += User
11-
.where('users.id <> ?', current_user.id)
12-
.joins(<<~SQL
10+
users +=
11+
User
12+
.where("users.id <> ?", current_user.id)
13+
.joins(<<~SQL)
1314
JOIN(
1415
SELECT assigned_to_id user_id, MAX(created_at) last_assigned
1516
FROM assignments
@@ -18,16 +19,22 @@ def suggestions
1819
HAVING COUNT(*) < #{SiteSetting.max_assigned_topics}
1920
) as X ON X.user_id = users.id
2021
SQL
21-
)
22-
.assign_allowed
23-
.order('X.last_assigned DESC')
24-
.limit(6)
22+
.assign_allowed
23+
.order("X.last_assigned DESC")
24+
.limit(6)
2525

2626
render json: {
27-
assign_allowed_on_groups: Group.visible_groups(current_user).assign_allowed_groups.pluck(:name),
28-
assign_allowed_for_groups: Group.visible_groups(current_user).assignable(current_user).pluck(:name),
29-
suggestions: ActiveModel::ArraySerializer.new(users, scope: guardian, each_serializer: BasicUserSerializer),
30-
}
27+
assign_allowed_on_groups:
28+
Group.visible_groups(current_user).assign_allowed_groups.pluck(:name),
29+
assign_allowed_for_groups:
30+
Group.visible_groups(current_user).assignable(current_user).pluck(:name),
31+
suggestions:
32+
ActiveModel::ArraySerializer.new(
33+
users,
34+
scope: guardian,
35+
each_serializer: BasicUserSerializer,
36+
),
37+
}
3138
end
3239

3340
def unassign
@@ -46,11 +53,18 @@ def unassign
4653
def assign
4754
target_id = params.require(:target_id)
4855
target_type = params.require(:target_type)
49-
username = params.permit(:username)['username']
50-
group_name = params.permit(:group_name)['group_name']
51-
note = params.permit(:note)['note'].presence
52-
53-
assign_to = username.present? ? User.find_by(username_lower: username.downcase) : Group.where("LOWER(name) = ?", group_name.downcase).first
56+
username = params.permit(:username)["username"]
57+
group_name = params.permit(:group_name)["group_name"]
58+
note = params.permit(:note)["note"].presence
59+
60+
assign_to =
61+
(
62+
if username.present?
63+
User.find_by(username_lower: username.downcase)
64+
else
65+
Group.where("LOWER(name) = ?", group_name.downcase).first
66+
end
67+
)
5468

5569
raise Discourse::NotFound unless assign_to
5670
raise Discourse::NotFound if !Assignment.valid_type?(target_type)
@@ -72,23 +86,31 @@ def assigned
7286
offset = (params[:offset] || 0).to_i
7387
limit = (params[:limit] || 100).to_i
7488

75-
topics = Topic
76-
.includes(:tags)
77-
.includes(:user)
78-
.joins("JOIN assignments a ON a.target_id = topics.id AND a.target_type = 'Topic' AND a.assigned_to_id IS NOT NULL")
79-
.order("a.assigned_to_id, topics.bumped_at desc")
80-
.offset(offset)
81-
.limit(limit)
89+
topics =
90+
Topic
91+
.includes(:tags)
92+
.includes(:user)
93+
.joins(
94+
"JOIN assignments a ON a.target_id = topics.id AND a.target_type = 'Topic' AND a.assigned_to_id IS NOT NULL",
95+
)
96+
.order("a.assigned_to_id, topics.bumped_at desc")
97+
.offset(offset)
98+
.limit(limit)
8299

83100
Topic.preload_custom_fields(topics, TopicList.preloaded_custom_fields)
84101

85-
topic_assignments = Assignment.where(target_id: topics.map(&:id), target_type: 'Topic', active: true).pluck(:target_id, :assigned_to_id).to_h
102+
topic_assignments =
103+
Assignment
104+
.where(target_id: topics.map(&:id), target_type: "Topic", active: true)
105+
.pluck(:target_id, :assigned_to_id)
106+
.to_h
86107

87-
users = User
88-
.where("users.id IN (?)", topic_assignments.values.uniq)
89-
.joins("join user_emails on user_emails.user_id = users.id AND user_emails.primary")
90-
.select(UserLookup.lookup_columns)
91-
.to_a
108+
users =
109+
User
110+
.where("users.id IN (?)", topic_assignments.values.uniq)
111+
.joins("join user_emails on user_emails.user_id = users.id AND user_emails.primary")
112+
.select(UserLookup.lookup_columns)
113+
.to_a
92114

93115
User.preload_custom_fields(users, User.allowed_user_custom_fields(guardian))
94116

@@ -114,68 +136,101 @@ def group_members
114136

115137
guardian.ensure_can_see_group_members!(group)
116138

117-
members = User
118-
.joins("LEFT OUTER JOIN group_users g ON g.user_id = users.id")
119-
.joins("LEFT OUTER JOIN assignments a ON a.assigned_to_id = users.id AND a.assigned_to_type = 'User'")
120-
.joins("LEFT OUTER JOIN topics t ON t.id = a.target_id AND a.target_type = 'Topic'")
121-
.where("g.group_id = ? AND users.id > 0 AND t.deleted_at IS NULL", group.id)
122-
.where("a.assigned_to_id IS NOT NULL AND a.active")
123-
.order('COUNT(users.id) DESC')
124-
.group('users.id')
125-
.select('users.*, COUNT(users.id) as "assignments_count"')
126-
.limit(limit)
127-
.offset(offset)
128-
129-
if params[:filter]
130-
members = members.where(<<~SQL, pattern: "%#{params[:filter]}%")
139+
members =
140+
User
141+
.joins("LEFT OUTER JOIN group_users g ON g.user_id = users.id")
142+
.joins(
143+
"LEFT OUTER JOIN assignments a ON a.assigned_to_id = users.id AND a.assigned_to_type = 'User'",
144+
)
145+
.joins("LEFT OUTER JOIN topics t ON t.id = a.target_id AND a.target_type = 'Topic'")
146+
.where("g.group_id = ? AND users.id > 0 AND t.deleted_at IS NULL", group.id)
147+
.where("a.assigned_to_id IS NOT NULL AND a.active")
148+
.order("COUNT(users.id) DESC")
149+
.group("users.id")
150+
.select('users.*, COUNT(users.id) as "assignments_count"')
151+
.limit(limit)
152+
.offset(offset)
153+
154+
members = members.where(<<~SQL, pattern: "%#{params[:filter]}%") if params[:filter]
131155
users.name ILIKE :pattern OR users.username_lower ILIKE :pattern
132156
SQL
133-
end
134157

135-
group_assignments = Topic
136-
.joins("JOIN assignments a ON a.topic_id = topics.id")
137-
.where(<<~SQL, group_id: group.id)
158+
group_assignments =
159+
Topic
160+
.joins("JOIN assignments a ON a.topic_id = topics.id")
161+
.where(<<~SQL, group_id: group.id)
138162
a.assigned_to_id = :group_id AND a.assigned_to_type = 'Group' AND a.active
139163
SQL
140-
.pluck(:topic_id)
164+
.pluck(:topic_id)
141165

142-
assignments = TopicQuery
143-
.new(current_user)
144-
.group_topics_assigned_results(group)
145-
.pluck('topics.id')
166+
assignments =
167+
TopicQuery.new(current_user).group_topics_assigned_results(group).pluck("topics.id")
146168

147169
render json: {
148-
members: serialize_data(members, GroupUserAssignedSerializer),
149-
assignment_count: (assignments | group_assignments).count,
150-
group_assignment_count: group_assignments.count
151-
}
170+
members: serialize_data(members, GroupUserAssignedSerializer),
171+
assignment_count: (assignments | group_assignments).count,
172+
group_assignment_count: group_assignments.count,
173+
}
152174
end
153175

154176
private
155177

156178
def translate_failure(reason, assign_to)
157179
case reason
158180
when :already_assigned
159-
{ error: I18n.t('discourse_assign.already_assigned', username: assign_to.username) }
181+
{ error: I18n.t("discourse_assign.already_assigned", username: assign_to.username) }
160182
when :forbidden_assign_to
161-
{ error: I18n.t('discourse_assign.forbidden_assign_to', username: assign_to.username) }
183+
{ error: I18n.t("discourse_assign.forbidden_assign_to", username: assign_to.username) }
162184
when :forbidden_assignee_not_pm_participant
163-
{ error: I18n.t('discourse_assign.forbidden_assignee_not_pm_participant', username: assign_to.username) }
185+
{
186+
error:
187+
I18n.t(
188+
"discourse_assign.forbidden_assignee_not_pm_participant",
189+
username: assign_to.username,
190+
),
191+
}
164192
when :forbidden_assignee_cant_see_topic
165-
{ error: I18n.t('discourse_assign.forbidden_assignee_cant_see_topic', username: assign_to.username) }
193+
{
194+
error:
195+
I18n.t(
196+
"discourse_assign.forbidden_assignee_cant_see_topic",
197+
username: assign_to.username,
198+
),
199+
}
166200
when :group_already_assigned
167-
{ error: I18n.t('discourse_assign.group_already_assigned', group: assign_to.name) }
201+
{ error: I18n.t("discourse_assign.group_already_assigned", group: assign_to.name) }
168202
when :forbidden_group_assign_to
169-
{ error: I18n.t('discourse_assign.forbidden_group_assign_to', group: assign_to.name) }
203+
{ error: I18n.t("discourse_assign.forbidden_group_assign_to", group: assign_to.name) }
170204
when :forbidden_group_assignee_not_pm_participant
171-
{ error: I18n.t('discourse_assign.forbidden_group_assignee_not_pm_participant', group: assign_to.name) }
205+
{
206+
error:
207+
I18n.t(
208+
"discourse_assign.forbidden_group_assignee_not_pm_participant",
209+
group: assign_to.name,
210+
),
211+
}
172212
when :forbidden_group_assignee_cant_see_topic
173-
{ error: I18n.t('discourse_assign.forbidden_group_assignee_cant_see_topic', group: assign_to.name) }
213+
{
214+
error:
215+
I18n.t(
216+
"discourse_assign.forbidden_group_assignee_cant_see_topic",
217+
group: assign_to.name,
218+
),
219+
}
174220
when :too_many_assigns_for_topic
175-
{ error: I18n.t('discourse_assign.too_many_assigns_for_topic', limit: Assigner::ASSIGNMENTS_PER_TOPIC_LIMIT) }
221+
{
222+
error:
223+
I18n.t(
224+
"discourse_assign.too_many_assigns_for_topic",
225+
limit: Assigner::ASSIGNMENTS_PER_TOPIC_LIMIT,
226+
),
227+
}
176228
else
177229
max = SiteSetting.max_assigned_topics
178-
{ error: I18n.t('discourse_assign.too_many_assigns', username: assign_to.username, max: max) }
230+
{
231+
error:
232+
I18n.t("discourse_assign.too_many_assigns", username: assign_to.username, max: max),
233+
}
179234
end
180235
end
181236

app/mailers/assign_mailer.rb

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,21 @@
11
# frozen_string_literal: true
22

3-
require_dependency 'email/message_builder'
3+
require_dependency "email/message_builder"
44

55
class AssignMailer < ActionMailer::Base
66
include Email::BuildEmailHelper
77

88
def self.levels
9-
@levels ||= Enum.new(never: 'never',
10-
different_users: 'different_users',
11-
always: 'always')
9+
@levels ||= Enum.new(never: "never", different_users: "different_users", always: "always")
1210
end
1311

1412
def send_assignment(to_address, topic, assigned_by)
1513
opts = {
16-
template: 'assign_mailer',
14+
template: "assign_mailer",
1715
topic_title: topic.title,
1816
assignee_name: assigned_by.username,
1917
topic_excerpt: topic.excerpt,
20-
topic_link: topic.url
18+
topic_link: topic.url,
2119
}
2220
build_email(to_address, opts)
2321
end

app/models/assign_mailer_site_settings.rb

+7-5
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
# frozen_string_literal: true
22

3-
require_dependency 'enum_site_setting'
3+
require_dependency "enum_site_setting"
44

55
class AssignMailerSiteSettings < EnumSiteSetting
6-
76
def self.valid_value?(val)
87
values.any? { |v| v[:value].to_s == val.to_s }
98
end
109

1110
def self.values
1211
@values ||= [
13-
{ name: 'discourse_assign.assign_mailer.never', value: AssignMailer.levels[:never] },
14-
{ name: 'discourse_assign.assign_mailer.different_users', value: AssignMailer.levels[:different_users] },
15-
{ name: 'discourse_assign.assign_mailer.always', value: AssignMailer.levels[:always] }
12+
{ name: "discourse_assign.assign_mailer.never", value: AssignMailer.levels[:never] },
13+
{
14+
name: "discourse_assign.assign_mailer.different_users",
15+
value: AssignMailer.levels[:different_users],
16+
},
17+
{ name: "discourse_assign.assign_mailer.always", value: AssignMailer.levels[:always] },
1618
]
1719
end
1820

app/models/assignment.rb

+9-4
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,30 @@
11
# frozen_string_literal: true
22

33
class Assignment < ActiveRecord::Base
4-
VALID_TYPES = %w(topic post).freeze
4+
VALID_TYPES = %w[topic post].freeze
55

66
belongs_to :topic
77
belongs_to :assigned_to, polymorphic: true
88
belongs_to :assigned_by_user, class_name: "User"
99
belongs_to :target, polymorphic: true
1010

11-
scope :joins_with_topics, -> { joins("INNER JOIN topics ON topics.id = assignments.target_id AND assignments.target_type = 'Topic' AND topics.deleted_at IS NULL") }
11+
scope :joins_with_topics,
12+
-> {
13+
joins(
14+
"INNER JOIN topics ON topics.id = assignments.target_id AND assignments.target_type = 'Topic' AND topics.deleted_at IS NULL",
15+
)
16+
}
1217

1318
def self.valid_type?(type)
1419
VALID_TYPES.include?(type.downcase)
1520
end
1621

1722
def assigned_to_user?
18-
assigned_to_type == 'User'
23+
assigned_to_type == "User"
1924
end
2025

2126
def assigned_to_group?
22-
assigned_to_type == 'Group'
27+
assigned_to_type == "Group"
2328
end
2429
end
2530

0 commit comments

Comments
 (0)