# Generated by Django 5.2.4 on 2025-07-21 17:51

import django.db.models.deletion
import django.utils.timezone
import simple_history.models
import users.models.user_manager
import users.utils.db
import users.utils.t
import uuid
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('auth', '0012_alter_user_first_name_max_length'),
    ]

    operations = [
        migrations.CreateModel(
            name='Role',
            fields=[
                ('is_deleted', models.BooleanField(db_index=True, default=False, help_text='This field indicates whether this record has been deleted(soft delete) or not.', verbose_name='Deleted')),
                ('deleted_at', models.DateTimeField(blank=True, help_text='This field displays the date and time when this record was deleted(soft delete).', null=True, verbose_name='Deleted Datetime')),
                ('deleted_by', models.UUIDField(blank=True, help_text='This field displays who deleted(soft delete) the record.', null=True, verbose_name='Deleted By...(ID)')),
                ('deleted_by_user_agent_info', models.JSONField(blank=True, help_text='This field displays information about the user(user agent) who deleted(soft delete) this record.', null=True, verbose_name='Deleted By...(User Agent Info)')),
                ('id', models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, help_text='This field indicates when and on what date this record was created.', verbose_name='Created Datetime')),
                ('created_by', users.utils.db.UUIDFieldContinuousCommunication(blank=True, help_text='This field indicates who created this record.', null=True, verbose_name='Created By...(ID)')),
                ('created_by_user_agent_info', users.utils.db.JSONFieldContinuousCommunication(blank=True, help_text='This field stores information about the user(user agent) who created this field.', null=True, verbose_name='Created By...(User Agent Info)')),
                ('updated_at', models.DateTimeField(auto_now=True, help_text='This field displays the time and date this record was last updated.', verbose_name='Last Updated Datetime')),
                ('last_updated_by', users.utils.db.UUIDFieldContinuousCommunication(blank=True, help_text='This field displays who last updated this record.', null=True, verbose_name='Last Updated By...(ID)')),
                ('last_updated_by_user_agent_info', users.utils.db.JSONFieldContinuousCommunication(blank=True, help_text='This field displays the information of the user(user agent) who last updated this record.', null=True, verbose_name='Last Updated By...(User Agent Info)')),
                ('server_side_settings', models.JSONField(blank=True, help_text='If you need to have specific settings for each record in this table on the server side, you can save these settings in this section.', null=True, verbose_name='Server-Side Settings')),
                ('client_side_settings', models.JSONField(blank=True, help_text='If you need to have specific settings for each record in this table on the client side, you can save these settings in this section.', null=True, verbose_name='Client-Side Settings')),
                ('title', models.CharField(db_index=True, max_length=255, verbose_name='Title')),
            ],
            options={
                'verbose_name': 'Role',
                'verbose_name_plural': 'Roles',
            },
        ),
        migrations.CreateModel(
            name='User',
            fields=[
                ('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')),
                ('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')),
                ('is_deleted', models.BooleanField(db_index=True, default=False, help_text='This field indicates whether this record has been deleted(soft delete) or not.', verbose_name='Deleted')),
                ('deleted_at', models.DateTimeField(blank=True, help_text='This field displays the date and time when this record was deleted(soft delete).', null=True, verbose_name='Deleted Datetime')),
                ('deleted_by', models.UUIDField(blank=True, help_text='This field displays who deleted(soft delete) the record.', null=True, verbose_name='Deleted By...(ID)')),
                ('deleted_by_user_agent_info', models.JSONField(blank=True, help_text='This field displays information about the user(user agent) who deleted(soft delete) this record.', null=True, verbose_name='Deleted By...(User Agent Info)')),
                ('id', models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, help_text='This field indicates when and on what date this record was created.', verbose_name='Created Datetime')),
                ('created_by', users.utils.db.UUIDFieldContinuousCommunication(blank=True, help_text='This field indicates who created this record.', null=True, verbose_name='Created By...(ID)')),
                ('created_by_user_agent_info', users.utils.db.JSONFieldContinuousCommunication(blank=True, help_text='This field stores information about the user(user agent) who created this field.', null=True, verbose_name='Created By...(User Agent Info)')),
                ('updated_at', models.DateTimeField(auto_now=True, help_text='This field displays the time and date this record was last updated.', verbose_name='Last Updated Datetime')),
                ('last_updated_by', users.utils.db.UUIDFieldContinuousCommunication(blank=True, help_text='This field displays who last updated this record.', null=True, verbose_name='Last Updated By...(ID)')),
                ('last_updated_by_user_agent_info', users.utils.db.JSONFieldContinuousCommunication(blank=True, help_text='This field displays the information of the user(user agent) who last updated this record.', null=True, verbose_name='Last Updated By...(User Agent Info)')),
                ('server_side_settings', models.JSONField(blank=True, help_text='If you need to have specific settings for each record in this table on the server side, you can save these settings in this section.', null=True, verbose_name='Server-Side Settings')),
                ('client_side_settings', models.JSONField(blank=True, help_text='If you need to have specific settings for each record in this table on the client side, you can save these settings in this section.', null=True, verbose_name='Client-Side Settings')),
                ('username', models.CharField(db_index=True, max_length=255, unique=True, verbose_name='Username')),
                ('password', models.CharField(max_length=128, verbose_name='Password')),
                ('phone_number', models.CharField(blank=True, help_text='Sample 09123456789', max_length=255, null=True, validators=[users.utils.t.UnicodePhoneNumberValidator()], verbose_name='Phone Number')),
                ('phone_number_verified', models.BooleanField(default=False, help_text='To verify your phone number, all you need to do is enter the verification code sent to your phone number once on the platform.', verbose_name='Phone Number Verified')),
                ('email_address', models.EmailField(blank=True, max_length=254, null=True, verbose_name='Email Address')),
                ('email_address_verified', models.BooleanField(default=False, help_text='To verify your email address, all you need to do is enter the verification code sent to your email address once on the platform.', verbose_name='Email Address Verified')),
                ('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')),
                ('roles', models.ManyToManyField(blank=True, to='users.role', verbose_name='Roles')),
            ],
            options={
                'verbose_name': 'User',
                'verbose_name_plural': 'Users',
                'swappable': 'AUTH_USER_MODEL',
            },
            managers=[
                ('objects', users.models.user_manager.UserManager()),
            ],
        ),
        migrations.CreateModel(
            name='HistoricalNotificationLog',
            fields=[
                ('is_deleted', models.BooleanField(db_index=True, default=False, help_text='This field indicates whether this record has been deleted(soft delete) or not.', verbose_name='Deleted')),
                ('deleted_at', models.DateTimeField(blank=True, help_text='This field displays the date and time when this record was deleted(soft delete).', null=True, verbose_name='Deleted Datetime')),
                ('deleted_by', models.UUIDField(blank=True, help_text='This field displays who deleted(soft delete) the record.', null=True, verbose_name='Deleted By...(ID)')),
                ('deleted_by_user_agent_info', models.JSONField(blank=True, help_text='This field displays information about the user(user agent) who deleted(soft delete) this record.', null=True, verbose_name='Deleted By...(User Agent Info)')),
                ('id', models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(blank=True, editable=False, help_text='This field indicates when and on what date this record was created.', verbose_name='Created Datetime')),
                ('created_by', users.utils.db.UUIDFieldContinuousCommunication(blank=True, help_text='This field indicates who created this record.', null=True, verbose_name='Created By...(ID)')),
                ('created_by_user_agent_info', users.utils.db.JSONFieldContinuousCommunication(blank=True, help_text='This field stores information about the user(user agent) who created this field.', null=True, verbose_name='Created By...(User Agent Info)')),
                ('updated_at', models.DateTimeField(blank=True, editable=False, help_text='This field displays the time and date this record was last updated.', verbose_name='Last Updated Datetime')),
                ('last_updated_by', users.utils.db.UUIDFieldContinuousCommunication(blank=True, help_text='This field displays who last updated this record.', null=True, verbose_name='Last Updated By...(ID)')),
                ('last_updated_by_user_agent_info', users.utils.db.JSONFieldContinuousCommunication(blank=True, help_text='This field displays the information of the user(user agent) who last updated this record.', null=True, verbose_name='Last Updated By...(User Agent Info)')),
                ('server_side_settings', models.JSONField(blank=True, help_text='If you need to have specific settings for each record in this table on the server side, you can save these settings in this section.', null=True, verbose_name='Server-Side Settings')),
                ('client_side_settings', models.JSONField(blank=True, help_text='If you need to have specific settings for each record in this table on the client side, you can save these settings in this section.', null=True, verbose_name='Client-Side Settings')),
                ('platform', models.CharField(choices=[('SMS', 'SMS'), ('Email', 'Email'), ('Native', 'Native')], max_length=7, verbose_name='Platform')),
                ('status', models.CharField(choices=[('Success', 'Success'), ('Fail', 'Fail'), ('Uncertain', 'Uncertain')], max_length=15, verbose_name='Status')),
                ('kwargs', models.JSONField(blank=True, null=True, verbose_name='**kwargs')),
                ('history_id', models.AutoField(primary_key=True, serialize=False)),
                ('history_date', models.DateTimeField(db_index=True)),
                ('history_change_reason', models.CharField(max_length=100, null=True)),
                ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
                ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
                ('user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='User')),
            ],
            options={
                'verbose_name': 'historical Notification Log',
                'verbose_name_plural': 'historical Notifications Log',
                'ordering': ('-history_date', '-history_id'),
                'get_latest_by': ('history_date', 'history_id'),
            },
            bases=(simple_history.models.HistoricalChanges, models.Model),
        ),
        migrations.CreateModel(
            name='HistoricalRole',
            fields=[
                ('is_deleted', models.BooleanField(db_index=True, default=False, help_text='This field indicates whether this record has been deleted(soft delete) or not.', verbose_name='Deleted')),
                ('deleted_at', models.DateTimeField(blank=True, help_text='This field displays the date and time when this record was deleted(soft delete).', null=True, verbose_name='Deleted Datetime')),
                ('deleted_by', models.UUIDField(blank=True, help_text='This field displays who deleted(soft delete) the record.', null=True, verbose_name='Deleted By...(ID)')),
                ('deleted_by_user_agent_info', models.JSONField(blank=True, help_text='This field displays information about the user(user agent) who deleted(soft delete) this record.', null=True, verbose_name='Deleted By...(User Agent Info)')),
                ('id', models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(blank=True, editable=False, help_text='This field indicates when and on what date this record was created.', verbose_name='Created Datetime')),
                ('created_by', users.utils.db.UUIDFieldContinuousCommunication(blank=True, help_text='This field indicates who created this record.', null=True, verbose_name='Created By...(ID)')),
                ('created_by_user_agent_info', users.utils.db.JSONFieldContinuousCommunication(blank=True, help_text='This field stores information about the user(user agent) who created this field.', null=True, verbose_name='Created By...(User Agent Info)')),
                ('updated_at', models.DateTimeField(blank=True, editable=False, help_text='This field displays the time and date this record was last updated.', verbose_name='Last Updated Datetime')),
                ('last_updated_by', users.utils.db.UUIDFieldContinuousCommunication(blank=True, help_text='This field displays who last updated this record.', null=True, verbose_name='Last Updated By...(ID)')),
                ('last_updated_by_user_agent_info', users.utils.db.JSONFieldContinuousCommunication(blank=True, help_text='This field displays the information of the user(user agent) who last updated this record.', null=True, verbose_name='Last Updated By...(User Agent Info)')),
                ('server_side_settings', models.JSONField(blank=True, help_text='If you need to have specific settings for each record in this table on the server side, you can save these settings in this section.', null=True, verbose_name='Server-Side Settings')),
                ('client_side_settings', models.JSONField(blank=True, help_text='If you need to have specific settings for each record in this table on the client side, you can save these settings in this section.', null=True, verbose_name='Client-Side Settings')),
                ('title', models.CharField(db_index=True, max_length=255, verbose_name='Title')),
                ('history_id', models.AutoField(primary_key=True, serialize=False)),
                ('history_date', models.DateTimeField(db_index=True)),
                ('history_change_reason', models.CharField(max_length=100, null=True)),
                ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
                ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'verbose_name': 'historical Role',
                'verbose_name_plural': 'historical Roles',
                'ordering': ('-history_date', '-history_id'),
                'get_latest_by': ('history_date', 'history_id'),
            },
            bases=(simple_history.models.HistoricalChanges, models.Model),
        ),
        migrations.CreateModel(
            name='HistoricalUser',
            fields=[
                ('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')),
                ('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')),
                ('is_deleted', models.BooleanField(db_index=True, default=False, help_text='This field indicates whether this record has been deleted(soft delete) or not.', verbose_name='Deleted')),
                ('deleted_at', models.DateTimeField(blank=True, help_text='This field displays the date and time when this record was deleted(soft delete).', null=True, verbose_name='Deleted Datetime')),
                ('deleted_by', models.UUIDField(blank=True, help_text='This field displays who deleted(soft delete) the record.', null=True, verbose_name='Deleted By...(ID)')),
                ('deleted_by_user_agent_info', models.JSONField(blank=True, help_text='This field displays information about the user(user agent) who deleted(soft delete) this record.', null=True, verbose_name='Deleted By...(User Agent Info)')),
                ('id', models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(blank=True, editable=False, help_text='This field indicates when and on what date this record was created.', verbose_name='Created Datetime')),
                ('created_by', users.utils.db.UUIDFieldContinuousCommunication(blank=True, help_text='This field indicates who created this record.', null=True, verbose_name='Created By...(ID)')),
                ('created_by_user_agent_info', users.utils.db.JSONFieldContinuousCommunication(blank=True, help_text='This field stores information about the user(user agent) who created this field.', null=True, verbose_name='Created By...(User Agent Info)')),
                ('updated_at', models.DateTimeField(blank=True, editable=False, help_text='This field displays the time and date this record was last updated.', verbose_name='Last Updated Datetime')),
                ('last_updated_by', users.utils.db.UUIDFieldContinuousCommunication(blank=True, help_text='This field displays who last updated this record.', null=True, verbose_name='Last Updated By...(ID)')),
                ('last_updated_by_user_agent_info', users.utils.db.JSONFieldContinuousCommunication(blank=True, help_text='This field displays the information of the user(user agent) who last updated this record.', null=True, verbose_name='Last Updated By...(User Agent Info)')),
                ('server_side_settings', models.JSONField(blank=True, help_text='If you need to have specific settings for each record in this table on the server side, you can save these settings in this section.', null=True, verbose_name='Server-Side Settings')),
                ('client_side_settings', models.JSONField(blank=True, help_text='If you need to have specific settings for each record in this table on the client side, you can save these settings in this section.', null=True, verbose_name='Client-Side Settings')),
                ('username', models.CharField(db_index=True, max_length=255, verbose_name='Username')),
                ('password', models.CharField(max_length=128, verbose_name='Password')),
                ('phone_number', models.CharField(blank=True, help_text='Sample 09123456789', max_length=255, null=True, validators=[users.utils.t.UnicodePhoneNumberValidator()], verbose_name='Phone Number')),
                ('phone_number_verified', models.BooleanField(default=False, help_text='To verify your phone number, all you need to do is enter the verification code sent to your phone number once on the platform.', verbose_name='Phone Number Verified')),
                ('email_address', models.EmailField(blank=True, max_length=254, null=True, verbose_name='Email Address')),
                ('email_address_verified', models.BooleanField(default=False, help_text='To verify your email address, all you need to do is enter the verification code sent to your email address once on the platform.', verbose_name='Email Address Verified')),
                ('history_id', models.AutoField(primary_key=True, serialize=False)),
                ('history_date', models.DateTimeField(db_index=True)),
                ('history_change_reason', models.CharField(max_length=100, null=True)),
                ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
                ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'verbose_name': 'historical User',
                'verbose_name_plural': 'historical Users',
                'ordering': ('-history_date', '-history_id'),
                'get_latest_by': ('history_date', 'history_id'),
            },
            bases=(simple_history.models.HistoricalChanges, models.Model),
        ),
        migrations.CreateModel(
            name='HistoricalVCode',
            fields=[
                ('is_deleted', models.BooleanField(db_index=True, default=False, help_text='This field indicates whether this record has been deleted(soft delete) or not.', verbose_name='Deleted')),
                ('deleted_at', models.DateTimeField(blank=True, help_text='This field displays the date and time when this record was deleted(soft delete).', null=True, verbose_name='Deleted Datetime')),
                ('deleted_by', models.UUIDField(blank=True, help_text='This field displays who deleted(soft delete) the record.', null=True, verbose_name='Deleted By...(ID)')),
                ('deleted_by_user_agent_info', models.JSONField(blank=True, help_text='This field displays information about the user(user agent) who deleted(soft delete) this record.', null=True, verbose_name='Deleted By...(User Agent Info)')),
                ('id', models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(blank=True, editable=False, help_text='This field indicates when and on what date this record was created.', verbose_name='Created Datetime')),
                ('created_by', users.utils.db.UUIDFieldContinuousCommunication(blank=True, help_text='This field indicates who created this record.', null=True, verbose_name='Created By...(ID)')),
                ('created_by_user_agent_info', users.utils.db.JSONFieldContinuousCommunication(blank=True, help_text='This field stores information about the user(user agent) who created this field.', null=True, verbose_name='Created By...(User Agent Info)')),
                ('updated_at', models.DateTimeField(blank=True, editable=False, help_text='This field displays the time and date this record was last updated.', verbose_name='Last Updated Datetime')),
                ('last_updated_by', users.utils.db.UUIDFieldContinuousCommunication(blank=True, help_text='This field displays who last updated this record.', null=True, verbose_name='Last Updated By...(ID)')),
                ('last_updated_by_user_agent_info', users.utils.db.JSONFieldContinuousCommunication(blank=True, help_text='This field displays the information of the user(user agent) who last updated this record.', null=True, verbose_name='Last Updated By...(User Agent Info)')),
                ('server_side_settings', models.JSONField(blank=True, help_text='If you need to have specific settings for each record in this table on the server side, you can save these settings in this section.', null=True, verbose_name='Server-Side Settings')),
                ('client_side_settings', models.JSONField(blank=True, help_text='If you need to have specific settings for each record in this table on the client side, you can save these settings in this section.', null=True, verbose_name='Client-Side Settings')),
                ('hashed_code', models.CharField(max_length=255, verbose_name='Hashed Code')),
                ('expiry_datetime', models.DateTimeField(verbose_name='Expiry DateTime')),
                ('history_id', models.AutoField(primary_key=True, serialize=False)),
                ('history_date', models.DateTimeField(db_index=True)),
                ('history_change_reason', models.CharField(max_length=100, null=True)),
                ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
                ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
                ('user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='User')),
            ],
            options={
                'verbose_name': 'historical Verification Code',
                'verbose_name_plural': 'historical Verification Codes',
                'ordering': ('-history_date', '-history_id'),
                'get_latest_by': ('history_date', 'history_id'),
            },
            bases=(simple_history.models.HistoricalChanges, models.Model),
        ),
        migrations.CreateModel(
            name='NotificationLog',
            fields=[
                ('is_deleted', models.BooleanField(db_index=True, default=False, help_text='This field indicates whether this record has been deleted(soft delete) or not.', verbose_name='Deleted')),
                ('deleted_at', models.DateTimeField(blank=True, help_text='This field displays the date and time when this record was deleted(soft delete).', null=True, verbose_name='Deleted Datetime')),
                ('deleted_by', models.UUIDField(blank=True, help_text='This field displays who deleted(soft delete) the record.', null=True, verbose_name='Deleted By...(ID)')),
                ('deleted_by_user_agent_info', models.JSONField(blank=True, help_text='This field displays information about the user(user agent) who deleted(soft delete) this record.', null=True, verbose_name='Deleted By...(User Agent Info)')),
                ('id', models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, help_text='This field indicates when and on what date this record was created.', verbose_name='Created Datetime')),
                ('created_by', users.utils.db.UUIDFieldContinuousCommunication(blank=True, help_text='This field indicates who created this record.', null=True, verbose_name='Created By...(ID)')),
                ('created_by_user_agent_info', users.utils.db.JSONFieldContinuousCommunication(blank=True, help_text='This field stores information about the user(user agent) who created this field.', null=True, verbose_name='Created By...(User Agent Info)')),
                ('updated_at', models.DateTimeField(auto_now=True, help_text='This field displays the time and date this record was last updated.', verbose_name='Last Updated Datetime')),
                ('last_updated_by', users.utils.db.UUIDFieldContinuousCommunication(blank=True, help_text='This field displays who last updated this record.', null=True, verbose_name='Last Updated By...(ID)')),
                ('last_updated_by_user_agent_info', users.utils.db.JSONFieldContinuousCommunication(blank=True, help_text='This field displays the information of the user(user agent) who last updated this record.', null=True, verbose_name='Last Updated By...(User Agent Info)')),
                ('server_side_settings', models.JSONField(blank=True, help_text='If you need to have specific settings for each record in this table on the server side, you can save these settings in this section.', null=True, verbose_name='Server-Side Settings')),
                ('client_side_settings', models.JSONField(blank=True, help_text='If you need to have specific settings for each record in this table on the client side, you can save these settings in this section.', null=True, verbose_name='Client-Side Settings')),
                ('platform', models.CharField(choices=[('SMS', 'SMS'), ('Email', 'Email'), ('Native', 'Native')], max_length=7, verbose_name='Platform')),
                ('status', models.CharField(choices=[('Success', 'Success'), ('Fail', 'Fail'), ('Uncertain', 'Uncertain')], max_length=15, verbose_name='Status')),
                ('kwargs', models.JSONField(blank=True, null=True, verbose_name='**kwargs')),
                ('user', models.ForeignKey(db_index=False, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='User')),
            ],
            options={
                'verbose_name': 'Notification Log',
                'verbose_name_plural': 'Notifications Log',
            },
        ),
        migrations.CreateModel(
            name='VCode',
            fields=[
                ('is_deleted', models.BooleanField(db_index=True, default=False, help_text='This field indicates whether this record has been deleted(soft delete) or not.', verbose_name='Deleted')),
                ('deleted_at', models.DateTimeField(blank=True, help_text='This field displays the date and time when this record was deleted(soft delete).', null=True, verbose_name='Deleted Datetime')),
                ('deleted_by', models.UUIDField(blank=True, help_text='This field displays who deleted(soft delete) the record.', null=True, verbose_name='Deleted By...(ID)')),
                ('deleted_by_user_agent_info', models.JSONField(blank=True, help_text='This field displays information about the user(user agent) who deleted(soft delete) this record.', null=True, verbose_name='Deleted By...(User Agent Info)')),
                ('id', models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, help_text='This field indicates when and on what date this record was created.', verbose_name='Created Datetime')),
                ('created_by', users.utils.db.UUIDFieldContinuousCommunication(blank=True, help_text='This field indicates who created this record.', null=True, verbose_name='Created By...(ID)')),
                ('created_by_user_agent_info', users.utils.db.JSONFieldContinuousCommunication(blank=True, help_text='This field stores information about the user(user agent) who created this field.', null=True, verbose_name='Created By...(User Agent Info)')),
                ('updated_at', models.DateTimeField(auto_now=True, help_text='This field displays the time and date this record was last updated.', verbose_name='Last Updated Datetime')),
                ('last_updated_by', users.utils.db.UUIDFieldContinuousCommunication(blank=True, help_text='This field displays who last updated this record.', null=True, verbose_name='Last Updated By...(ID)')),
                ('last_updated_by_user_agent_info', users.utils.db.JSONFieldContinuousCommunication(blank=True, help_text='This field displays the information of the user(user agent) who last updated this record.', null=True, verbose_name='Last Updated By...(User Agent Info)')),
                ('server_side_settings', models.JSONField(blank=True, help_text='If you need to have specific settings for each record in this table on the server side, you can save these settings in this section.', null=True, verbose_name='Server-Side Settings')),
                ('client_side_settings', models.JSONField(blank=True, help_text='If you need to have specific settings for each record in this table on the client side, you can save these settings in this section.', null=True, verbose_name='Client-Side Settings')),
                ('hashed_code', models.CharField(max_length=255, verbose_name='Hashed Code')),
                ('expiry_datetime', models.DateTimeField(verbose_name='Expiry DateTime')),
                ('user', models.ForeignKey(db_index=False, on_delete=django.db.models.deletion.CASCADE, related_name='vcodes', to=settings.AUTH_USER_MODEL, verbose_name='User')),
            ],
            options={
                'verbose_name': 'Verification Code',
                'verbose_name_plural': 'Verification Codes',
            },
        ),
        migrations.AddIndex(
            model_name='user',
            index=models.Index(fields=['username', 'password'], name='users_user_usernam_04bee8_idx'),
        ),
        migrations.AddIndex(
            model_name='vcode',
            index=models.Index(fields=['user', 'hashed_code', 'expiry_datetime'], name='users_vcode_user_id_2fc489_idx'),
        ),
        migrations.AddIndex(
            model_name='vcode',
            index=models.Index(fields=['user', 'hashed_code'], name='users_vcode_user_id_71ba24_idx'),
        ),
        migrations.AddIndex(
            model_name='vcode',
            index=models.Index(fields=['hashed_code', 'expiry_datetime'], name='users_vcode_hashed__1c8f7a_idx'),
        ),
    ]
