Traditionally this is accomplished through a simple email. Lately we looked into the possibility to "push" notifications directly to the client. We did some initial research and found Firebase, a simple JSON-storage with realtime functionality.
I'll go through some simple steps and thoughts regarding desktop notifications.
First of all we need to setup some django-signals. These should be specific for your project, so I'll just take a simple case: "Whenever a NEW Blog Post is created, we need to notify ALL users." Simple enough!
Python# Our Model
from django.contrib.auth.models import User
from django.db import models
from django.db.models.signals import post_save
class Post(TimeStampedModel):
title = models.CharField(max_length=512)
content = models.TextField()
author = models.ForeignKey(User)
def get_subscribers(self):
users = User.objects.all()
users = users.exclude(pk=self.author.pk)
return users
Notice that I've imported User, models and post_save.
User because we need to connect our Post to a User.
models for obvious reasons :)
post_save because we want to trigger a function whenever a Blog Post has been saved.
I've also added a method called get_subscribers(). We will call this function whenever we need a list of users that should be notified when we create a notification for Blog Posts. We also exclude the author.
So now we have a simple model with one method.
That's all for part 1. Lets take a look at our post_save method in part 2