Create badge for your django user with postgresql triggers
Project description
Badges are earned by users for meeting some conditions defined in the badge.json file
A Badge object (database model) is then created linking a user to a badge.
conditions
Condition is a sql check to be made for awarding a badge.
You have access to the variable NEW if you set the trigger_contition to “update” or “insert”. This is the database object after update or insert.
You have access to the variable OLD if you set the trigger_contition to “update” or “delete”. This is the database object after update or delete.
triggers
We want the badges to be given as soon as a condition is meet. Even if the event come from an event outside the Django application.
We do not want to relly on celery to periodicaly check for badges
Too often : this is a performance bootleneck
Too late : annoying for users
The check for each badge is checked when “something” change.
To create the database triggers that will be responsible for badge earning run:
>>> python manage.py create_badge_triggers
When you change badge.json (adding, updating or deleting badges) run this commande to reflect those changes in the database.
badge.json example
` [{"name": "Pionner", "code": "pionner", "condition": "age(NEW.date_joined) > interval '1 year'", "trigger_condition": "update", "trigger_table": "auth_user", "user_field": "id" }, {"name": "Collector", "code": "collector" "condition": "count(id) >= 5 from dummy_sketch where user_id = NEW.user_id", "trigger_condition": "insert", "trigger_table": "dummy_sketch", "user_field": "user_id" }, {"name": "Star", "code": "star", "condition": "hit_views > 1000 ", "trigger_condition": "update", "trigger_table": "dummy_sketch", "user_field": "user_id" }] ` name is the name of the badge as it will be displayed in the front or the API.
code is th unique code name of the badge
condition is the query that will be issued to check if the badge should be earned
trigger_contition tell when the check must be made. One of insert, update or delete
INSTALL
see INSTALL file for instructions.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file django-pg-badges-0.1.tar.gz
.
File metadata
- Download URL: django-pg-badges-0.1.tar.gz
- Upload date:
- Size: 6.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f92f8a8ebfdff42e1e39433ffc844c4d46360de48c0f41f31c0e54e85b13204 |
|
MD5 | 432abca3b65e7a1df798f495f429f42b |
|
BLAKE2b-256 | 1f9a70cebf1594a84db0b697c2ae4dc5aa16a6c24184b57eee165de5af1b145f |
File details
Details for the file django-pg-badges-0.1.linux-x86_64.tar.gz
.
File metadata
- Download URL: django-pg-badges-0.1.linux-x86_64.tar.gz
- Upload date:
- Size: 11.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a0fd0cf3e69959cf3462388f4d3608b5ec83bda55fe9c9ffacd67147ac9b0af7 |
|
MD5 | 69a9e8f96b34b84e880e81028f4f2150 |
|
BLAKE2b-256 | 6e9db38f2bbf8d988da316c177d83e765d2969c9530eb6042d7dfe708cace472 |