mirror of
https://github.com/th3r00t/pyShelf.git
synced 2026-04-28 01:59:35 -04:00
65 lines
1.9 KiB
Python
Executable File
65 lines
1.9 KiB
Python
Executable File
from django.contrib.postgres.search import SearchVector
|
|
from django.db import models
|
|
|
|
# Create your models here.
|
|
|
|
|
|
class Books(models.Model):
|
|
"""
|
|
pyShelfs Book Database class
|
|
:param title: Book title
|
|
:param author: Author
|
|
:param categories: Categories <-- Not implemented
|
|
:param cover: Cover image BinaryField
|
|
:param pages: # of pages <-- Not implemented
|
|
:param progress: Reader percentage <-- Not implented
|
|
:param file_name: Path to book
|
|
"""
|
|
|
|
class Meta:
|
|
db_table = "books"
|
|
|
|
def __str__(self):
|
|
return self.title
|
|
|
|
title = models.CharField(max_length=255)
|
|
author = models.CharField(max_length=255, null=True)
|
|
categories = models.CharField(max_length=255, null=True)
|
|
cover = models.BinaryField(null=True, editable=True)
|
|
pages = models.IntegerField(null=True)
|
|
progress = models.IntegerField(null=True)
|
|
file_name = models.CharField(max_length=255, null=False)
|
|
|
|
def generic_search(self, query):
|
|
try:
|
|
results = Books.objects.annotate(
|
|
search=SearchVector("title", "file_name", "author"),
|
|
).filter(search=query)
|
|
except Exception as e:
|
|
raise
|
|
return results
|
|
|
|
|
|
class Collections(models.Model):
|
|
class Meta:
|
|
db_table = "collections"
|
|
|
|
def __str__(self):
|
|
return self.collection
|
|
|
|
collection = models.CharField(max_length=255)
|
|
book_id = models.ForeignKey(Books, on_delete=models.PROTECT)
|
|
|
|
def get_absolute_url(self):
|
|
"""Returns the url to access a particular instance of MyModelName."""
|
|
return reverse("model-detail-view", args=[str(self.id)])
|
|
|
|
def generic_search(self, query):
|
|
try:
|
|
results = Books.objects.annotate(search=SearchVector("collection"),).filter(
|
|
search=query
|
|
)
|
|
except Exception as e:
|
|
raise
|
|
return results
|