models.py 930 B

12345678910111213141516171819202122232425
  1. from django.contrib.auth import get_user_model
  2. from django.db import models
  3. from django_extensions.db.models import TimeStampedModel
  4. from videos.models import Video
  5. User = get_user_model()
  6. BNULL = {"blank": True, "null": True}
  7. class Scrobble(TimeStampedModel):
  8. video = models.ForeignKey(Video, on_delete=models.DO_NOTHING)
  9. user = models.ForeignKey(
  10. User, blank=True, null=True, on_delete=models.DO_NOTHING
  11. )
  12. timestamp = models.DateTimeField(**BNULL)
  13. playback_position_ticks = models.PositiveIntegerField(**BNULL)
  14. playback_position = models.CharField(max_length=8, **BNULL)
  15. is_paused = models.BooleanField(default=False)
  16. played_to_completion = models.BooleanField(default=False)
  17. source = models.CharField(max_length=255, **BNULL)
  18. source_id = models.TextField(**BNULL)
  19. def percent_played(self):
  20. return int((self.playback_position_ticks / video.run_time_ticks) * 100)