133 lines
5.5 KiB
Python
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"),
|
|
]
|