Coverage for books/models.py: 100.00%

32 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-10-24 18:34 -0700

1import uuid 

2 

3from django.contrib.auth import get_user_model 

4from django.db import models 

5from django.urls import reverse 

6 

7 

8class Book(models.Model): 

9 id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) 

10 title = models.CharField(max_length=200) 

11 author = models.CharField(max_length=200) 

12 price = models.DecimalField(max_digits=6, decimal_places=2) 

13 publisher = models.CharField(max_length=50, blank=True) 

14 pubdate = models.DateField(null=True, blank=True, help_text="Date of Publication") 

15 description = models.TextField( 

16 max_length=1000, 

17 blank=True, 

18 help_text="Enter a brief description of the book.", 

19 ) 

20 cover = models.ImageField(upload_to="covers/", blank=True) 

21 creator = models.ForeignKey(get_user_model(), null=True, on_delete=models.SET_NULL) 

22 

23 objects = models.Manager() 

24 

25 class Meta: 

26 indexes = [ 

27 models.Index(fields=["id"], name="id_index"), 

28 ] 

29 ordering = ["title"] 

30 permissions = [ 

31 ("special_status", "Can read all books"), 

32 ] 

33 

34 def __str__(self): 

35 return self.title 1b

36 

37 def get_absolute_url(self): 

38 return reverse("book_detail", args=[str(self.id)]) 1cdef

39 

40 

41class Review(models.Model): 

42 book = models.ForeignKey( 

43 Book, 

44 on_delete=models.CASCADE, 

45 related_name="reviews", 

46 ) 

47 review = models.TextField("Review", blank=True) 

48 date = models.DateTimeField(auto_now_add=True) 

49 creator = models.ForeignKey( 

50 get_user_model(), 

51 on_delete=models.CASCADE, 

52 ) 

53 

54 def __str__(self): 

55 return self.review 1g

56 

57 def get_absolute_url(self): 

58 return reverse("book_list") 1h