Add: furaffinity models.py
This commit is contained in:
parent
b643ea154f
commit
16eaa5eed7
1 changed files with 222 additions and 0 deletions
222
archivist/sites/furaffinity/models.py
Normal file
222
archivist/sites/furaffinity/models.py
Normal file
|
@ -0,0 +1,222 @@
|
|||
from django.utils.translation import gettext_lazy as _
|
||||
from django.utils.text import slugify
|
||||
from django.urls import reverse
|
||||
|
||||
from django.db import models
|
||||
|
||||
import os
|
||||
|
||||
# Create your models here.
|
||||
|
||||
class FA_UserIconFile(models.Model):
|
||||
|
||||
icon_file_hash = models.CharField(unique=True, max_length=64,)
|
||||
icon_file_name = models.CharField(max_length=150, blank=True)
|
||||
icon_file = models.FileField(upload_to="furaffinity/user_icon/", blank=True)
|
||||
date_added = models.DateTimeField(auto_now_add=True, editable=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("User Icon File")
|
||||
verbose_name_plural = _("User Icon Files")
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
#def get_absolute_url(self):
|
||||
# return reverse("FA_UserIconFile_detail", kwargs={"pk": self.pk})
|
||||
|
||||
|
||||
class FA_User(models.Model):
|
||||
|
||||
artist = models.CharField(max_length=35, unique=False,)
|
||||
artist_url = models.SlugField(max_length=40, unique=True,)
|
||||
description = models.TextField(blank=True)
|
||||
icon = models.ForeignKey(FA_UserIconFile, on_delete=models.CASCADE, blank=True, null=True)
|
||||
|
||||
|
||||
def __unicode__(self):
|
||||
return self.word
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("User")
|
||||
verbose_name_plural = _("Users")
|
||||
|
||||
def __str__(self):
|
||||
return self.artist
|
||||
|
||||
def get_absolute_url(self):
|
||||
return f"/fa/user/{self.artist_url}"
|
||||
#return reverse("fa_user", kwargs={"pk": self.pk})
|
||||
|
||||
|
||||
class FA_Tags(models.Model):
|
||||
|
||||
tag = models.CharField(verbose_name="Tag name", max_length=250, unique=True)
|
||||
tag_slug = models.SlugField(verbose_name="Tag slug/url", max_length=260, unique=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("Tag")
|
||||
verbose_name_plural = _("Tags")
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
# add slug if not already exists on save.
|
||||
if not self.tag_slug:
|
||||
self.tag_slug = slugify(self.tag)
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
def __str__(self):
|
||||
return self.tag
|
||||
|
||||
def get_absolute_url(self):
|
||||
return f"/fa/tag/{self.tag_slug}"
|
||||
|
||||
# def get_absolute_url(self):
|
||||
# return f"/fa/tag/{self.tag_url}"
|
||||
# return reverse("FA_Tag_detail", kwargs={"pk": self.pk})
|
||||
|
||||
class FA_Species(models.Model):
|
||||
|
||||
species = models.CharField(unique=True, max_length=50)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("Species")
|
||||
verbose_name_plural = _("Species")
|
||||
|
||||
def __str__(self):
|
||||
return self.species
|
||||
|
||||
# def get_absolute_url(self):
|
||||
# return reverse("FA_Species_detail", kwargs={"pk": self.pk})
|
||||
|
||||
class FA_Gender(models.Model):
|
||||
|
||||
gender = models.CharField(unique=True, max_length=30)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("Gender")
|
||||
verbose_name_plural = _("Genders")
|
||||
|
||||
def __str__(self):
|
||||
return self.gender
|
||||
|
||||
# def get_absolute_url(self):
|
||||
# return reverse("FA_Gender_detail", kwargs={"pk": self.pk})
|
||||
|
||||
class FA_Mature(models.Model):
|
||||
|
||||
mature = models.CharField(max_length=30, unique=True) #verbose_name="Mature Rating",
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("Mature Rating")
|
||||
verbose_name_plural = _("Mature Ratings")
|
||||
|
||||
def __str__(self):
|
||||
return self.mature
|
||||
|
||||
#def get_absolute_url(self):
|
||||
# return reverse("FA_Mature_detail", kwargs={"pk": self.pk})
|
||||
|
||||
class FA_Submission_File(models.Model):
|
||||
|
||||
file_hash = models.CharField(unique=True, max_length=64,)
|
||||
file_name = models.CharField(max_length=150, blank=True)
|
||||
file = models.FileField(upload_to="furaffinity/submissions/", blank=True)
|
||||
date_added = models.DateTimeField(auto_now_add=True, editable=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("Submission File")
|
||||
verbose_name_plural = _("Submission Files")
|
||||
|
||||
def __str__(self):
|
||||
return self.file_hash
|
||||
|
||||
#def delete(self, *args, **kwargs):
|
||||
# # Delete the file from the disk when the model instance is deleted
|
||||
# print('Deleting image:', self.file)
|
||||
# if self.file:
|
||||
# if os.path.isfile(self.file.path):
|
||||
# os.remove(self.file.path)
|
||||
#
|
||||
# super().delete(*args, **kwargs)
|
||||
|
||||
#def get_absolute_url(self):
|
||||
# return reverse("Submission_Image_detail", kwargs={"pk": self.pk})
|
||||
|
||||
|
||||
|
||||
class FA_Submission(models.Model):
|
||||
|
||||
MATURE = [
|
||||
("G", "General"),
|
||||
("M", "Mature"),
|
||||
("A", "Adult"),
|
||||
]
|
||||
|
||||
GENDER = [
|
||||
("Ma", "Male"),
|
||||
("Fe", "Female"),
|
||||
("He", "Herm"),
|
||||
("In", "Intersex"),
|
||||
("TM", "Trans (Male)"),
|
||||
("TF", "Trans (Female)"),
|
||||
("NB", "Non-Binary"),
|
||||
("MC", "Multiple characters"),
|
||||
("ON", "Other / Not Specified"),
|
||||
]
|
||||
|
||||
# id
|
||||
submission_id = models.PositiveBigIntegerField(verbose_name="ID", primary_key=True, unique=True, default=1)
|
||||
# url
|
||||
media_url = models.URLField(blank=True)
|
||||
# title
|
||||
title = models.CharField(default="", max_length=60)
|
||||
# description
|
||||
description = models.TextField(default="", null=True, blank=True)
|
||||
# artist
|
||||
artist = models.ForeignKey(FA_User, on_delete=models.CASCADE, null=True, related_name='submissions')
|
||||
# date
|
||||
date = models.DateTimeField(null=True)
|
||||
# NOT imported
|
||||
date_added = models.DateTimeField(auto_now_add=True, editable=True)
|
||||
# species
|
||||
species = models.ForeignKey(FA_Species, on_delete=models.CASCADE, null=True)
|
||||
# tags
|
||||
tags = models.ManyToManyField(FA_Tags)
|
||||
# rating
|
||||
mature_rating = models.ForeignKey(FA_Mature, on_delete=models.CASCADE, null=True) #CharField(max_length=2, choices=MATURE, default=MATURE[0][0])
|
||||
# comments
|
||||
number_of_comments = models.PositiveIntegerField(null=True)
|
||||
# views
|
||||
views = models.PositiveIntegerField(null=True)
|
||||
# gender
|
||||
gender = models.ForeignKey(FA_Gender, on_delete=models.CASCADE, null=True)
|
||||
# theme
|
||||
fa_theme = models.CharField(verbose_name="FA Theme", max_length=50, null=True)
|
||||
# fa_category
|
||||
fa_category = models.CharField(verbose_name="FA Category", max_length=50, null=True)
|
||||
# subcategory
|
||||
gallery_type = models.CharField(max_length=20, blank=True)
|
||||
# extension
|
||||
file_extension = models.CharField(max_length=10, blank=True)
|
||||
# height
|
||||
image_height = models.PositiveIntegerField(blank=True, null=True)
|
||||
# width
|
||||
image_width = models.PositiveIntegerField(blank=True, null=True)
|
||||
# ImageField for the image files
|
||||
file = models.ForeignKey(FA_Submission_File, on_delete=models.CASCADE, blank=True, null=True)
|
||||
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("Submission")
|
||||
verbose_name_plural = _("Submissions")
|
||||
|
||||
def __str__(self):
|
||||
return self.title
|
||||
|
||||
#def save(self, *args, **kwargs):
|
||||
# if not self.related_model:
|
||||
# self.related_model, created = FA_User.objects.get_or_create(name=self.artist)
|
||||
# super().save(*args, **kwargs)
|
||||
|
||||
# def get_absolute_url(self):
|
||||
# return reverse("FA_Submission_detail", kwargs={"pk": self.pk})
|
Loading…
Reference in a new issue