from django.contrib.auth.models import AbstractUser from django.db import models class User(AbstractUser): """Custom user model for Cloud Reader.""" email = models.EmailField(unique=True) display_name = models.CharField(max_length=150, blank=True) avatar = models.ImageField(upload_to="avatars/", blank=True, null=True) is_verified = models.BooleanField(default=False) reading_preferences = models.JSONField(default=dict, blank=True) USERNAME_FIELD = "email" REQUIRED_FIELDS = ["username"] class Meta: db_table = "accounts_user" verbose_name = "User" verbose_name_plural = "Users" def __str__(self) -> str: return self.email @property def avatar_url(self) -> str | None: if self.avatar: return self.avatar.url return None