The missing gamification plugin for Django
Project description
Django Gamification aims to fill the gamification sized hole in the Django package ecosystem. In the current state, Django Gamification provides a set of models that can be used to implement gamification features in your application. These include a centralised interface for keeping track of all gamification related objects including badges, points, and unlockables.
Installation
Download from PyPI:
pip install django-gamification
And add to your INSTALLED_APPS:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
.
.
.
'django_gamification'
]
Features and Examples
Concepts
Django Gamification requires the understanding of a few core concepts. - BadgeDefinitions: A template used to create new Badges and update existing Badges. - Badge: An object that represents some achievable objective in the system that can award points and track its own progression. - UnlockableDefinition: A template used to create new Unlockables and update existing Unlockables. - Unlockable: An object that is achieved by some accumulation of points. - Category: An object used to label other objects like Badges via their BadgeDefinition.
Interfaces
Creating an interface
from django.contrib.auth.models import User
from django.db import models
from django_gamification.models import GamificationInterface
class YourUserModel(models.User):
# Your user fields here
# The gamification interface
interface = models.ForeignKey(GamificationInterface)
BadgeDefinitions and Badges
Creating a new badge
By creating a new BadgeDefinition, Django Gamification will automatically create Badge instances for all your current GamificationInterfaces with Badge.name, Badge.description, Badge.points, Badge.progression and Badge.category mimicking the fields on the BadgeDefinition.
from django_gamification.models import BadgeDefinition, Category
BadgeDefinition.objects.create(
name='Badge of Awesome',
description='You proved your awesomeness',
points=50,
progression_target=100,
category=Category.objects.create(name='Gold Badges', description='These are the top badges'),
)
Awarding a badge
You can manually award a Badge instance using Badge.award().
from django_gamification.models import Badge
badge = Badge.objects.first()
# badge.acquired = False
badge.award()
# badge.acquired = True
UnlockableDefinitions and Unlockables
Creating a new unlockable
By creating a new UnlockableDefinition, Django Gamification will automatically create Unlockable instances for all your current GamificationInterfaces with Unlockable.name, Unlockable.description, Unlockable.points_required mimicking the fields on the UnlockableDefinition.
from django_gamification.models import UnlockableDefinition
UnlockableDefinition.objects.create(
name='Some super sort after feature',
description='You unlocked a super sort after feature',
points_required=100
)
Contributing
Submitting an issue or feature request
If you find an issue or have a feature request please open an issue at Github Django Gamification Repo.
Working on issues
If you think that you can fix an issue or implement a feature, please make sure that it isn’t assigned to someone or if it is you may ask for an update.
Once an issue is complete, open a pull request so that your contribution can be reviewed. A TravisCI build will run and be attached to your pull request. Your code must pass these checks.
Helping others
At all times, please be polite with others who are working on issues. It may be their first ever patch and we want to foster a friendly and familiar open source environment.
Project details
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
Hashes for django_gamification-0.2.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6e71f46ed9f97218ea4065042b2a587d2ef05a6ed71900c40ee3553325dc8e47 |
|
MD5 | 2526568f265f5b65bd01cc2e96e5ce66 |
|
BLAKE2b-256 | e77932ebd3f5bd6636b1602b3fd4b812fe41cf113226aa189d6f3045f56cefcf |
Hashes for django_gamification-0.2.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 76b711ec6fc07b74e16b8185c9bca94954459d572cbdb6ad0e5e4fd36d026536 |
|
MD5 | 5e565933b06b07f2397da836f4a1a8b5 |
|
BLAKE2b-256 | 099f56d4cb4c3dcfc9f00530fe256667eb4598af10df3be2a5f71d34df80c9cc |