When a song request is fulfilled, update song data.
This commit is contained in:
parent
f9d24de34c
commit
f8c49e18e5
2 changed files with 17 additions and 2 deletions
|
@ -5,4 +5,4 @@ class ProfilesConfig(AppConfig):
|
|||
name = 'profiles'
|
||||
|
||||
def ready(self):
|
||||
from .signals import create_profile
|
||||
from .signals import create_profile, update_song_plays
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
from django.conf import settings
|
||||
from django.db.models import F
|
||||
from django.db.models.signals import post_save
|
||||
from django.dispatch import receiver
|
||||
|
||||
from .models import RadioProfile
|
||||
from .models import RadioProfile, SongRequest
|
||||
|
||||
|
||||
@receiver(post_save, sender=settings.AUTH_USER_MODEL)
|
||||
|
@ -12,3 +13,17 @@ def create_profile(sender, instance, created, **kwargs):
|
|||
"""
|
||||
if created:
|
||||
profile, new = RadioProfile.objects.get_or_create(user=instance)
|
||||
|
||||
|
||||
@receiver(post_save, sender=SongRequest)
|
||||
def update_song_plays(sender, instance, created, update_fields, **kwargs):
|
||||
"""
|
||||
Update the song data with the latest play time and the number of times
|
||||
played.
|
||||
"""
|
||||
if not created and update_fields:
|
||||
if 'played_at' in update_fields:
|
||||
song = instance.song
|
||||
song.last_played = instance.played_at
|
||||
song.num_played = F('num_played') + 1
|
||||
song.save()
|
||||
|
|
Loading…
Reference in a new issue