# Generated by Django 2.2.7 on 2019-11-26 05:40 from django.conf import settings import django.contrib.auth.validators from django.db import migrations, models import django.db.models.deletion import django.utils.timezone import pingcap_sso.managers.user import pingcap_sso.models.security_code import pingcap_sso.models.user import pingcap_sso.validators.phone class Migration(migrations.Migration): initial = True dependencies = [ ('auth', '0011_update_proxy_permissions'), ] 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')), ('openid', models.CharField(default=pingcap_sso.models.user.generate_openid, max_length=64, unique=True, verbose_name='openid')), ('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=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')), ('email', models.EmailField(blank=True, error_messages={'unique': 'A user with that email already exists.'}, max_length=254, null=True, unique=True, verbose_name='email')), ('fake_email', models.EmailField(blank=True, default=pingcap_sso.models.user.generate_fake_email, max_length=254, null=True, unique=True, verbose_name='fake email')), ('email_verified', models.BooleanField(default=False, verbose_name='email verified')), ('phone', models.CharField(blank=True, error_messages={'unique': 'A user with that phone number already exists'}, help_text='Phone number is required.', max_length=32, null=True, unique=True, validators=[pingcap_sso.validators.phone.PhoneNumberValidator()], verbose_name='phone number')), ('name', models.CharField(blank=True, max_length=128, null=True, verbose_name='real name')), ('avatar_url', models.URLField(default=pingcap_sso.models.user.generate_avatar_url)), ('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')), ('ip_address', models.GenericIPAddressField(blank=True, null=True)), ('registration_ip_address', models.GenericIPAddressField(blank=True, null=True)), ('trust_level', models.IntegerField(default=1)), ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), ('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={ 'verbose_name': 'user', 'verbose_name_plural': 'users', 'db_table': 'auth_user', }, managers=[ ('objects', pingcap_sso.managers.user.UserManager()), ], ), migrations.CreateModel( name='SecurityCode', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(default=pingcap_sso.models.security_code.generate_code, max_length=8, verbose_name='code')), ('deliver_address', models.CharField(help_text='Can be email or phone', max_length=128, verbose_name='deliver address')), ('deliver_channel', models.SmallIntegerField(choices=[(0, 'phone'), (1, 'email')], default=0, verbose_name='deliver channel')), ('confirmed', models.BooleanField(default=False, verbose_name='confirmed')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='updated')), ], options={ 'db_table': 'auth_security_code', }, ), migrations.CreateModel( name='LoginLog', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('user_info', models.CharField(help_text='usually we only record the email or phone', max_length=255, verbose_name='user info')), ('ip', models.GenericIPAddressField(blank=True, null=True, verbose_name='ip')), ('ua', models.CharField(max_length=256, verbose_name='user agent')), ('login_status', models.SmallIntegerField(choices=[(0, 'Success'), (1, 'Failed')], default=0, verbose_name='results')), ('login_time', models.DateTimeField(auto_now_add=True, verbose_name='login time')), ('request_path', models.CharField(max_length=256, verbose_name='request full path')), ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], options={ 'db_table': 'auth_login_log', }, ), ]