from django.db import models # Create your models here. from django.db import models from django.contrib.auth.models import BaseUserManager, AbstractBaseUser DEFAULT_PROFILE_IMAGE_LINK = 'https://firebasestorage.googleapis.com/v0/b/deaf-traductor.appspot.com/o/profile_deaf.png?alt=media&token=d03df52d-7191-43a6-b6d2-1d6fc66c6845' class UserManager(BaseUserManager): def create_user(self,email, password): """ Creates and saves a User with the given email and password. """ if not email: raise ValueError('Users must have email address') user = self.model( email=self.normalize_email(email), ) user.set_password(password) user.save(using=self._db) return user def create_staffuser(self, email, password): """user Creates and saves a staff user with the given email and password. """ user = self.create_user( email = email, password=password, ) user.staff = True user.save(using=self._db) return user def create_superuser(self, email, password): """ Creates and saves a superuser with the given email and password. """ user = self.create_user( email = email, password=password, ) user.staff = True user.admin = True user.is_active = True user.save(using=self._db) return user class User(AbstractBaseUser): email = models.EmailField(max_length=255, unique=True) first_name = models.CharField(max_length=255, null=True) last_name = models.CharField(max_length=255, null=True) image = models.FileField(max_length=250, null=True) is_active = models.BooleanField(default=True) staff = models.BooleanField(default=False) objects = UserManager() USERNAME_FIELD = 'email' def get_full_name(self): return f"{self.email}" def get_short_name(self): return self.email def __str__(self): return self.email def has_perm(self, perm, obj=None): "Does the user have a specific permission?" # Simplest possible answer: Yes, always return True def has_module_perms(self, app_label): "Does the user have permissions to view the app `app_label`?" # Simplest possible answer: Yes, always return True @property def is_staff(self): "Is the user a member of staff?" return self.staff @property def is_admin(self): "Is the user a admin member?" return self.admin class UserActivationCode(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, null=True) activation_code = models.CharField(max_length=20, null=True) usable = models.BooleanField(default=True) def __str__(self) -> str: return self.user.email + " : " + self.activation_code