Master upstream patch

This commit is contained in:
Parthiv Patel committed 2021-05-31 08:13:27 +00:00
1 parent 0c96298a5f
commit 2409bc60a8
497 files changed
+86066 -42956

No files matched your search

+19 -8
View File
@@ -146,14 +146,25 @@ class GamificationBadge(models.Model):
self.update(defaults)
return
self.env.cr.execute("""
SELECT badge_id, count(user_id) as granted_count,
count(distinct(user_id)) as granted_users_count,
array_agg(distinct(user_id)) as unique_owner_ids
FROM gamification_badge_user
WHERE badge_id in %s
GROUP BY badge_id
""", [tuple(self.ids)])
Users = self.env["res.users"]
query = Users._where_calc([])
Users._apply_ir_rules(query)
badge_alias = query.join("res_users", "id", "gamification_badge_user", "user_id", "badges")
tables, where_clauses, where_params = query.get_sql()
self.env.cr.execute(
f"""
SELECT {badge_alias}.badge_id, count(res_users.id) as stat_count,
count(distinct(res_users.id)) as stat_count_distinct,
array_agg(distinct(res_users.id)) as unique_owner_ids
FROM {tables}
WHERE {where_clauses}
AND {badge_alias}.badge_id IN %s
GROUP BY {badge_alias}.badge_id
""",
[*where_params, tuple(self.ids)]
)
mapping = {
badge_id: {
+7 -13
View File
@@ -245,19 +245,13 @@ class Challenge(models.Model):
# exclude goals for users that did not connect since the last update
yesterday = fields.Date.to_string(date.today() - timedelta(days=1))
self.env.cr.execute("""SELECT gg.id
FROM gamification_goal as gg,
gamification_challenge as gc,
res_users as ru,
res_users_log as log
WHERE gg.challenge_id = gc.id
AND gg.user_id = ru.id
AND ru.id = log.create_uid
AND gg.write_date < log.create_date
FROM gamification_goal as gg
JOIN res_users_log as log ON gg.user_id = log.create_uid
WHERE gg.write_date < log.create_date
AND gg.closed IS NOT TRUE
AND gc.id IN %s
AND gg.challenge_id IN %s
AND (gg.state = 'inprogress'
OR (gg.state = 'reached'
AND (gg.end_date >= %s OR gg.end_date IS NULL)))
OR (gg.state = 'reached' AND gg.end_date >= %s))
GROUP BY gg.id
""", [tuple(self.ids), yesterday])
@@ -360,7 +354,7 @@ class Challenge(models.Model):
participant_user_ids = set(challenge.user_ids.ids)
user_squating_challenge_ids = user_with_goal_ids - participant_user_ids
if user_squating_challenge_ids:
# users that used to match the challenge
# users that used to match the challenge
Goals.search([
('challenge_id', '=', challenge.id),
('user_id', 'in', list(user_squating_challenge_ids))
@@ -451,7 +445,7 @@ class Challenge(models.Model):
'action': <{True,False}>,
'display_mode': <{progress,boolean}>,
'target': <challenge line target>,
'state': <gamification.goal state {draft,inprogress,reached,failed,canceled}>,
'state': <gamification.goal state {draft,inprogress,reached,failed,canceled}>,
'completeness': <percentage>,
'current': <current value>,
}