# Generated by Django 5.1.2 on 2025-01-26 20:36

import django.db.models.deletion
import main.fields
import user.models
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='AllowIp',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('ip', models.GenericIPAddressField(default='0.0.0.0', verbose_name='User Ip')),
                ('is_active', models.BooleanField(choices=[(True, 'active'), (False, 'deactive')], default=True, verbose_name='is active')),
                ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created at')),
                ('updated_at', models.DateTimeField(auto_now=True, verbose_name='updated at')),
            ],
            options={
                'verbose_name': 'Allow Ip',
                'verbose_name_plural': 'Allow Ip',
                'ordering': ['-id'],
            },
        ),
        migrations.CreateModel(
            name='Department',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=150, verbose_name='name')),
                ('slug', models.SlugField(max_length=150, verbose_name='slug')),
                ('is_active', models.BooleanField(choices=[(True, 'active'), (False, 'deactive')], default=True, verbose_name='is active')),
                ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created at')),
                ('updated_at', models.DateTimeField(auto_now=True, verbose_name='updated at')),
                ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.RESTRICT, related_name='sub_department', to='user.department', verbose_name='parent department')),
            ],
            options={
                'verbose_name': 'Department',
                'verbose_name_plural': 'Department',
                'ordering': ['-id'],
            },
        ),
        migrations.CreateModel(
            name='LoginLog',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('ip', models.GenericIPAddressField(default='0.0.0.0', verbose_name='User Ip')),
                ('is_success', models.BooleanField(default=True, verbose_name='is Success')),
                ('failure', models.CharField(blank=True, max_length=250, null=True, verbose_name='failure Reason')),
                ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created at')),
                ('updated_at', models.DateTimeField(auto_now=True, verbose_name='updated at')),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, related_name='login_log', to=settings.AUTH_USER_MODEL, verbose_name='user')),
            ],
            options={
                'verbose_name': 'Login Log',
                'verbose_name_plural': 'Login Log',
                'ordering': ['-id'],
            },
        ),
        migrations.CreateModel(
            name='Master',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('nickname', models.CharField(default='Admin', max_length=50, verbose_name='nickName')),
                ('is_active', models.BooleanField(choices=[(True, 'active'), (False, 'deactive')], default=True, verbose_name='is active')),
                ('mobile', models.CharField(blank=True, max_length=12, null=True, verbose_name='mobile')),
                ('otp_code', models.CharField(blank=True, max_length=10, null=True, verbose_name='otp code')),
                ('otp_time', models.FloatField(blank=True, null=True, verbose_name='send code time')),
                ('super_master', models.BooleanField(default=False, verbose_name='super master')),
                ('image', main.fields.WEBPField(blank=True, default='blank/blank-profile.png', upload_to=user.models.image_master_folder, verbose_name='image')),
                ('incorrect_num', models.SmallIntegerField(default=0, verbose_name='incorrect password num')),
                ('incorrect_time', models.FloatField(default=0, verbose_name='last incorrect password time')),
                ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created at')),
                ('updated_at', models.DateTimeField(auto_now=True, verbose_name='updated at')),
                ('department', models.ManyToManyField(blank=True, related_name='master', to='user.department', verbose_name='Department')),
                ('ip', models.ManyToManyField(blank=True, related_name='master_ip', to='user.allowip', verbose_name='Allowed IP')),
                ('user', models.OneToOneField(on_delete=django.db.models.deletion.RESTRICT, related_name='master', to=settings.AUTH_USER_MODEL, verbose_name='user')),
            ],
            options={
                'verbose_name': 'Master',
                'verbose_name_plural': 'Master',
                'ordering': ['-id'],
            },
        ),
        migrations.CreateModel(
            name='UserLog',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('desc', models.TextField(verbose_name='description')),
                ('ip', models.GenericIPAddressField(default='0.0.0.0', verbose_name='User Ip')),
                ('model', models.CharField(blank=True, max_length=500, null=True, verbose_name='model')),
                ('record_id', models.CharField(blank=True, max_length=500, null=True, verbose_name='record ID')),
                ('change', models.TextField(blank=True, null=True, verbose_name='changes')),
                ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created at')),
                ('updated_at', models.DateTimeField(auto_now=True, verbose_name='updated at')),
                ('for_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.RESTRICT, related_name='user_log_changed', to=settings.AUTH_USER_MODEL, verbose_name='for User')),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, related_name='user_log', to=settings.AUTH_USER_MODEL, verbose_name='user')),
            ],
            options={
                'verbose_name': 'User Log',
                'verbose_name_plural': 'User Log',
                'ordering': ['-id'],
            },
        ),
    ]
