diff options
| author | Patrick Hoste <pko@odoo.com> | 2019-06-27 07:54:04 +0000 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2019-11-05 15:08:34 +0000 |
| commit | bfbc7c6a184b2b507b1bf4ad778430bc2f3a0e7f (patch) | |
| tree | 76cc91bd7b3b2011c7930e084ed77cc12dcac980 /addons/gamification/data | |
| parent | c27ba2af1c640d91c6d7605412228687cc99cbd0 (diff) | |
[IMP] gamification: track karma change on users
PURPOSE
Allow karma gain tracking enabling notably display of top users based on
weekly / monthly gain in website profile.
SPECIFCIATIONS
Each time a user gains karma a record is created in the gamification karma
tracking model. Scheduled activity runs to consolidate the records into
monthly gain records to avoid having crowdy table and unnecessary noise
in karma gain.
This model is made private and only accessible through some dedicated
compute methods / controllers used in website profile.
In website profile module buttons are added to see users ranking based
on their total karma (like before) but also by last week and last month
gains (using the newly introduced tracking model).
LINKS
Task ID 2003505
PR #34594
Diffstat (limited to 'addons/gamification/data')
| -rw-r--r-- | addons/gamification/data/cron.xml | 13 | ||||
| -rw-r--r-- | addons/gamification/data/gamification_karma_rank_demo.xml | 9 | ||||
| -rw-r--r-- | addons/gamification/data/gamification_karma_tracking_demo.xml | 83 |
3 files changed, 96 insertions, 9 deletions
diff --git a/addons/gamification/data/cron.xml b/addons/gamification/data/cron.xml index 0ed59d39e11..4e59205647b 100644 --- a/addons/gamification/data/cron.xml +++ b/addons/gamification/data/cron.xml @@ -1,3 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> <odoo> <data noupdate="1"> <record forcecreate="True" id="ir_cron_check_challenge" model="ir.cron"> @@ -10,5 +11,17 @@ <field name="numbercall">-1</field> <field eval="False" name="doall" /> </record> + + <record id="ir_cron_consolidate_last_month" model="ir.cron"> + <field name="name">Gamification: Karma tracking consolidation</field> + <field name="model_id" ref="model_gamification_karma_tracking"/> + <field name="state">code</field> + <field name="code">model._consolidate_last_month()</field> + <field name="active" eval="True"/> + <field name="interval_number">1</field> + <field name="interval_type">months</field> + <field name="numbercall">-1</field> + <field name="nextcall" eval="(DateTime.now() + relativedelta(day=1, months=1)).strftime('%Y-%m-%d 04:00:00')" /> + </record> </data> </odoo> diff --git a/addons/gamification/data/gamification_karma_rank_demo.xml b/addons/gamification/data/gamification_karma_rank_demo.xml index 839e8750047..848e7fd68d0 100644 --- a/addons/gamification/data/gamification_karma_rank_demo.xml +++ b/addons/gamification/data/gamification_karma_rank_demo.xml @@ -1,13 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <odoo><data noupdate="1"> - <!-- Set demo karma for test tour as demo user--> - <record id="base.user_demo" model="res.users"> - <field name="karma">20</field> - </record> - <record id="base.demo_user0" model="res.users"> - <field name="karma">10</field> - </record> - <!--Ranks--> <record id="rank_student" model="gamification.karma.rank"> <field name="description_motivational" type="html"> @@ -44,5 +36,4 @@ </div> </field> </record> - </data></odoo> diff --git a/addons/gamification/data/gamification_karma_tracking_demo.xml b/addons/gamification/data/gamification_karma_tracking_demo.xml new file mode 100644 index 00000000000..01f4d8ac929 --- /dev/null +++ b/addons/gamification/data/gamification_karma_tracking_demo.xml @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo><data noupdate="1"> + + <!--base.user_demo--> + <record id="karma_tracking_user_demo_1st_day_last_month" model="gamification.karma.tracking"> + <field name="user_id" ref="base.user_demo"/> + <field name="old_value">0</field> + <field name="new_value">1000</field> + <field name="tracking_date" eval="(DateTime.now() - relativedelta(day=1, months=1)).strftime('%Y-%m-%d')"/> + </record> + <record id="karma_tracking_user_demo_2nd_day_last_month" model="gamification.karma.tracking"> + <field name="user_id" ref="base.user_demo"/> + <field name="old_value">1000</field> + <field name="new_value">1500</field> + <field name="tracking_date" eval="(DateTime.now() - relativedelta(day=2, months=1)).strftime('%Y-%m-%d')"/> + </record> + <record id="karma_tracking_user_demo_5th_day_last_month" model="gamification.karma.tracking"> + <field name="user_id" ref="base.user_demo"/> + <field name="old_value">1500</field> + <field name="new_value">2000</field> + <field name="tracking_date" eval="(DateTime.now() - relativedelta(day=5, months=1)).strftime('%Y-%m-%d')"/> + </record> + <record id="karma_tracking_user_demo_20th_day_last_month" model="gamification.karma.tracking"> + <field name="user_id" ref="base.user_demo"/> + <field name="old_value">2000</field> + <field name="new_value">2050</field> + <field name="tracking_date" eval="(DateTime.now() - relativedelta(day=20, months=1)).strftime('%Y-%m-%d')"/> + </record> + <record id="base.user_demo" model="res.users"> + <field name="karma">2500</field> + </record> + + <!--base.demo_user0 --> + <record id="karma_tracking_user_portal_2nd_day_last_month" model="gamification.karma.tracking"> + <field name="user_id" ref="base.demo_user0"/> + <field name="old_value">0</field> + <field name="new_value">5</field> + <field name="tracking_date" eval="(DateTime.now() - relativedelta(day=2, months=1)).strftime('%Y-%m-%d')"/> + </record> + <record id="karma_tracking_user_portal_3rd_day_last_month" model="gamification.karma.tracking"> + <field name="user_id" ref="base.demo_user0"/> + <field name="old_value">5</field> + <field name="new_value">10</field> + <field name="tracking_date" eval="(DateTime.now() - relativedelta(day=3, months=1)).strftime('%Y-%m-%d')"/> + </record> + <record id="karma_tracking_user_portal_10th_day_last_month" model="gamification.karma.tracking"> + <field name="user_id" ref="base.demo_user0"/> + <field name="old_value">10</field> + <field name="new_value">20</field> + <field name="tracking_date" eval="(DateTime.now() - relativedelta(day=10, months=1)).strftime('%Y-%m-%d')"/> + </record> + <record id="karma_tracking_user_portal_today_0" model="gamification.karma.tracking"> + <field name="user_id" ref="base.demo_user0"/> + <field name="old_value">20</field> + <field name="new_value">25</field> + <field name="tracking_date" eval="(DateTime.now()).strftime('%Y-%m-%d')"/> + </record> + <record id="base.demo_user0" model="res.users"> + <field name="karma">30</field> + </record> + + <!--base.user_admin (already have a tracking to 2500)--> + <record id="karma_tracking_user_admin_1st_day_last_month" model="gamification.karma.tracking"> + <field name="user_id" ref="base.user_admin"/> + <field name="old_value">0</field> + <field name="new_value">2000</field> + <field name="tracking_date" eval="(DateTime.now() - relativedelta(day=1, months=1)).strftime('%Y-%m-%d')"/> + </record> + <record id="karma_tracking_user_admin_5th_day_last_month" model="gamification.karma.tracking"> + <field name="user_id" ref="base.user_admin"/> + <field name="old_value">2000</field> + <field name="new_value">2250</field> + <field name="tracking_date" eval="(DateTime.now() - relativedelta(day=5, months=1)).strftime('%Y-%m-%d')"/> + </record> + <record id="karma_tracking_user_admin_today" model="gamification.karma.tracking"> + <field name="user_id" ref="base.user_admin"/> + <field name="old_value">2250</field> + <field name="new_value">2500</field> + <field name="tracking_date" eval="(DateTime.now()).strftime('%Y-%m-%d')"/> + </record> + +</data> +</odoo> |
