diora-web/gpodder/models.py

48 lines
1.7 KiB
Python
Raw Permalink Normal View History

from django.db import models
from django.contrib.auth.models import User
class GpodderDevice(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='gpodder_devices')
device_id = models.CharField(max_length=64)
caption = models.CharField(max_length=100, blank=True)
type = models.CharField(max_length=20, default='other')
updated_at = models.DateTimeField(auto_now=True)
class Meta:
unique_together = ('user', 'device_id')
def __str__(self):
return f"{self.user.username}/{self.device_id}"
class GpodderSubscriptionChange(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='gpodder_sub_changes')
url = models.URLField(max_length=1000)
action = models.CharField(max_length=6) # 'add' or 'remove'
timestamp = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ['timestamp']
def __str__(self):
return f"{self.action} {self.url} ({self.user.username})"
class GpodderEpisodeAction(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='gpodder_episode_actions')
device = models.ForeignKey(GpodderDevice, on_delete=models.SET_NULL, null=True, blank=True)
podcast = models.URLField(max_length=1000)
episode = models.URLField(max_length=1000)
action = models.CharField(max_length=10) # play, download, delete, new
timestamp = models.DateTimeField()
started = models.IntegerField(null=True, blank=True)
position = models.IntegerField(null=True, blank=True)
total = models.IntegerField(null=True, blank=True)
class Meta:
ordering = ['-timestamp']
def __str__(self):
return f"{self.action} {self.episode} ({self.user.username})"