sintonia/api/libretime_api/storage/models/file.py

133 lines
5.5 KiB
Python

from django.db import models
class File(models.Model):
library = models.ForeignKey(
"storage.Library",
models.DO_NOTHING,
blank=True,
null=True,
db_column="track_type_id",
)
owner = models.ForeignKey(
"core.User",
models.DO_NOTHING,
blank=True,
null=True,
)
class ImportStatus(models.IntegerChoices):
SUCCESS = 0, "Success"
PENDING = 1, "Pending"
FAILED = 2, "Failed"
import_status = models.IntegerField(
choices=ImportStatus.choices,
default=ImportStatus.PENDING,
)
filepath = models.TextField(blank=True, null=True)
size = models.IntegerField(db_column="filesize")
exists = models.BooleanField(blank=True, null=True, db_column="file_exists")
mime = models.CharField(max_length=255)
md5 = models.CharField(max_length=32, blank=True, null=True)
hidden = models.BooleanField(blank=True, null=True)
accessed = models.IntegerField(db_column="currentlyaccessing")
scheduled = models.BooleanField(blank=True, null=True, db_column="is_scheduled")
part_of_list = models.BooleanField(blank=True, null=True, db_column="is_playlist")
created_at = models.DateTimeField(blank=True, null=True, db_column="utime")
updated_at = models.DateTimeField(blank=True, null=True, db_column="mtime")
last_played_at = models.DateTimeField(blank=True, null=True, db_column="lptime")
edited_by = models.ForeignKey(
"core.User",
on_delete=models.DO_NOTHING,
blank=True,
null=True,
related_name="edited_files",
db_column="editedby",
)
# Audio
bit_rate = models.IntegerField(blank=True, null=True)
sample_rate = models.IntegerField(blank=True, null=True)
format = models.CharField(max_length=128, blank=True, null=True) # ?
channels = models.IntegerField(blank=True, null=True)
length = models.DurationField(blank=True, null=True)
bpm = models.IntegerField(blank=True, null=True) # ?
replay_gain = models.DecimalField(
max_digits=8,
decimal_places=2,
blank=True,
null=True,
)
cue_in = models.DurationField(blank=True, null=True, db_column="cuein")
cue_out = models.DurationField(blank=True, null=True, db_column="cueout")
# Metadata
name = models.CharField(max_length=255) # ?
description = models.CharField(max_length=512, blank=True, null=True) # ?
artwork = models.CharField(max_length=512, blank=True, null=True)
artist_name = models.CharField(max_length=512, blank=True, null=True)
artist_url = models.CharField(max_length=512, blank=True, null=True) # ?
original_artist = models.CharField(max_length=512, blank=True, null=True) # ?
album_title = models.CharField(max_length=512, blank=True, null=True)
track_title = models.CharField(max_length=512, blank=True, null=True)
genre = models.CharField(max_length=64, blank=True, null=True)
mood = models.CharField(max_length=64, blank=True, null=True)
date = models.CharField(max_length=16, blank=True, null=True, db_column="year")
track_number = models.IntegerField(blank=True, null=True)
disc_number = models.CharField(max_length=8, blank=True, null=True) # ?
comment = models.TextField(blank=True, null=True, db_column="comments")
language = models.CharField(max_length=512, blank=True, null=True)
label = models.CharField(max_length=512, blank=True, null=True)
copyright = models.CharField(max_length=512, blank=True, null=True)
composer = models.CharField(max_length=512, blank=True, null=True)
conductor = models.CharField(max_length=512, blank=True, null=True)
orchestra = models.CharField(max_length=512, blank=True, null=True) # ?
encoder = models.CharField(max_length=64, blank=True, null=True)
encoded_by = models.CharField(max_length=255, blank=True, null=True) # ?
isrc = models.CharField(
max_length=512,
blank=True,
null=True,
db_column="isrc_number",
)
lyrics = models.TextField(blank=True, null=True) # ?
lyricist = models.CharField(max_length=512, blank=True, null=True) # ?
original_lyricist = models.CharField(max_length=512, blank=True, null=True) # ?
subject = models.CharField(max_length=512, blank=True, null=True) # ?
contributor = models.CharField(max_length=512, blank=True, null=True) # ?
rating = models.CharField(max_length=8, blank=True, null=True) # ?
url = models.CharField(max_length=1024, blank=True, null=True) # ?
info_url = models.CharField(max_length=512, blank=True, null=True) # ?
audio_source_url = models.CharField(max_length=512, blank=True, null=True) # ?
buy_this_url = models.CharField(max_length=512, blank=True, null=True) # ?
catalog_number = models.CharField(max_length=512, blank=True, null=True) # ?
radio_station_name = models.CharField(max_length=512, blank=True, null=True) # ?
radio_station_url = models.CharField(max_length=512, blank=True, null=True) # ?
report_datetime = models.CharField(max_length=32, blank=True, null=True) # ?
report_location = models.CharField(max_length=512, blank=True, null=True) # ?
report_organization = models.CharField(max_length=512, blank=True, null=True) # ?
def get_owner(self):
return self.owner
class Meta:
managed = False
db_table = "cc_files"
permissions = [
("change_own_file", "Change the files where they are the owner"),
("delete_own_file", "Delete the files where they are the owner"),
]