Coverage for cheese/cheeses/models.py: 100.00%

23 statements  

« prev     ^ index     » next       coverage.py v7.9.1, created at 2025-06-16 16:36 -0700

1from autoslug import AutoSlugField 

2from django.conf import settings 

3from django.db import models 

4from django.urls import reverse 

5from django_countries.fields import CountryField 

6from model_utils.models import TimeStampedModel 

7 

8 

9class Cheese(TimeStampedModel): 

10 class Firmness(models.TextChoices): 

11 UNSPECIFIED = "unspecified", "Unspecified" 

12 SOFT = "soft", "Soft" 

13 SEMI_SOFT = "semi-soft", "Semi-Soft" 

14 SEMI_HARD = "semi-hard", "Semi-Hard" 

15 HARD = "hard", "Hard" 

16 

17 name = models.CharField("Name of Cheese", max_length=255) 

18 slug = AutoSlugField( 

19 "Cheese Address", 

20 unique=True, 

21 always_update=False, 

22 populate_from="name", 

23 ) 

24 description = models.TextField("Description", blank=True) 

25 firmness = models.CharField( 

26 "Firmness", 

27 max_length=20, 

28 choices=Firmness.choices, 

29 default=Firmness.UNSPECIFIED, 

30 ) 

31 country_of_origin = CountryField("Country of Origin", blank=True) 

32 creator = models.ForeignKey( 

33 settings.AUTH_USER_MODEL, null=True, on_delete=models.SET_NULL 

34 ) 

35 

36 def __str__(self): 

37 return self.name 1b

38 

39 def get_absolute_url(self): 

40 """Return absolute URL to the Cheese Detail page.""" 

41 return reverse("cheeses:detail", kwargs={"slug": self.slug}) 1cde