Commit Graph

64 Commits

Author SHA1 Message Date
Sam Saffron
30990006a9 DEV: enable frozen string literal on all files
This reduces chances of errors where consumers of strings mutate inputs
and reduces memory usage of the app.

Test suite passes now, but there may be some stuff left, so we will run
a few sites on a branch prior to merging
2019-05-13 09:31:32 +08:00
Sam Saffron
45285f1477 DEV: remove update_attributes which is deprecated in Rails 6
See: https://github.com/rails/rails/pull/31998

update_attributes is a relic of the past, it should no longer be used.
2019-04-29 17:32:25 +10:00
Régis Hanol
88e861e895 FIX: prevent error when badge has already been awarded 2019-01-04 15:17:54 +01:00
Sam
cb824a6b33 DEV: remove all calls to SqlBuilder use DB.build instead
This is part of the migration to mini_sql, SqlBuilder.new is being
deprecated and replaced with DB.build
2018-06-20 17:53:49 +10:00
Sam
5f64fd0a21 DEV: remove exec_sql and replace with mini_sql
Introduce new patterns for direct sql that are safe and fast.

MiniSql is not prone to memory bloat that can happen with direct PG usage.
It also has an extremely fast materializer and very a convenient API

- DB.exec(sql, *params) => runs sql returns row count
- DB.query(sql, *params) => runs sql returns usable objects (not a hash)
- DB.query_hash(sql, *params) => runs sql returns an array of hashes
- DB.query_single(sql, *params) => runs sql and returns a flat one dimensional array
- DB.build(sql) => returns a sql builder

See more at: https://github.com/discourse/mini_sql
2018-06-19 16:13:36 +10:00
Sam
89ad2b5900 DEV: Rails 5.2 upgrade and global gem upgrade
This updates tests to use latest rails 5 practice
and updates ALL dependencies that could be updated

Performance testing shows that performance has not regressed
if anything it is marginally faster now.
2018-06-07 14:21:33 +10:00
Bianca Nenciu
ac8bc04ad7 Set user title from the badge view (#5049)
* title info under notification

* create badge-title as component

* display available titles, close button

* remove visual feedback when grant new badge

* Made changes after review.

* Some minor fixes.
2017-08-17 16:32:37 -04:00
Guo Xiang Tan
5012d46cbd Add rubocop to our build. (#5004) 2017-07-28 10:20:09 +09:00
Régis Hanol
a916f6b0c8 remove some warnings with already declared constants 2017-06-22 12:55:58 +02:00
Robin Ward
f05f1a24d3 Change Anniversary badge to be multiple grant, once per year 2017-04-28 14:22:54 -04:00
Robin Ward
6c3426d266 Let's not notify for trust levels on Staff, either 2017-01-11 11:25:04 -05:00
Robin Ward
7341b0d03c Don't give notifications to admins for trust level notifications 2017-01-10 12:18:48 -05:00
Rafael dos Santos Silva
c5b94878ac We need this variable later 2016-10-11 19:14:32 -03:00
Rafael dos Santos Silva
9a502c73c9 FIX: Properly localize badge notification on batch grant 2016-09-29 18:55:41 -03:00
Robin Ward
4061725a95 FIX: Don't ever grant badges when they're disabled 2016-08-19 15:16:37 -04:00
Régis Hanol
e55e2aff94 FIX: FirstReplyByEmail badge wasn't granted
DEPRECATED: PostProcess badge trigger
2016-08-10 19:24:01 +02:00
Guo Xiang Tan
57c56b68f8
FIX: Incorrect attribute. 2016-06-06 14:32:53 +08:00
Sam
72849e65de FIX: when granting old badges that are bronze, do not notify 2016-04-12 22:08:38 +10:00
Robin Ward
526573074c Add one off job to grant the emoji badge retroactively 2016-04-07 13:49:44 -04:00
Guo Xiang Tan
fe54ece35e Merge pull request #4114 from tgxworld/better_logging_for_backfilling_badges
FIX: Better logging when badges fail to backfill.
2016-04-07 13:31:50 +08:00
Robin Ward
c30d327b77 FEATURE: Two new badges - First Emoji and First Mention 2016-04-05 15:17:41 -04:00
Guo Xiang Tan
6f16896a2c FIX: Better logging when badges fail to backfill. 2016-03-24 10:10:53 +08:00
Sam Saffron
4099823efe FIX: batch badge assigner was not including full info in notification
(missing drilldown link in notification)
2016-02-01 18:27:07 +11:00
Sam
e6c1f1db52 FEATURE: link to filtered badge list from notification
When notified on a badge link to the badge page filtered on username
2016-01-18 18:20:16 +11:00
Gerhard Schlager
445bd033d2 FIX: Use correct badge slug within notifications 2015-09-24 00:49:13 +02:00
Gerhard Schlager
25e9aa7653 FIX: Use user's locale for badge notifications 2015-09-24 00:33:33 +02:00
Sam
1e4c7dfbe7 FIX: invalid plan generation when % in query on badge definition UI 2015-05-28 16:06:22 +10:00
riking
6ce26ab4d8 FIX: Don't stop the badge grant after the first failure 2015-03-28 18:36:05 -07:00
Sam
be48dfbb8c correct badge title revocation query 2014-10-09 22:01:08 +11:00
Sam
0e7be81e60 FIX: badge granted titles were not being revoked when badge was revoked 2014-10-08 10:26:18 +11:00
Sam
1792941098 Merge pull request #2740 from riking/badges_disabled
FIX: Do not perform grants if badges are disabled
2014-09-03 22:19:51 +10:00
riking
3cf493eb4f FIX: Apply contract checks when first creating a badge 2014-09-02 19:09:51 -07:00
riking
ee812eb447 FIX: Do not perform grants if badges are disabled 2014-09-02 13:12:27 -07:00
riking
808460a28f Fix magic numbers, extra param references 2014-08-31 19:36:31 -07:00
riking
1833b43ae2 FEATURE: Badge query validation, preview results, and EXPLAIN
Upon saving a badge or requesting a badge result preview,
BadgeGranter.contract_checks! will examine the provided badge SQL for
some contractual obligations - namely, the returned columns and use of
trigger parameters.

Saving the badge is wrapped in a transaction to make this easier, by
raising ActiveRecord::Rollback on a detected violation.

On the client, a modal view is added for the badge query sample run
results, named admin-badge-preview.
The preview action is moved up to the route.
The save action, on failure, triggers a 'saveError' action (also in the
route).

The preview action gains a new parameter, 'explain', which will give the
output of an EXPLAIN query for the badge sql, which can be used by forum
admins to estimate the cost of their badge queries.
The preview link is replaced by two links, one which omits (false) and
includes (true) the EXPLAIN query.

The Badge.save() method is amended to propogate errors.

Badge::Trigger gets some utility methods for use in the
BadgeGranter.contract_checks! method.

Additionally, extra checks outside of BadgeGranter.contract_checks! are
added in the preview() method, to cover cases of null granted_at
columns.

An uninitialized variable path is removed in the backfill() method.

TODO - it would be nice to be able to get the actual names of all
columns the provided query returns, so we could give more errors
2014-08-31 11:25:44 -07:00
Sam
87d2be3ecf FIX: ensure triggered badges are never triggered if filter is missing 2014-08-27 18:02:13 +10:00
Sam
1baa55fe45 FIX: preview bust when no params 2014-08-13 12:25:56 +10:00
Sam
22cd259687 FIX: remove faulty "ensure consistency" badge job 2014-08-11 09:21:06 +10:00
Sam
e6f0b94b3a FIX: bust preview
FIX: safeguard for huge delta backfill
2014-08-09 09:33:00 +10:00
Sam
953d3f2151 PERF: add optional delta badge filtering
This is tricky and optional, some badges are very expensive to calculate

pass in :backfill , :post_ids and :user_ids to all badge queries so they
can do pre-filtering, if you do it after the sub-query it is too late
2014-08-08 10:02:43 +10:00
Sam
a34037b26c FIX: typo 2014-07-24 18:38:27 +10:00
Sam
ec03d135fa FEATURE: allow advanced badge options in admin screen
clean up serializer, allow simplistic preview
2014-07-24 18:28:23 +10:00
Sam
0f9678fe49 FIX: faster update of all badges
Introduced badge triggers, introduced concept of badge that happens due to a post but has the post hidden

Delta badge grant happens once a minute, backed by redis
2014-07-23 11:46:07 +10:00
Sam
4c25fedf70 FEATURE: Reader badge
Read a every post in a topic that if 50 posts or longer
2014-07-15 15:16:41 +10:00
Sam
88469721b9 FEATURE: Allow admins to disable specific badges 2014-07-14 17:40:36 +10:00
Sam
0f25bbeaf7 FEATURE: Editor badge 2014-07-07 17:55:40 +10:00
Sam
4a25c86d61 FIX: correct duplicate granting 2014-07-05 18:32:06 +10:00
Sam
650e9348f3 FIX: multiple grant not working correctly 2014-07-04 17:41:03 +10:00
Sam
9a9ad9bda8 FEATURE: Badge progress
- Refactor model so it stores backfill query
- Implement autobiographer
- Remove sample badge
- Correct featured badges to only include a badge once
2014-07-03 17:29:44 +10:00
Sam
bc44bfcdf2 Work in progress backfill for like badges 2014-07-01 22:01:15 +10:00