class User(AbstractBaseUser, PermissionsMixin): class Meta: verbose_name = 'Пользователь' verbose_name_plural = 'Пользователи' ordering = ['-level', 'username'] username_validator = UnicodeUsernameValidator() org_validator, fullname_validator = TitleValidator(), FullnameValidator() username = models.CharField( verbose_name='Имя пользователя', validators=[username_validator, MinLengthValidator(3)], max_length=25, unique=True) password = models.CharField(_('password'), max_length=128, validators=[MinLengthValidator(8)]) fullname = encrypt( models.CharField(verbose_name='ФИО пользователя', validators=[fullname_validator], max_length=100, unique=True, null=True, default=None)) organization = encrypt( models.CharField(verbose_name='Организация', max_length=120, validators=[org_validator], null=True, default=None)) added = CreationDateTimeField(verbose_name='Дата создания') updated = ModificationDateTimeField( verbose_name='Дата последнего изменения') timezone = TimeZoneField(default='Europe/Moscow', verbose_name="Часовой пояс") email = models.EmailField(verbose_name='Почта пользователя', unique=True) level = models.IntegerField(verbose_name='Уровень прав пользователя', choices=USER_LEVELS, default=USER_LEVELS.USER) is_staff = models.BooleanField('Может использовать админ сайт', default=False) is_active = models.BooleanField( 'Активен', default=True, help_text= 'Активен ли пользователь. Используется вместо удаления объекта.') profile_img = models.ImageField(upload_to=profile_upload, blank=True, null=True, verbose_name='Картинка профиля') objects = UserManager() EMAIL_FIELD = 'email' USERNAME_FIELD = 'username' REQUIRED_FIELDS = ['email'] def get_token(self, password: str, request: 'Request') -> str: """ Returns user JWT token Args: request (Request): passed request password (str): user password Returns: str: User JWT access token """ return self.__generate_token(password, request) # TODO docs def clean(self): super().clean() self.email = self.__class__.objects.normalize_email(self.email) self.is_staff = self.level is USER_LEVELS.ADMIN if self.level is USER_LEVELS.ORGANIZER and not self.organization: self.organization = 'No organization' # TODO docs def email_user(self, subject, message, from_email=None, **kwargs): send_mail(subject, message, from_email, [self.email], **kwargs) # TODO docs def get_full_name(self): fullname = self.username if self.organization: fullname += f"({self.organization})" return fullname # TODO docs def get_short_name(self): return self.username # TODO docs def __generate_token(self, raw_password: str, request: 'Request') -> str: username, email = self.username, self.email try: data = get_tokens(self, raw_password, request) except (AuthenticationFailed, TokenError, TokenBackendError) as e: raise TokenAuthError(username, email, str(e)) access_token = data['access'] request.session['jwt_access'] = access_token refresh_token = data.get('refresh') if refresh_token is not None: request.session['jwt_refresh'] = refresh_token return access_token def __str__(self): return self.get_full_name()
import os, sys, mimetypes, http, json, re from os.path import join as osjoin # taken from Django, for convenience slug_re = re.compile(r'^[-a-zA-Z0-9_]+\Z') number_re = re.compile(r'^[0-9]+\Z') from django.contrib.auth.validators import UnicodeUsernameValidator valid_user_re = UnicodeUsernameValidator().regex import logging logger = logging.getLogger(__name__) import django #https://stackoverflow.com/questions/25967759/django-get-permpermision-string from django.contrib.contenttypes.models import ContentType from django.contrib.auth.models import Permission from django.conf import settings def permission_str_to_model(perm, obj): " convert permission from `str` to `Permission` for that `obj`" if isinstance(perm, str): content_type = ContentType.objects.get_for_model(obj) perm = Permission.objects.get(content_type=content_type, codename=perm) return perm def convert_latex_return_codes(latex_return_codes, NICK, UUID): latex_error_logs = []
class User(AbstractUser): username = models.CharField(max_length=150, validators=[UnicodeUsernameValidator()]) device_id = models.CharField(max_length=64, unique=True) USERNAME_FIELD = 'device_id'
class User(AbstractBaseUser, PermissionsMixin): """ユーザー AbstractUserをコピペし編集""" # uuid = models.UUIDField(default=uuid_lib.uuid4, # primary_key=True, editable=False) username_validator = UnicodeUsernameValidator() username = models.CharField( _('username'), max_length=150, unique=True, help_text= _('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.' ), validators=[username_validator], error_messages={ 'unique': _("A user with that username already exists."), }, ) full_name = models.CharField(_('full name'), max_length=150, blank=True) email = models.EmailField(_('email address'), blank=True) is_management = models.BooleanField(default=False) role = models.ForeignKey( Role, verbose_name=_('role'), null=True, help_text=_('Specific Roles for this user.'), related_name="user_set", related_query_name="user", on_delete=models.PROTECT, ) # role_id = models.IntegerField(_('role id'), null=True) unit_price = models.IntegerField(_('unit price(万円/月)'), null=True) is_staff = models.BooleanField( _('staff status'), default=False, help_text=_( 'Designates whether the user can log into this admin site.'), ) is_active = models.BooleanField( _('active'), default=True, help_text=_( 'Designates whether this user should be treated as active. ' 'Unselect this instead of deleting accounts.'), ) date_joined = models.DateTimeField(_('date joined'), default=timezone.now) objects = UserManager() EMAIL_FIELD = 'email' USERNAME_FIELD = 'username' REQUIRED_FIELDS = [ 'email', ] class Meta: verbose_name = _('user') verbose_name_plural = _('users') def clean(self): super().clean() self.email = self.__class__.objects.normalize_email(self.email) def email_user(self, subject, message, from_email=None, **kwargs): """Send an email to this user.""" send_mail(subject, message, from_email, [self.email], **kwargs) # 既存メソッドの変更 def get_full_name(self): return self.full_name def get_short_name(self): return self.full_name
class Usuario(SetUpModel, AbstractBaseUser, PermissionsMixin): username_validator = UnicodeUsernameValidator() username = models.CharField( _('username'), max_length=150, unique=True, help_text= _('Obrigatório, 150 caracteres ou menos. Letras, digitos e @/./+/-/ apenas.' ), validators=[username_validator], error_messages={ 'unique': _("Este usuário já existe!"), }, ) nome = models.CharField(_('nome'), max_length=150, blank=True) email = models.EmailField(_('endereco de email'), blank=True, unique=True) is_staff = models.BooleanField( _('staff status'), default=False, help_text=_('Define se o usuário pode acessar o site do admin'), ) is_active = models.BooleanField( _('active'), default=True, help_text=_('Define se o usuário está ativo ou não'), ) EMAIL_FIELD = 'email' USERNAME_FIELD = 'username' REQUIRED_FIELDS = ['email'] objects = UserManager() class Meta: db_table = 'usuario' def clean(self): super().clean() self.email = self.__class__.objects.normalize_email(self.email) def get_full_name(self): """ Return the first_name plus the last_name, with a space in between. """ full_name = str(self.nome) return full_name.strip() def get_short_name(self): """Return the short name for the user.""" return self.nome def email_user(self, subject, message, from_email=None, **kwargs): """Send an email to this user.""" send_mail(subject, message, from_email, [self.email], **kwargs) def save(self, *args, **kwargs): try: identify_hasher(self.password) except ValueError: self.set_password(self.password) super(Usuario, self).save(*args, **kwargs)
class User(AbstractUser): """ 用户表 """ username_validator = UnicodeUsernameValidator() username = models.CharField( _('username'), max_length=150, unique=True, help_text= _('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.' ), validators=[username_validator], error_messages={ 'unique': _("A user with that username already exists."), }, ) stats = models.IntegerField(choices=( (0, '学生'), (1, '教师'), ), default=0, help_text='当前身份') email = models.EmailField(_('email address'), unique=True) famous_race = models.CharField(help_text='名族', max_length=100, null=True, blank=True) native_place = models.CharField(max_length=100, help_text='籍贯', null=True, blank=True) age = models.IntegerField(help_text='年龄', null=True, blank=True) sex = models.IntegerField(help_text='性别', choices=( (0, '男'), (1, '女'), (2, '保密'), ), default=2) telephone = models.CharField(max_length=50, help_text='电话', null=True, blank=True) image = models.ImageField(help_text='头像', upload_to='', null=True, blank=True) id_card = models.CharField(max_length=50, help_text='身份证', null=True, blank=True) entrance = models.DateTimeField(help_text='入学时间', null=True, blank=True) graduation = models.DateTimeField(help_text='毕业时间', null=True, blank=True) key_school_info = models.ManyToManyField(SchoolInfo, blank=True, help_text='班级-学校', through='UserSchoolInfoMany') def save(self, *args, **kwargs): if not self.username: self.username = timezone.mktime() if not kwargs.get('force_insert', None): self.userschoolinfomany_set.update(stats=self.stats) super(User, self).save(*args, **kwargs) def __str__(self): if self.last_name: return self.last_name return self.username class Meta(AbstractUser.Meta): ordering = ['-id'] pass
class User(AbstractBaseUser, PermissionsMixin): """ User model """ username_validator = UnicodeUsernameValidator() id = models.UUIDField(primary_key=True, default=uuid4, editable=False) username = models.CharField( _('username'), max_length=20, validators=[username_validator], ) email = models.EmailField( _('email address'), max_length=100, unique=True, error_messages={ 'unique': _('This email address is already registered in other account') } ) icon_image = ProcessedImageField( upload_to=settings.USER_ICON_UPLOAD_DIR, processors=[ResizeToFill(200, 200)], format='JPEG', options={'quality': 60}, default=DEFAULT_USER_ICON_IMAGE ) profile_message = models.TextField( max_length=500, blank=True, ) first_name = models.CharField(_('first name'), max_length=20, blank=True) last_name = models.CharField(_('last name'), max_length=20, blank=True) is_staff = models.BooleanField( _('staff status'), default=False, ) is_active = models.BooleanField( _('active'), default=True, ) birth_date = models.DateField(_('birth_date'), default=timezone.now) reg_date = models.DateTimeField(_('registration date'), default=timezone.now) objects = UserManager() EMAIL_FIELD = 'email' USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['username'] class Meta: verbose_name = _('user') verbose_name_plural = _('users') def email_user(self, subject, message, from_email=None, **kwargs): """Send an email to this user""" send_mail(subject, message, from_email, [self.email], **kwargs)
class UserSerializer(serializers.Serializer): username = serializers.CharField(validators=[UnicodeUsernameValidator()])
class SingleUserWorkspacePermissionSerializer(serializers.Serializer): # Allow empty username since anonymous user is a reader for public workspaces username = serializers.CharField(validators=[UnicodeUsernameValidator()], allow_blank=True) workspace = serializers.CharField() permission = serializers.IntegerField(allow_null=True) permission_label = serializers.CharField(allow_null=True)
class User(AbstractBaseUser, PermissionsMixin): username_validator = UnicodeUsernameValidator() def user_profile_picture_path(self, filename): random_string = random_string_generator(size=5) final_file_name = ''.join([self.username, random_string]) return 'profile_pictures/{0}.jpeg'.format(final_file_name) def user_avatar_path(self, filename): random_string = random_string_generator(size=5) final_file_name = ''.join([self.username, random_string]) return 'profile_pictures/{0}-avatar.jpeg'.format(final_file_name) username = models.CharField( _('username'), max_length=50, unique=True, help_text=_('Required. 50 characters or fewer. Letters, digits and @/./+/-/_ only.'), validators=[username_validator], error_messages={ 'unique': _("A user with that username already exists."), }, ) first_name = models.CharField(_('first name'), max_length=50, blank=True) last_name = models.CharField(_('last name'), max_length=50, blank=True) email = models.EmailField(_('email address'), max_length=50, unique=True) is_staff = models.BooleanField( _('staff status'), default=False, help_text=_('Designates whether the user can log into this admin site.'), ) uuid = models.UUIDField(db_index=True, default=uuid_lib.uuid4, editable=False) is_active = models.BooleanField( _('active'), default=False, help_text=_( 'Designates whether this user should be treated as active. ' 'Unselect this instead of deleting accounts.' ), ) phone_number = models.CharField(_('phone number'), max_length=16, blank=True) is_email_verified = models.BooleanField(_('email verified'), default=False) date_joined = models.DateTimeField(_('date joined'), default=timezone.now) title = models.CharField(_('title'), max_length=150, blank=True) bio = models.CharField(_('biograghy'), max_length=3000, blank=True) profile_picture = models.ImageField(upload_to=user_profile_picture_path, blank=True) avatar = models.ImageField(upload_to=user_avatar_path, blank=True) balance = models.IntegerField(default=Constants.USER_INITIAL_BALANCE) rate = models.IntegerField(default=0) objects = UserManager() EMAIL_FIELD = 'email' USERNAME_FIELD = 'username' REQUIRED_FIELDS = ['email', 'first_name', 'last_name'] class Meta: verbose_name = _('user') verbose_name_plural = _('users') def __str__(self): return '%s' % (self.username) def clean(self): super().clean() self.email = self.__class__.objects.normalize_email(self.email) def get_full_name(self): """ Return the first_name plus the last_name, with a space in between. """ full_name = '%s %s' % (self.first_name, self.last_name) return full_name.strip() def get_short_name(self): """Return the short name for the user.""" return self.first_name def email_user(self, subject, message, from_email=None, **kwargs): """Send an email to this user.""" send_mail(subject, message, from_email, [self.email], **kwargs) def send_verification_email(self, uid, token): plaintext = get_template('activate-email.txt') htmly = get_template('activate-email.html') d = { 'user': self, 'domain': 'localhost', 'uid': uid, 'token': token, } text_content = plaintext.render(d) html_content = htmly.render(d) subject = 'تایید ایمیل' from_email = sporthub_core.settings.EMAIL_HOST_USER to = self.email msg = EmailMultiAlternatives(subject, text_content, from_email, [to]) msg.attach_alternative(html_content, "text/html") msg.send() # send_mail_async.delay(subject=subject, from_email=from_email, to_email=to, text_content=text_content, # html_content=html_content) def send_passwordreset_email(self, uid, token): plaintext = get_template('reset-password.txt') htmly = get_template('reset-password.html') d = { 'user': self, 'domain': 'wishwork.ir', 'uid': uid, 'token': token, } text_content = plaintext.render(d) html_content = htmly.render(d) subject = 'بازیابی رمز عبور' from_email = sporthub_core.settings.EMAIL_HOST_USER to = self.email msg = EmailMultiAlternatives(subject, text_content, from_email, [to]) msg.attach_alternative(html_content, "text/html") msg.send()
class CustumUser(AbstractUser): F = 'femme' M = 'homme' SEXE_CHOICES = [ (F, 'F'), (M, 'M'), ] username_validator = UnicodeUsernameValidator() district = models.ForeignKey(District, on_delete=models.CASCADE, related_name='particuliers', verbose_name='quartier', default=1) sex = models.CharField(max_length=5, choices=SEXE_CHOICES, default=M, verbose_name='sexe') last_name = models.CharField( blank=False, max_length=150, verbose_name='nom(s)', ) first_name = models.CharField(blank=False, max_length=30, verbose_name='prenom(s)') username = models.CharField( error_messages={ 'unique': 'Un utilisateur avec ce pseudo existe deja.' }, help_text='Obligatoire,seulement des lettres, chiffres et @/./+/-/_ ', max_length=150, unique=True, validators=[username_validator], verbose_name='pseudo') email = models.EmailField(blank=False, max_length=254, verbose_name='adresse email') password = models.CharField(max_length=128, verbose_name='mot de passe', help_text='donner un mot de passe fort') phone_number = PhoneNumberField(unique=True, verbose_name='numéro de téléphone') photo = models.ImageField(upload_to='profile_images/', verbose_name='image de profil') date_joined = models.DateTimeField(default=timezone.now, verbose_name='date inscription') is_active = models.BooleanField( default=True, help_text="designe si l'utilisateur a le droit de se connecter au site", verbose_name='actif') last_login = models.DateTimeField( blank=True, null=True, ) is_superuser = models.BooleanField(default=False, ) is_staff = models.BooleanField(default=False, ) groups = models.ManyToManyField( Group, verbose_name='groups', blank=True, help_text= 'un utilisateur appartenant a ce groupe aura les autorisations associees', related_name="groupes_utilisateur", related_query_name="utilisateur", ) user_permissions = models.ManyToManyField( Permission, blank=True, help_text='autorisations specifiques pour cet utilisateur.', related_name='permissions', verbose_name="permissions_de_l'utilisateur") class Meta(AbstractUser.Meta): abstract = False
class User(AbstractBaseUser, PermissionsMixin): """Custom user class to be used for the Mike's Night project""" # Validators username_validator = UnicodeUsernameValidator() customer_username_validator = CustomUsernameValidator() email_validator = EmailValidator() avatar_validator = FileValidator(max_size=15*1024*1024) # Default values avatar_default = 'pics/users/_default/avatar/default.jpg' # Model fields email = models.EmailField( _('email'), unique=True, blank=False, null=False, validators=[email_validator] ) username = models.CharField( _('username'), max_length=20, unique=True, blank=False, null=False, help_text=_('Letters, numbers, dashes, and underscores only. Username must be between 3 and 20 characters.'), validators=[ username_validator, customer_username_validator, username_blacklist_validator, MinLengthValidator(3), MaxLengthValidator(20), ], error_messages={ 'unique': _('A user with that username already exists.'), 'invalid': _('Letters, numbers, dashes, and underscores only. Username must be between 3 and 20 characters.'), }, ) phone_number_country_code = models.CharField( _('phone number country code'), choices=PHONE_NUMBER_COUNTRY_CODE_CHOICES, null=True, blank=True, max_length=5, ) phone_number = PhoneNumberField(_('phone number'), blank=True, null=True, unique=True) is_staff = models.BooleanField( _('staff status'), default=False, help_text=_('Designates whether the user can log into this admin site.'), ) is_active = models.BooleanField( _('active'), default=True, help_text=_( 'Designates whether this user should be treated as active. ' 'Unselect this instead of deleting accounts.' ), ) date_joined = models.DateTimeField(_('date joined'), default=timezone.now) permalink_id = models.CharField(max_length=10, blank=True, null=True, unique=True) is_email_verified = models.BooleanField( _('email verified'), default=False, help_text=_( 'Designates whether the email address is verified by a provided verification link.' ), ) email_verification_sent_datetime = models.DateTimeField(default=timezone.now) email_verification_expiration_datetime = models.DateTimeField(default=verification_expiration_calculator) email_verification_sent_count = models.IntegerField(default=1) name = models.CharField(_('name'), max_length=128, null=True, blank=True) birth_date = models.DateField(null=True, blank=True) country = models.CharField(max_length=128, null=True, blank=True) gender = models.CharField( _('gender'), max_length=32, choices=[(tag.name, tag.value) for tag in GenderChoice], null=True, blank=True ) bio = models.TextField(max_length=500, null=True, blank=True) avatar = models.ImageField( upload_to=avatar_upload_to, max_length=255, null=False, blank=True, default=avatar_default, validators=[avatar_validator], #storage=PublicMediaStorage() ### bring back *** ) website = models.CharField(max_length=255, null=True, blank=True) # Managers objects = UserManager() USERNAME_FIELD = 'username' REQUIRED_FIELDS = ['email',] class Meta: verbose_name = _('user') verbose_name_plural = _('users') def __str__(self): return self.username def save(self, *args, **kwargs): if not self.permalink_id: # Generate a permalink_id until we generate q unique one self.permalink_id = generate_permalink_id(10) while User.objects.filter(permalink_id=self.permalink_id).exists(): self.permalink_id = generate_permalink_id(10) super(User, self).save() def email_user(self, subject, message, from_email=None, **kwargs): send_mail(subject, message, from_email, [self.email], **kwargs)
class Migration(migrations.Migration): replaces = [ ("common", "0001_initial"), ("common", "0008_squashed_41"), ("common", "0009_jsonb"), ("common", "0010_remove_wizard"), ("common", "0011_username"), ("common", "0012_adminLT_param"), ("common", "0013_currency_param"), ] initial = True dependencies = [ ("auth", "0006_require_contenttypes_0002"), ("contenttypes", "0002_remove_content_type_name"), ] operations = [ migrations.CreateModel( name="User", fields=[ ( "id", models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("password", models.CharField(max_length=128, verbose_name="password")), ( "last_login", models.DateTimeField(blank=True, null=True, verbose_name="last login"), ), ( "is_superuser", models.BooleanField( default=False, help_text= "Designates that this user has all permissions without explicitly assigning them.", verbose_name="superuser status", ), ), ( "username", models.CharField( error_messages={ "unique": "A user with that username already exists." }, help_text= "Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.", max_length=150, unique=True, validators=[UnicodeUsernameValidator()], verbose_name="username", ), ), ( "first_name", models.CharField(blank=True, max_length=30, verbose_name="first name"), ), ( "last_name", models.CharField(blank=True, max_length=30, verbose_name="last name"), ), ( "email", models.EmailField(blank=True, max_length=254, verbose_name="email address"), ), ( "is_staff", models.BooleanField( default=False, help_text= "Designates whether the user can log into this admin site.", verbose_name="staff status", ), ), ( "is_active", models.BooleanField( default=True, help_text= "Designates whether this user should be treated as active. Unselect this instead of deleting accounts.", verbose_name="active", ), ), ( "date_joined", models.DateTimeField(default=django.utils.timezone.now, verbose_name="date joined"), ), ( "language", models.CharField( choices=[ ("auto", "Detect automatically"), ("en", "English"), ("fr", "French"), ("de", "German"), ("he", "Hebrew"), ("it", "Italian"), ("ja", "Japanese"), ("nl", "Dutch"), ("pt", "Portuguese"), ("pt-br", "Brazilian Portuguese"), ("ru", "Russian"), ("es", "Spanish"), ("zh-cn", "Simplified Chinese"), ("zh-tw", "Traditional Chinese"), ], default="auto", max_length=10, verbose_name="language", ), ), ( "theme", models.CharField( choices=[ ("earth", "Earth"), ("grass", "Grass"), ("lemon", "Lemon"), ("odoo", "Odoo"), ("openbravo", "Openbravo"), ("orange", "Orange"), ("snow", "Snow"), ("strawberry", "Strawberry"), ("water", "Water"), ], default="earth", max_length=20, verbose_name="theme", ), ), ( "pagesize", models.PositiveIntegerField(default=100, verbose_name="page size"), ), ( "horizonbuckets", models.CharField(blank=True, max_length=300, null=True), ), ("horizonstart", models.DateTimeField(blank=True, null=True)), ("horizonend", models.DateTimeField(blank=True, null=True)), ("horizontype", models.BooleanField(default=True)), ( "horizonlength", models.IntegerField(blank=True, default=6, null=True), ), ( "horizonunit", models.CharField( blank=True, choices=[("day", "day"), ("week", "week"), ("month", "month")], default="month", max_length=5, null=True, ), ), ( "lastmodified", models.DateTimeField( auto_now=True, db_index=True, null=True, verbose_name="last modified", ), ), ( "groups", models.ManyToManyField( blank=True, help_text= "The groups this user belongs to. A user will get all permissions granted to each of their groups.", related_name="user_set", related_query_name="user", to="auth.Group", verbose_name="groups", ), ), ( "user_permissions", models.ManyToManyField( blank=True, help_text="Specific permissions for this user.", related_name="user_set", related_query_name="user", to="auth.Permission", verbose_name="user permissions", ), ), ], options={ "db_table": "common_user", "verbose_name": "user", "verbose_name_plural": "users", }, managers=[("objects", django.contrib.auth.models.UserManager())], ), migrations.CreateModel( name="Bucket", fields=[ ( "source", models.CharField( blank=True, db_index=True, max_length=300, null=True, verbose_name="source", ), ), ( "lastmodified", models.DateTimeField( db_index=True, default=django.utils.timezone.now, editable=False, verbose_name="last modified", ), ), ( "name", models.CharField( max_length=300, primary_key=True, serialize=False, verbose_name="name", ), ), ( "description", models.CharField( blank=True, max_length=500, null=True, verbose_name="description", ), ), ( "level", models.IntegerField( help_text= "Higher values indicate more granular time buckets", verbose_name="level", ), ), ], options={ "db_table": "common_bucket", "verbose_name": "bucket", "verbose_name_plural": "buckets", }, ), migrations.CreateModel( name="Comment", fields=[ ( "id", models.AutoField(primary_key=True, serialize=False, verbose_name="identifier"), ), ("object_pk", models.TextField(verbose_name="object id")), ("comment", models.TextField(max_length=3000, verbose_name="comment")), ( "lastmodified", models.DateTimeField( default=django.utils.timezone.now, editable=False, verbose_name="last modified", ), ), ( "content_type", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="content_type_set_for_comment", to="contenttypes.ContentType", verbose_name="content type", ), ), ( "user", models.ForeignKey( blank=True, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name="user", ), ), ], options={ "db_table": "common_comment", "ordering": ("id", ), "verbose_name_plural": "comments", "verbose_name": "comment", }, ), migrations.CreateModel( name="Parameter", fields=[ ( "source", models.CharField( blank=True, db_index=True, max_length=300, null=True, verbose_name="source", ), ), ( "lastmodified", models.DateTimeField( db_index=True, default=django.utils.timezone.now, editable=False, verbose_name="last modified", ), ), ( "name", models.CharField( max_length=60, primary_key=True, serialize=False, verbose_name="name", ), ), ( "value", models.CharField(blank=True, max_length=1000, null=True, verbose_name="value"), ), ( "description", models.CharField( blank=True, max_length=1000, null=True, verbose_name="description", ), ), ], options={ "db_table": "common_parameter", "verbose_name": "parameter", "verbose_name_plural": "parameters", "abstract": False, }, ), migrations.CreateModel( name="Scenario", fields=[ ( "name", models.CharField( max_length=300, primary_key=True, serialize=False, verbose_name="name", ), ), ( "description", models.CharField( blank=True, max_length=500, null=True, verbose_name="description", ), ), ( "status", models.CharField( choices=[ ("free", "free"), ("in use", "in use"), ("busy", "busy"), ], max_length=10, verbose_name="status", ), ), ( "lastrefresh", models.DateTimeField(editable=False, null=True, verbose_name="last refreshed"), ), ], options={ "db_table": "common_scenario", "ordering": ["name"], "verbose_name_plural": "scenarios", "verbose_name": "scenario", "permissions": ( ("copy_scenario", "Can copy a scenario"), ("release_scenario", "Can release a scenario"), ), }, ), migrations.CreateModel( name="BucketDetail", fields=[ ( "source", models.CharField( blank=True, db_index=True, max_length=300, null=True, verbose_name="source", ), ), ( "lastmodified", models.DateTimeField( db_index=True, default=django.utils.timezone.now, editable=False, verbose_name="last modified", ), ), ( "id", models.AutoField(primary_key=True, serialize=False, verbose_name="identifier"), ), ( "name", models.CharField(db_index=True, max_length=300, verbose_name="name"), ), ("startdate", models.DateTimeField(verbose_name="start date")), ("enddate", models.DateTimeField(verbose_name="end date")), ( "bucket", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="common.Bucket", verbose_name="bucket", ), ), ], options={ "db_table": "common_bucketdetail", "ordering": ["bucket", "startdate"], "verbose_name_plural": "bucket dates", "verbose_name": "bucket date", "unique_together": {("bucket", "startdate")}, }, ), migrations.CreateModel( name="UserPreference", fields=[ ( "id", models.AutoField(primary_key=True, serialize=False, verbose_name="identifier"), ), ("property", models.CharField(max_length=100)), ("value", freppledb.common.fields.JSONBField(max_length=1000)), ( "user", models.ForeignKey( editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name="preferences", to=settings.AUTH_USER_MODEL, verbose_name="user", ), ), ], options={ "verbose_name_plural": "preferences", "verbose_name": "preference", "db_table": "common_preference", "unique_together": {("user", "property")}, }, ), migrations.RunPython(code=createAdminUser), ]
def validate_username(self, username): UnicodeUsernameValidator(username) if User.objects.filter(username=username).exists(): raise serializers.ValidationError( _("A user is already registered with this username.")) return username
class User(AbstractBaseUser, PermissionsMixin, TimeStampedModel): class Meta: verbose_name = _("User") verbose_name_plural = _("Users") CONSUMER = "consumer" RSLR_CLIENT = "reseller" RSLR_MANAGER = "reseller manager" ADMIN = "admin" ROLES = ( ( CONSUMER, _("Consumer"), ), ( RSLR_CLIENT, _("Reseller Client"), ), ( RSLR_MANAGER, _("Reseller Manager"), ), ( ADMIN, _("Administrator"), ), ) email = models.EmailField(_('Email address'), default="", unique=True, blank=True) pin = models.PositiveIntegerField( _("PIN"), default=get_random_pin, validators=[MinLengthValidator(6)], ) full_name = models.CharField(_('Full name'), max_length=30, default="", blank=True) slug = AutoSlugField(populate_from='full_name', unique=True) birthdate = models.DateField(verbose_name=_("Birth Date"), null=True) is_staff = models.BooleanField(_('Is Staff'), default=False) is_active = models.BooleanField(_('Is Active'), default=False) is_email = models.BooleanField(_('Is Email Verified'), default=False) role = models.CharField(verbose_name=_("Role"), max_length=15, choices=ROLES, default=CONSUMER) img = models.ImageField(verbose_name=_("Avatar"), upload_to=settings.DEFAULT_USER_FOLDER, blank=True, default=settings.DEFAULT_USER_AVATAR) city = models.CharField(verbose_name=_("City"), max_length=32, default=settings.DEFAULT_CITY_NAME) country = models.CharField(verbose_name=_("Country"), max_length=2, default=settings.DEFAULT_COUNTRY_CODE) mob = models.CharField(verbose_name=_("Mobile"), max_length=15, blank=True, validators=[_PHONE_REGEX]) push_notify = models.BooleanField(_('Push Notification'), default=True) newsletter = models.BooleanField(_('Email Newsletter'), default=False) lati = models.FloatField(_("Latitude"), default=0.0) lngt = models.FloatField(_("Longitude"), default=0.0) terms = models.BooleanField(_('Agree terms '), default=False) username_validator = UnicodeUsernameValidator( ) if six.PY3 else ASCIIUsernameValidator() username = models.CharField( _('Username'), max_length=150, unique=True, help_text= _('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.' ), validators=[username_validator], error_messages={ 'unique': _("A user with that username already exists."), }, ) objects = UserManager() EMAIL_FIELD = 'email' USERNAME_FIELD = 'username' REQUIRED_FIELDS = ['email'] @property def date_joined(self): return self.created def get_short_name(self): "Returns the short name for the user." return self.full_name if self.full_name else self.username get_short_name.short_description = _("Short Name") def save(self, *args, **kwargs): super(User, self).save(*args, **kwargs) def __str__(self): return self.full_name if self.full_name else self.username def get_dict(self): return { "pk": self.pk, "img": { "url": self.img.url, "name": self.img.name } if self.img else { "url": settings.DEFAULT_USER_AVATAR, "name": "user" }, "username": self.username, "full_name": self.full_name, "email": self.email, "created": self.created.isoformat() if self.created else None, }
class CustomUser(AbstractBaseUser, PermissionsMixin): """ Represents an application User. """ class Meta: verbose_name_plural = 'Users' username_validator = UnicodeUsernameValidator() username = models.CharField( 'username', max_length=150, unique=True, help_text= 'Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', validators=[username_validator], error_messages={ 'unique': "A user with that username already exists.", }, ) email = models.EmailField(unique=True, null=True) is_shibboleth_login_required = models.BooleanField( default=True, help_text= 'Designates whether this user is required to login via a shibboleth identity provider.', verbose_name='shibboleth login required status', ) is_staff = models.BooleanField( 'staff status', default=False, help_text='Designates whether the user can log into this site.', ) is_active = models.BooleanField( 'active', default=True, help_text='Designates whether this user should be treated as active. ' 'Unselect this instead of deleting accounts.', ) is_superuser = models.BooleanField( default=False, help_text= 'Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status', ) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) first_name = models.CharField( blank=True, max_length=30, verbose_name='first name', ) last_name = models.CharField( blank=True, max_length=30, verbose_name='last name', ) USERNAME_FIELD = 'email' REQUIRED_FIELDS = [] objects = CustomUserManager() def get_full_name(self): return self.email def get_short_name(self): return self.email def save(self, *args, **kwargs): super(CustomUser, self).save(*args, **kwargs) if self.is_shibboleth_login_required: _, domain = self.email.split('@') institution = Institution.objects.get(base_domain=domain) ShibbolethProfile.objects.update_or_create( user=self, defaults={ 'shibboleth_id': self.email, 'institution': institution, }, ) else: Profile.objects.update_or_create(user=self) self.profile.save() def __str__(self): return '{first_name} {last_name} ({email})'.format( first_name=self.first_name, last_name=self.last_name, email=self.email, )
class CustomUser(AbstractBaseUser, PermissionsMixin): gender = models.CharField(_('gender'), max_length=255, blank=True, default=_('i will not say')) profile_pic = models.ImageField(_('picture'), upload_to='user_data/profile_picture', null=True, blank=True) username_validator = UnicodeUsernameValidator() username = models.CharField( _('username'), max_length=150, unique=True, help_text= _('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.' ), validators=[username_validator], error_messages={ 'unique': _("A user with that username already exists."), }, ) email = models.EmailField(_('email address'), blank=True) is_staff = models.BooleanField( _('staff status'), default=False, help_text=_( 'Designates whether the user can log into this admin site.'), ) is_active = models.BooleanField( _('active'), default=True, help_text=_( 'Designates whether this user should be treated as active. ' 'Unselect this instead of deleting accounts.'), ) date_joined = models.DateTimeField(_('date joined'), default=timezone.now) objects = CustomUserManager() EMAIL_FIELD = 'email' USERNAME_FIELD = 'username' REQUIRED_FIELDS = ['email'] class Meta: verbose_name = _('user') verbose_name_plural = _('users') def get_full_name(self): # The user is identified by their username return self.username def get_short_name(self): # The user is identified by their username return self.username def has_perm(self, perm): "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 def __str(self): return self.username
class User(models.Model): """ User Model """ objects = models.Manager() username_validator = UnicodeUsernameValidator() def user_directory_path(self, filename): """ Format the user directory path :param filename: :return: """ # file will be uploaded to MEDIA_ROOT/user_<id>/<filename> return 'user_{0}/{1}'.format(self.id, filename) class Gender(models.TextChoices): MALE = 'M', _('MALE') FEMALE = 'F', _('FEMALE') TRANSGENDER = 'T', _('TRANSGENDER') OTHERS = 'O', _('OTHERS') __empty__ = _('(Unknown)') id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) username = models.CharField( _('username'), max_length=150, unique=True, help_text= _('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.' ), validators=[username_validator], error_messages={ 'unique': _("A user with that username already exists."), }, blank=False, null=False) first_name = models.CharField(_('First Name'), max_length=30, blank=True) last_name = models.CharField(_('Last Name'), max_length=150, blank=True) email = models.EmailField(_('Email Address'), blank=True) mobile_number = models.CharField(_('Mobile Number'), blank=True, max_length=20) password = models.CharField(_('password'), max_length=128, blank=False, null=False) avatar = models.ImageField(_('avatar'), blank=True, null=True, upload_to=user_directory_path) dob = models.DateField(_('Date of Birth'), blank=True, null=True) gender = models.CharField(_('gender'), blank=True, max_length=1, choices=Gender.choices) last_login = models.DateTimeField(_('last login'), blank=True, null=True) is_active = models.BooleanField( _('active'), default=True, help_text=_( 'Designates whether this user should be treated as active. ' 'Unselect this instead of deleting accounts.'), ) created = models.DateTimeField(_('created'), auto_now_add=True) updated = models.DateTimeField(_('updated'), default=timezone.now) def save(self, *args, **kwargs): """ Save a user instance Turn a plain-text password into a hash for database storage :param args: :param kwargs: :return: """ self.password = make_password(self.password) self.updated = timezone.now() super(User, self).save(*args, **kwargs) class Meta: app_label = _('users') verbose_name = _('user') verbose_name_plural = _('users') ordering = ('-created', )
class AbstractUser(AbstractBaseUser, PermissionsMixin): """ An abstract base class implementing a fully featured User model with admin-compliant permissions. Username and password are required. Other fields are optional. """ username_validator = UnicodeUsernameValidator() username = models.CharField( _('employee_number'), max_length=5, unique=True, # help_text=_('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.'), # validators=[username_validator], error_messages={ 'unique': _("A user with that employee_number already exists."), }, ) first_name = models.CharField(_('first name'), max_length=150, blank=True) last_name = models.CharField(_('last name'), max_length=150, blank=True) email = models.EmailField(_('email address'), blank=True) is_staff = models.BooleanField( _('staff status'), default=False, help_text=_('Designates whether the user can log into this admin site.'), ) is_active = models.BooleanField( _('active'), default=True, help_text=_( 'Designates whether this user should be treated as active. ' 'Unselect this instead of deleting accounts.' ), ) date_joined = models.DateTimeField(_('date joined'), default=timezone.now) objects = UserManager() EMAIL_FIELD = 'email' USERNAME_FIELD = 'username' REQUIRED_FIELDS = ['email'] class Meta: verbose_name = _('user') verbose_name_plural = _('users') abstract = True def clean(self): super().clean() self.email = self.__class__.objects.normalize_email(self.email) def get_full_name(self): """ Return the first_name plus the last_name, with a space in between. """ full_name = '%s %s' % (self.first_name, self.last_name) return full_name.strip() def get_short_name(self): """Return the short name for the user.""" return self.first_name def email_user(self, subject, message, from_email=None, **kwargs): """Send an email to this user.""" send_mail(subject, message, from_email, [self.email], **kwargs)
class User(AbstractBaseUser): username_validator = UnicodeUsernameValidator() username = models.CharField( _('username'), max_length=150, unique=True, help_text=_('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.'), validators=[username_validator], error_messages={ 'unique': _("A user with that username already exists."), }, ) email = models.EmailField( _('email address'), unique=True, max_length=255, error_messages={ 'unique': _("A user with that email address already exists."), }, ) is_staff = models.BooleanField( _('staff status'), default=False, help_text=_('Designates whether the user can log into this admin site.'), ) is_active = models.BooleanField( _('active'), default=True, help_text=_( 'Designates whether this user should be treated as active. ' 'Unselect this instead of deleting accounts.' ), ) is_superuser = models.BooleanField( _('superuser status'), default=False, help_text=_( 'Designates that this user has all permissions without ' 'explicitly assigning them.' ), ) date_joined = models.DateTimeField(_('date joined'), default=timezone.now) objects = UserManager() USERNAME_FIELD = 'username' REQUIRED_FIELDS = ['email'] class Meta: verbose_name = _('user') verbose_name_plural = _('users') def clean(self): super().clean() self.email = self.__class__.objects.normalize_email(self.email) def get_full_name(self): """ Return the first_name plus the last_name, with a space in between. """ return str(self.email) def get_short_name(self): """Return the short name for the user.""" return self.username def email_user(self, subject, message, from_email=None, **kwargs): """Send an email to this user.""" send_mail(subject, message, from_email, [self.email], **kwargs) def has_perm(self, perm, obj=None): return True def has_module_perms(self, app_label): return True
class VacancyUser(AbstractBaseUser, PermissionsMixin): """ 空室情報ユーザ """ username_validator = UnicodeUsernameValidator() username = models.CharField( _('username'), db_column='username', max_length=150, unique=True, db_index=True, help_text= _('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.' ), validators=[username_validator], error_messages={ 'unique': _("A user with that username already exists."), }, ) display_name = models.CharField(_('display_name'), db_column='display_name', max_length=100, null=True, blank=True) email = models.EmailField(_('email address'), db_column='email', null=True, blank=True) is_staff = models.BooleanField(_('staff status'), db_column='is_staff', default=False) is_active = models.BooleanField(_('active'), db_column='is_active', default=True) is_company = models.BooleanField(_('company'), db_column='is_company', default=False) level = models.ForeignKey( VacancyLevel, db_column='level_id', related_name='vacancy_user_levels', db_index=True, on_delete=models.PROTECT, default=3, ) allow_org_image = models.BooleanField(_('allow_org_image'), db_column='allow_org_image', default=False) trader_name = models.CharField(_('trader_name'), db_column='trader_name', max_length=100, null=True, blank=True) trader_department_name = models.CharField( _('trader_department_name'), db_column='trader_department_name', max_length=100, null=True, blank=True) trader_department_tel = models.CharField(_('trader_department_tel'), db_column='trader_department_tel', max_length=20, null=True, blank=True) trader_department_address = models.CharField( _('trader_department_address'), db_column='trader_department_address', max_length=255, null=True, blank=True) note = models.CharField(_('note'), db_column='note', max_length=255, null=True, blank=True) date_joined = models.DateTimeField(_('date joined'), db_column='date_joined', default=timezone.now) groups = models.ManyToManyField( Group, verbose_name=_('vacancy groups'), blank=True, help_text=_( 'The groups this user belongs to. A user will get all permissions ' 'granted to each of their groups.'), related_name="vacancy_user_set", related_query_name="vacancy_user", ) user_permissions = models.ManyToManyField( Permission, verbose_name=_('vacancy user permissions'), blank=True, help_text=_('Specific permissions for this user.'), related_name="vacancy_user_set", related_query_name="vacancy_user", ) objects = UserManager() EMAIL_FIELD = 'email' USERNAME_FIELD = 'username' REQUIRED_FIELDS = ['email'] class Meta: managed = False db_table = 'auth_vacancy_user' verbose_name = _('vacancy_user') verbose_name_plural = _('vacancy_users') @property def idb64(self): return base64_decode_id(self.pk) @property def full_name(self): return self.get_full_name() @property def is_trader(self): return not self.is_company def clean(self): super().clean() self.email = self.__class__.objects.normalize_email(self.email) def get_full_name(self): return self.display_name def get_short_name(self): return self.display_name def email_user(self, subject, message, from_email=None, **kwargs): """Send an email to this user.""" send_mail(subject, message, from_email, [self.email], **kwargs)
class User(AbstractBaseUser, PermissionsMixin): """ An abstract base class implementing a fully featured User model with admin-compliant permissions. Username and password are required. Other fields are optional. """ email = models.EmailField(unique=True, error_messages={ 'unique': _("そのEメールアドレスはすでに使用されています"), }, verbose_name='Eメール') username_validator = UnicodeUsernameValidator() username = models.CharField(max_length=150, validators=[username_validator], help_text=_('150文字以下。文字と数字と @/./+/-/_ のみ。'), verbose_name='ユーザ名') birthday = models.DateField(blank=True, null=True, help_text=_('例:1996-05-31'), verbose_name='生年月日') GENDER_CHOICES = ( (1, '男性'), (2, '女性'), ) gender = models.IntegerField(verbose_name='性別', choices=GENDER_CHOICES) place = models.CharField(max_length=100, verbose_name='居住地', null=True) height = models.FloatField(help_text=_('男性は170cm未満のかた限定です。'), verbose_name='身長') date_joined = models.DateTimeField(default=timezone.now, verbose_name='登録日') user_icon = models.ImageField('画像', upload_to='images/', blank=True, null=True) #男性限定の身長バリデーションとメール def clean(self): super().clean() self.email = self.__class__.objects.normalize_email(self.email) if self.username == 'dst': #'dst'はDMの送り方を識別するために使うので予約語としておく。 raise ValidationError("'dstは名前に使えません'") if self.gender == 1: if self.height < 150.0 or self.height > 169.9: raise ValidationError('身長が170cm以上の男性はご遠慮ください') is_active = models.BooleanField( _('active'), default=True, ) is_admin = models.BooleanField(default=False) is_staff = models.BooleanField(default=False) objects = UserManager() EMAIL_FIELD = 'email' USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['username', 'birthday', 'gender', 'place', 'height'] #class Meta: # verbose_name = _('user') # verbose_name_plural = _('users') # #abstract = True # ここを削除しないといけないことを忘れない!!!!!!!!!! # swappable = 'AUTH_USER_MODEL' def email_user(self, subject, message, from_email=None, **kwargs): """Send an email to this user.""" send_mail(subject, message, from_email, [self.email], **kwargs) def __str__(self): return self.email def has_perm(self, perm, obj=None): return True def has_module_perms(self, app_label): return True
class User(AbstractBaseUser, PermissionsMixin): """ An abstract base class implementing a fully featured User model with admin-compliant permissions. Username and password are required. Other fields are optional. """ username_validator = UnicodeUsernameValidator( ) if six.PY3 else ASCIIUsernameValidator() username = models.CharField( _('username'), max_length=150, unique=True, validators=[validate_fb_username, username_validator], error_messages={ 'unique': _("A user with that username already exists."), }, ) first_name = models.CharField(_('first name'), max_length=30, blank=True) last_name = models.CharField(_('last name'), max_length=30, blank=True) email = models.EmailField(_('email address'), blank=True) is_staff = models.BooleanField( _('staff status'), default=False, help_text=_( 'Designates whether the user can log into this admin site.'), ) is_active = models.BooleanField( _('active'), default=True, help_text=_( 'Designates whether this user should be treated as active. ' 'Unselect this instead of deleting accounts.'), ) date_joined = models.DateTimeField(_('date joined'), default=timezone.now) EMAIL_FIELD = 'email' USERNAME_FIELD = 'username' REQUIRED_FIELDS = ['email'] class Meta: verbose_name = _('user') verbose_name_plural = _('users') abstract = True def get_full_name(self): """ Returns the first_name plus the last_name, with a space in between. """ full_name = '%s %s' % (self.first_name, self.last_name) return full_name.strip() def get_short_name(self): "Returns the short name for the user." return self.first_name def email_user(self, subject, message, from_email=None, **kwargs): """ Sends an email to this User. """ send_mail(subject, message, from_email, [self.email], **kwargs) # Facebook USER_TYPE_FACEBOOK = 'f' USER_TYPE_DJANGO = 'd' CHOICES_USER_TYPE = ( (USER_TYPE_FACEBOOK, 'Facebook'), (USER_TYPE_DJANGO, 'Django'), ) user_type = models.CharField( max_length=1, choices=CHOICES_USER_TYPE, ) # Additional personal info img_profile = models.ImageField( upload_to='user', blank=True, ) age = models.IntegerField( '나이', blank=True, null=True, ) like_posts = models.ManyToManyField('post.Post', verbose_name='좋아요 누른 포스트 목록', related_name='liked_user') # 내가 팔로우 하고 있는 유저 목록 # 나를 follow하고 있는 사람 목록 # followers # 내가 follow하고 있는 사람 목록은 # followed_users following_users = models.ManyToManyField( 'self', through='Relation', symmetrical=False, related_name='followers', ) objects = UserManager() class Meta: verbose_name = '사용자' verbose_name_plural = f'{verbose_name} 목록' def follow_toggle(self, user): """ :param user: :return: """ if not isinstance(user, User): raise ValueError("'user' must be a User instance.") relation, relation_created = self.following_user_relations.get_or_create( to_user=user) if relation_created: return True relation.delete() return False def like_post(self, post): """자신의 like_posts에 해당내용 추가 :param post: :return: """ self.like_posts.add(post=post)
class CustomUser(AbstractUser): username_validator = UnicodeUsernameValidator() password = models.CharField(verbose_name=_('password'), max_length=128 ) last_login = models.DateTimeField(verbose_name=_('last login'), blank=True, null=True ) username = models.CharField(verbose_name=_('username'), max_length=150, unique=True, help_text=_('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.'), validators=[username_validator], error_messages={ 'unique': _("A user with that username already exists."), }, null=True ) first_name = models.CharField(verbose_name=_('first name'), max_length=30, blank=True ) last_name = models.CharField(verbose_name=_('last name'), max_length=150, blank=True ) is_staff = models.BooleanField(verbose_name=_('staff status'), default=False, help_text=_('Designates whether the user can log into this admin site.'), ) is_active = models.BooleanField(verbose_name=_('active'), default=True, help_text=_( 'Designates whether this user should be treated as active. ' 'Unselect this instead of deleting accounts.' ), ) date_joined = models.DateTimeField(verbose_name=_('date joined'), default=timezone.now ) email = models.EmailField(verbose_name=_('Email адрес'), unique=True, error_messages={ 'unique': _("A user with that email already exists."), }, ) objects = CustomUserManager() USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['first_name'] class Meta: verbose_name = 'Пользоатель' verbose_name_plural = 'Пользователи' ordering = ['-date_joined'] def name(self): if self.first_name: if self.last_name: return self.get_full_name() else: return self.first_name else: first_name = ['Неопознаный', 'Загадочный', 'Новый', 'Странный'] last_name = ['Лемур', 'Слон', 'Тигр', 'Кот', 'Якуар', 'Медведь', 'Динозавр'] return '{first_name} {last_name}'.format(first_name=choice(first_name), last_name=choice(last_name)) def __str__(self): return '{name} ({email})'.format(name=self.name(), email=self.email)
class UpdateUserForm(forms.ModelForm): """Formulario para la modificacion del usuario.""" # Atributo de clase que almacena el id # de Usuario que esta siendo modificado id = 0 username_validator = UnicodeUsernameValidator() #: Campo para la modificacion del nombre de Usuario username = forms.CharField( label='Nombre de Usuario', min_length=3, max_length=150, required=True, help_text='Requerido. 150 caracteres o menos.' ' Solamente letras, digitos y @/./+/-/_', validators=[username_validator], ) field_order = ('username', 'first_name', 'last_name') class Meta: """Form settings.""" model = Usuario fields = ('first_name', 'last_name') def __init__(self, *args, **kwargs): """ Constructor de clase, se modifican algunos atributos predefinidos :param args: args por defecto :param kwargs: kwargs por defecto """ super().__init__(*args, **kwargs) if self.instance is not None: print("none") self.id = self.instance.id print('id') print(self.id) def update(self, key): """ Metodo que actualiza la base de datos. :param key: clave el query a la base de datos """ data = self.cleaned_data Usuario.objects.filter(username=key).update(**data) def clean_username(self): """Comprueba si el usuario es unico""" username = self.cleaned_data['username'] user_taken = Usuario.objects.filter(username=username) if user_taken.count() != 0: if user_taken[0].id != self.id: raise forms.ValidationError( 'El nombre de usuario no esta disponible' ) return username
class User(AbstractBaseUser, PermissionsMixin): is_staff = models.BooleanField( _('staff status'), default=False, help_text=_( 'Designates whether the user can log into this admin site.'), ) is_active = models.BooleanField( _('active'), default=True, help_text=_( 'Designates whether this user should be treated as active. ' 'Unselect this instead of deleting accounts.'), ) username = models.CharField( _('username'), max_length=150, unique=True, help_text= _('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.' ), validators=[UnicodeUsernameValidator()], error_messages={ 'unique': _("A user with that username already exists."), }, ) display_name = models.CharField(_('name'), max_length=30) email = models.EmailField(_('email address'), unique=True) date_joined = models.DateTimeField(_('date joined'), default=timezone.now) icon = models.ImageField(upload_to='account', blank=True) GENDER_CHOICES = (( '女性', '女性', ), ( '男性', '男性', ), ( '秘密', '秘密', )) gender = models.CharField(max_length=50, blank=True, choices=GENDER_CHOICES) def make_select_object(from_x, to_y, dates, increment=True): if increment: for i in range(from_x, to_y): dates.append([i, i]) else: for i in range(from_x, to_y, -1): dates.append([i, i]) return dates years = [] current_year = datetime.now().year BIRTH_YEAR_CHOICES = make_select_object(current_year + 1, current_year - 80, years) for i in range(len(BIRTH_YEAR_CHOICES)): BIRTH_YEAR_CHOICES[i] = [str(j) for j in BIRTH_YEAR_CHOICES[i]] birth_year = models.CharField(max_length=20, blank=True, choices=BIRTH_YEAR_CHOICES) months = [] BIRTH_MONTH_CHOICES = make_select_object(1, 13, months) for i in range(len(BIRTH_MONTH_CHOICES)): BIRTH_MONTH_CHOICES[i] = [str(j) for j in BIRTH_MONTH_CHOICES[i]] birth_month = models.CharField(max_length=20, blank=True, choices=BIRTH_MONTH_CHOICES) LOCATION_CHOICES = (( '北海道', '北海道', ), ( '東北', '東北', ), ( '関東', '関東', ), ( '中部', '中部', ), ( '近畿', '近畿', ), ( '中国', '中国', ), ( '四国', '四国', ), ( '九州', '九州', )) location = models.CharField(max_length=50, blank=True, choices=LOCATION_CHOICES) favorite_word = models.CharField(max_length=50, blank=True) objects = UserManager() EMAIL_FIELD = 'email' USERNAME_FIELD = 'username' REQUIRED_FIELDS = ['email'] class Meta: verbose_name = _('user') verbose_name_plural = _('users') def get_name(self): return self.display_name def __str__(self): return self.username
from django.contrib.auth.validators import UnicodeUsernameValidator username_validator = UnicodeUsernameValidator()
from django.utils.text import slugify from django.db import models from django.db.models import Count, Q from django.conf import settings from django.core.cache import cache from main.core.models import TimeStampedModel from main.users.manager import UserManager from autoslug import AutoSlugField import pytz, os, random, pycountry countries = sorted([(country.alpha_2, country.name) for country in pycountry.countries]) username_validator = UnicodeUsernameValidator( ) if six.PY3 else ASCIIUsernameValidator() _PHONE_REGEX = RegexValidator( regex=r'(\d{9,15})$', message=_( "Your phone number should consist of 9-15 digits. Example: 1114442277") ) def get_random_pin(): return random.choice(range(100000, 999999)) class User(AbstractBaseUser, PermissionsMixin, TimeStampedModel): class Meta: verbose_name = _("User") verbose_name_plural = _("Users")
from django.contrib.auth.validators import ASCIIUsernameValidator, UnicodeUsernameValidator username_val = [ASCIIUsernameValidator()] persona_name_val = [UnicodeUsernameValidator()]
class User(AbstractBaseUser, PermissionsMixin): username_validator = UnicodeUsernameValidator() username = models.CharField( _("username"), max_length=150, unique=True, help_text=_("Required. 150 characters or fewer. Letters, " "digits and @/./+/-/_ only."), validators=[username_validator], error_messages={ "unique": _("A user with that username already exists."), }, ) role = models.IntegerField(verbose_name=_("Роль"), default=1, choices=ROLE) first_name = models.CharField(_("first name"), max_length=30, blank=True) last_name = models.CharField(_("last name"), max_length=150, blank=True) patronymic = models.CharField(verbose_name=_("Отчество"), max_length=150, blank=True, null=True) employe_position = models.CharField( verbose_name=_("Должность сотрудника"), max_length=150, blank=True, null=True, ) phone = models.CharField(verbose_name=_("Номер телефона"), max_length=150, blank=True, null=True) email = models.EmailField(_("email address"), blank=True) is_staff = models.BooleanField( _("staff status"), default=False, help_text=_( "Designates whether the user can log into this admin site."), ) is_active = models.BooleanField( _("active"), default=True, help_text=_( "Designates whether this user should be treated as active. " "Unselect this instead of deleting accounts."), ) date_joined = models.DateTimeField(_("date joined"), default=timezone.now) objects = UserManager() EMAIL_FIELD = "email" USERNAME_FIELD = "username" REQUIRED_FIELDS = ["email"] class Meta: swappable = "AUTH_USER_MODEL" verbose_name = _("user") verbose_name_plural = _("users") def clean(self): super().clean() self.email = self.__class__.objects.normalize_email(self.email) def get_full_name(self): """ Return the first_name plus the last_name, with a space in between. """ full_name = "%s %s" % (self.first_name, self.last_name) return full_name.strip() def get_short_name(self): """Return the short name for the user.""" return self.first_name def email_user(self, subject, message, from_email=None, **kwargs): """Send an email to this user.""" send_mail(subject, message, from_email, [self.email], **kwargs)