Coverage for account/models.py: 90.00%

20 statements  

« prev     ^ index     » next       coverage.py v7.9.1, created at 2025-06-13 17:07 -0700

1from django.conf import settings 

2from django.contrib.auth import get_user_model 

3from django.db import models 

4 

5 

6class Profile(models.Model): 

7 user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) 

8 date_of_birth = models.DateField(blank=True, null=True) 

9 photo = models.ImageField(upload_to="users/%Y/%m/%d/", blank=True) 

10 

11 def __str__(self): 

12 return f"Profile of {self.user.username}" 

13 

14 

15class Contact(models.Model): 

16 user_from = models.ForeignKey( 

17 "auth.User", related_name="rel_from_set", on_delete=models.CASCADE 

18 ) 

19 user_to = models.ForeignKey( 

20 "auth.User", related_name="rel_to_set", on_delete=models.CASCADE 

21 ) 

22 created = models.DateTimeField(auto_now_add=True) 

23 

24 class Meta: 

25 indexes = [ 

26 models.Index(fields=["-created"]), 

27 ] 

28 ordering = ["-created"] 

29 

30 def __str__(self): 

31 return f"{self.user_from} follows {self.user_to}" 

32 

33 

34# Add following field to User dynamically 

35user_model = get_user_model() 

36user_model.add_to_class( 

37 "following", 

38 models.ManyToManyField( 

39 "self", through=Contact, related_name="followers", symmetrical=False 

40 ), 

41)