Coverage for account/models.py: 90.00%
20 statements
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-14 21:14 -0700
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-14 21:14 -0700
1from django.conf import settings 1a
2from django.contrib.auth import get_user_model 1a
3from django.db import models 1a
6class Profile(models.Model): 1a
7 user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) 1a
8 date_of_birth = models.DateField(blank=True, null=True) 1a
9 photo = models.ImageField(upload_to="users/%Y/%m/%d/", blank=True) 1a
11 def __str__(self): 1a
12 return f"Profile of {self.user.username}"
15class Contact(models.Model): 1a
16 user_from = models.ForeignKey( 1a
17 "auth.User", related_name="rel_from_set", on_delete=models.CASCADE
18 )
19 user_to = models.ForeignKey( 1a
20 "auth.User", related_name="rel_to_set", on_delete=models.CASCADE
21 )
22 created = models.DateTimeField(auto_now_add=True) 1a
24 class Meta: 1a
25 indexes = [ 1a
26 models.Index(fields=["-created"]),
27 ]
28 ordering = ["-created"] 1a
30 def __str__(self): 1a
31 return f"{self.user_from} follows {self.user_to}"
34# Add following field to User dynamically
35user_model = get_user_model() 1a
36user_model.add_to_class( 1a
37 "following",
38 models.ManyToManyField(
39 "self", through=Contact, related_name="followers", symmetrical=False
40 ),
41)