From 8c655def8859891a39647a491f3a61a66c9f4391 Mon Sep 17 00:00:00 2001 From: sm4640 Date: Thu, 27 Mar 2025 16:55:26 +0900 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Feat:=20[#10]=20user=20=EB=AA=A8?= =?UTF-8?q?=EB=8D=B8=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- users/models.py | 59 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 56 insertions(+), 3 deletions(-) diff --git a/users/models.py b/users/models.py index 79eba13..4ac7949 100644 --- a/users/models.py +++ b/users/models.py @@ -1,6 +1,59 @@ from django.db import models +from common.models.baseModels import BaseModel +from common.models.choiceModels import GenderChoices, CertificateCodeUseType +from common.utils.codeManger import set_expire -from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin, AbstractUser +from django.contrib.postgres.fields import ArrayField +from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin -class User(AbstractUser): - pass \ No newline at end of file +class UserManager(BaseUserManager): + def create_user(self, email, password, **kwargs): + user = self.model(email = email, **kwargs) + user.set_password(password) + user.save(using=self._db) + return user + + def create_superuser(self, email=None, password=None, **extra_fields): + superuser = self.create_user( + email = email, + password = password, + ) + + superuser.is_staff = True + superuser.is_superuser = True + superuser.is_active = True + + superuser.save(using=self._db) + return superuser + +class User(BaseModel, AbstractBaseUser, PermissionsMixin): + email = models.EmailField(unique=True) + is_email_verified = models.BooleanField(default=False) + is_plers_terms_of_service = models.BooleanField(default=False) + is_terms_of_service_colio = models.BooleanField(default=False) + is_consent_personal_info = models.BooleanField(default=False) + is_consent_third_party_sharing = models.BooleanField(default=False) + is_consent_marketing = models.BooleanField(default=False) + phone = models.CharField(max_length=11) + is_phone_verified = models.BooleanField(default=False) + nickname = models.CharField(default=False) + gender = models.CharField(choices=GenderChoices.choices, max_length=1) + birth_date = models.CharField(max_length=10) + custom_url = models.CharField(max_length=20) + job_and_interests = ArrayField(models.CharField(max_length=20), default=list) + skills = ArrayField(models.CharField(max_length=20), default=list, blank=True) + external_links = ArrayField(models.TextField(), default=list, blank=True) + short_bio = models.CharField(max_length=100, blank=True) + profile_image = models.ImageField(upload_to='', blank=True) + + is_staff = models.BooleanField(default=False) + is_active = models.BooleanField(default=True) + + objects = UserManager() + + USERNAME_FIELD = 'email' + REQUIRED_FIELDS = [] + + def __str__(self): + return self.nickname + \ No newline at end of file