"Fossies" - the Fresh Open Source Software Archive 
Member "discourse-3.1.3/db/fixtures/006_badges.rb" (9 Nov 2023, 13205 Bytes) of package /linux/www/discourse-3.1.3.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Ruby source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
See also the last
Fossies "Diffs" side-by-side code changes report for "006_badges.rb":
3.0.6_vs_3.1.0.
1 # frozen_string_literal: true
2
3 require "badge_queries"
4
5 BadgeGrouping.seed do |g|
6 g.id = BadgeGrouping::GettingStarted
7 g.name = "Getting Started"
8 g.default_position = 10
9 end
10
11 BadgeGrouping.seed do |g|
12 g.id = BadgeGrouping::Community
13 g.name = "Community"
14 g.default_position = 11
15 end
16
17 BadgeGrouping.seed do |g|
18 g.id = BadgeGrouping::Posting
19 g.name = "Posting"
20 g.default_position = 12
21 end
22
23 BadgeGrouping.seed do |g|
24 g.id = BadgeGrouping::TrustLevel
25 g.name = "Trust Level"
26 g.default_position = 13
27 end
28
29 BadgeGrouping.seed do |g|
30 g.id = BadgeGrouping::Other
31 g.name = "Other"
32 g.default_position = 14
33 end
34
35 # BUGFIX
36 DB.exec <<-SQL.squish
37 UPDATE badges
38 SET badge_grouping_id = -1
39 WHERE NOT EXISTS (
40 SELECT 1
41 FROM badge_groupings g
42 WHERE g.id = badge_grouping_id
43 ) OR (id < 100 AND badge_grouping_id = #{BadgeGrouping::Other})
44 SQL
45
46 [
47 [Badge::BasicUser, "Basic User", BadgeType::Bronze],
48 [Badge::Member, "Member", BadgeType::Bronze],
49 [Badge::Regular, "Regular", BadgeType::Silver],
50 [Badge::Leader, "Leader", BadgeType::Gold],
51 ].each do |id, name, type|
52 Badge.seed do |b|
53 b.id = id
54 b.name = name
55 b.badge_type_id = type
56 b.query = BadgeQueries.trust_level(id)
57 b.default_badge_grouping_id = BadgeGrouping::TrustLevel
58 b.trigger = Badge::Trigger::TrustLevelChange
59 # allow title for tl3 and above
60 b.default_allow_title = id > Badge::Member
61 b.default_icon = "fa-user"
62 b.system = true
63 end
64 end
65
66 Badge.seed do |b|
67 b.id = Badge::Reader
68 b.name = "Reader"
69 b.default_icon = "book-reader"
70 b.badge_type_id = BadgeType::Bronze
71 b.multiple_grant = false
72 b.target_posts = false
73 b.show_posts = false
74 b.query = BadgeQueries::Reader
75 b.default_badge_grouping_id = BadgeGrouping::GettingStarted
76 b.auto_revoke = false
77 b.system = true
78 end
79
80 Badge.seed do |b|
81 b.id = Badge::ReadGuidelines
82 b.name = "Read Guidelines"
83 b.default_icon = "file-alt"
84 b.badge_type_id = BadgeType::Bronze
85 b.multiple_grant = false
86 b.target_posts = false
87 b.show_posts = false
88 b.query = BadgeQueries::ReadGuidelines
89 b.default_badge_grouping_id = BadgeGrouping::GettingStarted
90 b.trigger = Badge::Trigger::UserChange
91 b.system = true
92 end
93
94 Badge.seed do |b|
95 b.id = Badge::FirstLink
96 b.name = "First Link"
97 b.default_icon = "link"
98 b.badge_type_id = BadgeType::Bronze
99 b.multiple_grant = false
100 b.target_posts = true
101 b.show_posts = true
102 b.query = BadgeQueries::FirstLink
103 b.default_badge_grouping_id = BadgeGrouping::GettingStarted
104 b.trigger = Badge::Trigger::PostRevision
105 b.system = true
106 end
107
108 Badge.seed do |b|
109 b.id = Badge::FirstQuote
110 b.name = "First Quote"
111 b.default_icon = "quote-right"
112 b.badge_type_id = BadgeType::Bronze
113 b.multiple_grant = false
114 b.target_posts = true
115 b.show_posts = true
116 b.query = BadgeQueries::FirstQuote
117 b.default_badge_grouping_id = BadgeGrouping::GettingStarted
118 b.trigger = Badge::Trigger::PostRevision
119 b.system = true
120 end
121
122 Badge.seed do |b|
123 b.id = Badge::FirstLike
124 b.name = "First Like"
125 b.default_icon = "heart"
126 b.badge_type_id = BadgeType::Bronze
127 b.multiple_grant = false
128 b.target_posts = true
129 b.show_posts = true
130 b.query = BadgeQueries::FirstLike
131 b.default_badge_grouping_id = BadgeGrouping::GettingStarted
132 b.trigger = Badge::Trigger::PostAction
133 b.system = true
134 end
135
136 Badge.seed do |b|
137 b.id = Badge::FirstFlag
138 b.name = "First Flag"
139 b.default_icon = "flag"
140 b.badge_type_id = BadgeType::Bronze
141 b.multiple_grant = false
142 b.target_posts = true
143 b.show_posts = false
144 b.query = BadgeQueries::FirstFlag
145 b.default_badge_grouping_id = BadgeGrouping::GettingStarted
146 b.trigger = Badge::Trigger::PostAction
147 b.auto_revoke = false
148 b.system = true
149 end
150
151 [
152 [Badge::Promoter, "Promoter", BadgeType::Bronze, 1, 0],
153 [Badge::Campaigner, "Campaigner", BadgeType::Silver, 3, 1],
154 [Badge::Champion, "Champion", BadgeType::Gold, 5, 2],
155 ].each do |id, name, type, count, trust_level|
156 Badge.seed do |b|
157 b.id = id
158 b.name = name
159 b.default_icon = "fa-user-plus"
160 b.badge_type_id = type
161 b.multiple_grant = false
162 b.target_posts = false
163 b.show_posts = false
164 b.query = BadgeQueries.invite_badge(count, trust_level)
165 b.default_badge_grouping_id = BadgeGrouping::Community
166 # daily is good enough
167 b.trigger = Badge::Trigger::None
168 b.auto_revoke = true
169 b.system = true
170 end
171 end
172
173 Badge.seed do |b|
174 b.id = Badge::FirstShare
175 b.name = "First Share"
176 b.default_icon = "share-alt"
177 b.badge_type_id = BadgeType::Bronze
178 b.multiple_grant = false
179 b.target_posts = true
180 b.show_posts = true
181 b.query = BadgeQueries::FirstShare
182 b.default_badge_grouping_id = BadgeGrouping::GettingStarted
183 # don't trigger for now, its too expensive
184 b.trigger = Badge::Trigger::None
185 b.system = true
186 end
187
188 [
189 [Badge::NiceShare, "Nice Share", BadgeType::Bronze, 25],
190 [Badge::GoodShare, "Good Share", BadgeType::Silver, 300],
191 [Badge::GreatShare, "Great Share", BadgeType::Gold, 1000],
192 ].each do |id, name, level, count|
193 Badge.seed do |b|
194 b.id = id
195 b.name = name
196 b.default_icon = "share-alt"
197 b.badge_type_id = level
198 b.multiple_grant = true
199 b.target_posts = true
200 b.show_posts = true
201 b.query = BadgeQueries.sharing_badge(count)
202 b.default_badge_grouping_id = BadgeGrouping::Community
203 # don't trigger for now, its too expensive
204 b.trigger = Badge::Trigger::None
205 b.system = true
206 end
207 end
208
209 Badge.seed do |b|
210 b.id = Badge::Welcome
211 b.name = "Welcome"
212 b.default_icon = "heart"
213 b.badge_type_id = BadgeType::Bronze
214 b.multiple_grant = false
215 b.target_posts = true
216 b.show_posts = true
217 b.query = BadgeQueries::Welcome
218 b.default_badge_grouping_id = BadgeGrouping::Community
219 b.trigger = Badge::Trigger::PostAction
220 b.system = true
221 end
222
223 Badge.seed do |b|
224 b.id = Badge::Autobiographer
225 b.name = "Autobiographer"
226 b.default_icon = "user-edit"
227 b.badge_type_id = BadgeType::Bronze
228 b.multiple_grant = false
229 b.query = BadgeQueries::Autobiographer
230 b.default_badge_grouping_id = BadgeGrouping::GettingStarted
231 b.trigger = Badge::Trigger::UserChange
232 b.system = true
233 end
234
235 Badge.seed do |b|
236 b.id = Badge::Editor
237 b.name = "Editor"
238 b.default_icon = "pen"
239 b.badge_type_id = BadgeType::Bronze
240 b.multiple_grant = false
241 b.query = BadgeQueries::Editor
242 b.default_badge_grouping_id = BadgeGrouping::GettingStarted
243 b.trigger = Badge::Trigger::PostRevision
244 b.system = true
245 end
246
247 Badge.seed do |b|
248 b.id = Badge::WikiEditor
249 b.name = "Wiki Editor"
250 b.default_icon = "far-edit"
251 b.badge_type_id = BadgeType::Bronze
252 b.multiple_grant = false
253 b.target_posts = true
254 b.query = BadgeQueries::WikiEditor
255 b.default_badge_grouping_id = BadgeGrouping::GettingStarted
256 b.trigger = Badge::Trigger::PostRevision
257 b.system = true
258 end
259
260 [
261 [Badge::NicePost, "Nice Post", BadgeType::Bronze, false],
262 [Badge::GoodPost, "Good Post", BadgeType::Silver, false],
263 [Badge::GreatPost, "Great Post", BadgeType::Gold, false],
264 ].each do |id, name, type, topic|
265 Badge.seed do |b|
266 b.id = id
267 b.name = name
268 b.default_icon = "reply"
269 b.badge_type_id = type
270 b.multiple_grant = true
271 b.target_posts = true
272 b.show_posts = true
273 b.query = BadgeQueries.like_badge(Badge.like_badge_counts[id], topic)
274 b.default_badge_grouping_id = BadgeGrouping::Posting
275 b.trigger = Badge::Trigger::PostAction
276 b.system = true
277 end
278 end
279
280 [
281 [Badge::NiceTopic, "Nice Topic", BadgeType::Bronze, true],
282 [Badge::GoodTopic, "Good Topic", BadgeType::Silver, true],
283 [Badge::GreatTopic, "Great Topic", BadgeType::Gold, true],
284 ].each do |id, name, type, topic|
285 Badge.seed do |b|
286 b.id = id
287 b.name = name
288 b.default_icon = "file-signature"
289 b.badge_type_id = type
290 b.multiple_grant = true
291 b.target_posts = true
292 b.show_posts = true
293 b.query = BadgeQueries.like_badge(Badge.like_badge_counts[id], topic)
294 b.default_badge_grouping_id = BadgeGrouping::Posting
295 b.trigger = Badge::Trigger::PostAction
296 b.system = true
297 end
298 end
299
300 Badge.seed do |b|
301 b.id = Badge::Anniversary
302 b.name = "Anniversary"
303 b.default_icon = "birthday-cake"
304 b.badge_type_id = BadgeType::Silver
305 b.default_badge_grouping_id = BadgeGrouping::Community
306 b.query = nil
307 b.trigger = Badge::Trigger::None
308 b.auto_revoke = false
309 b.system = true
310 b.multiple_grant = true
311 end
312
313 [
314 [Badge::PopularLink, "Popular Link", BadgeType::Bronze, 50],
315 [Badge::HotLink, "Hot Link", BadgeType::Silver, 300],
316 [Badge::FamousLink, "Famous Link", BadgeType::Gold, 1000],
317 ].each do |id, name, level, count|
318 Badge.seed do |b|
319 b.id = id
320 b.name = name
321 b.default_icon = "link"
322 b.badge_type_id = level
323 b.multiple_grant = true
324 b.target_posts = true
325 b.show_posts = true
326 b.query = BadgeQueries.linking_badge(count)
327 b.default_badge_grouping_id = BadgeGrouping::Posting
328 # don't trigger for now, its too expensive
329 b.trigger = Badge::Trigger::None
330 b.system = true
331 end
332 end
333
334 [
335 [Badge::Appreciated, "Appreciated", BadgeType::Bronze, 1, 20],
336 [Badge::Respected, "Respected", BadgeType::Silver, 2, 100],
337 [Badge::Admired, "Admired", BadgeType::Gold, 5, 300],
338 ].each do |id, name, level, like_count, post_count|
339 Badge.seed do |b|
340 b.id = id
341 b.name = name
342 b.default_icon = "fa-heart"
343 b.badge_type_id = level
344 b.query = BadgeQueries.liked_posts(post_count, like_count)
345 b.default_badge_grouping_id = BadgeGrouping::Community
346 b.trigger = Badge::Trigger::None
347 b.auto_revoke = false
348 b.system = true
349 end
350 end
351
352 [
353 [Badge::ThankYou, "Thank You", BadgeType::Bronze, 20, 10],
354 [Badge::GivesBack, "Gives Back", BadgeType::Silver, 100, 100],
355 [Badge::Empathetic, "Empathetic", BadgeType::Gold, 500, 1000],
356 ].each do |id, name, level, count, ratio|
357 Badge.seed do |b|
358 b.id = id
359 b.name = name
360 b.default_icon = "fa-heart"
361 b.badge_type_id = level
362 b.query = BadgeQueries.liked_back(count, ratio)
363 b.default_badge_grouping_id = BadgeGrouping::Community
364 b.trigger = Badge::Trigger::None
365 b.auto_revoke = false
366 b.system = true
367 end
368 end
369
370 [
371 [Badge::OutOfLove, "Out of Love", BadgeType::Bronze, 1],
372 [Badge::HigherLove, "Higher Love", BadgeType::Silver, 5],
373 [Badge::CrazyInLove, "Crazy in Love", BadgeType::Gold, 20],
374 ].each do |id, name, level, count|
375 Badge.seed do |b|
376 b.id = id
377 b.name = name
378 b.default_icon = "fa-heart"
379 b.badge_type_id = level
380 b.query = BadgeQueries.like_rate_limit(count)
381 b.default_badge_grouping_id = BadgeGrouping::Community
382 b.trigger = Badge::Trigger::None
383 b.auto_revoke = false
384 b.system = true
385 end
386 end
387
388 Badge.seed do |b|
389 b.id = Badge::FirstMention
390 b.name = "First Mention"
391 b.default_icon = "at"
392 b.badge_type_id = BadgeType::Bronze
393 b.multiple_grant = false
394 b.target_posts = true
395 b.show_posts = true
396 b.query = BadgeQueries::FirstMention
397 b.default_badge_grouping_id = BadgeGrouping::GettingStarted
398 b.trigger = Badge::Trigger::PostRevision
399 b.system = true
400 end
401
402 Badge.seed do |b|
403 b.id = Badge::FirstEmoji
404 b.name = "First Emoji"
405 b.default_icon = "smile"
406 b.badge_type_id = BadgeType::Bronze
407 b.multiple_grant = false
408 b.target_posts = true
409 b.show_posts = true
410 b.query = nil
411 b.default_badge_grouping_id = BadgeGrouping::GettingStarted
412 b.trigger = Badge::Trigger::None
413 b.system = true
414 end
415
416 Badge.seed do |b|
417 b.id = Badge::FirstOnebox
418 b.name = "First Onebox"
419 b.default_icon = "cube"
420 b.badge_type_id = BadgeType::Bronze
421 b.multiple_grant = false
422 b.target_posts = true
423 b.show_posts = true
424 b.query = nil
425 b.default_badge_grouping_id = BadgeGrouping::GettingStarted
426 b.trigger = Badge::Trigger::None
427 b.system = true
428 end
429
430 Badge.seed do |b|
431 b.id = Badge::FirstReplyByEmail
432 b.name = "First Reply By Email"
433 b.default_icon = "envelope"
434 b.badge_type_id = BadgeType::Bronze
435 b.multiple_grant = false
436 b.target_posts = true
437 b.show_posts = true
438 b.query = nil
439 b.default_badge_grouping_id = BadgeGrouping::GettingStarted
440 b.trigger = Badge::Trigger::None
441 b.system = true
442 end
443
444 Badge.seed do |b|
445 b.id = Badge::NewUserOfTheMonth
446 b.name = "New User of the Month"
447 b.default_icon = "medal"
448 b.badge_type_id = BadgeType::Bronze
449 b.multiple_grant = false
450 b.target_posts = false
451 b.show_posts = false
452 b.query = nil
453 b.default_badge_grouping_id = BadgeGrouping::GettingStarted
454 b.trigger = Badge::Trigger::None
455 b.system = true
456 end
457
458 [
459 [Badge::Enthusiast, "Enthusiast", BadgeType::Bronze, 10],
460 [Badge::Aficionado, "Aficionado", BadgeType::Silver, 100],
461 [Badge::Devotee, "Devotee", BadgeType::Gold, 365],
462 ].each do |id, name, level, days|
463 Badge.seed do |b|
464 b.id = id
465 b.name = name
466 b.default_icon = "far-eye"
467 b.badge_type_id = level
468 b.query = BadgeQueries.consecutive_visits(days)
469 b.default_badge_grouping_id = BadgeGrouping::Community
470 b.trigger = Badge::Trigger::None
471 b.auto_revoke = false
472 b.system = true
473 end
474 end
475
476 Badge
477 .where("NOT system AND id < 100")
478 .each do |badge|
479 new_id = [Badge.maximum(:id) + 1, 100].max
480 old_id = badge.id
481 badge.update_columns(id: new_id)
482 UserBadge.where(badge_id: old_id).update_all(badge_id: new_id)
483 end