import django.contrib.auth.models from django.conf import settings from django.db import migrations, models import django.db.models.deletion import django.utils.timezone import phonenumber_field.modelfields import utils.validators class Migration(migrations.Migration): initial = True dependencies = [ ('auth', '0012_alter_user_first_name_max_length'), ] operations = [ migrations.CreateModel( name='User', fields=[ ('id', models.BigAutoField(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(blank=True, error_messages={'unique': 'A user with that username already exists.'}, max_length=150, null=True, unique=True, verbose_name='Username')), ('email', models.EmailField(blank=True, error_messages={'unique': 'A user with that email already exists.'}, help_text='User primary email address.', max_length=254, null=True, unique=True, verbose_name='Email Address')), ('fullname', models.CharField(blank=True, help_text='Full name of the user.', max_length=255, null=True, verbose_name='Full Name')), ('birthdate', models.DateField(blank=True, null=True, verbose_name='Birthdate')), ('avatar', models.ImageField(blank=True, max_length=512, null=True, upload_to='users/avatars/%Y/%m/', verbose_name='Avatar')), ('phone_number', phonenumber_field.modelfields.PhoneNumberField(blank=True, help_text='e.g., +1 555 1234567', max_length=128, null=True, region=None, validators=[utils.validators.validate_possible_number], verbose_name='Phone Number')), ('language', models.CharField(blank=True, default='en', max_length=10, null=True, verbose_name='Language')), ('gender', models.CharField(blank=True, choices=[('male', 'Male'), ('female', 'Female'), ('other', 'Other')], max_length=20, null=True, verbose_name='Gender')), ('user_type', models.CharField(choices=[('client', 'Client'), ('admin', 'Admin'), ('super_admin', 'Super Admin')], default='client', max_length=20, verbose_name='User Type')), ('date_joined', models.DateTimeField(auto_now_add=True, verbose_name='Date Joined')), ('city', models.CharField(blank=True, max_length=255, null=True, verbose_name='City')), ('country', models.CharField(blank=True, max_length=255, null=True, verbose_name='Country')), ('device_id', models.CharField(blank=True, max_length=255, null=True, verbose_name='Device ID')), ('device_os', models.CharField(blank=True, choices=[('android', 'Android'), ('apple', 'Apple iOS'), ('web', 'Web')], max_length=16, null=True, verbose_name='Device OS')), ('user_agent', models.TextField(blank=True, null=True, verbose_name='User Agent')), ('client_ip', models.CharField(blank=True, max_length=64, null=True, verbose_name='Client IP')), ('fcm', models.CharField(blank=True, max_length=512, null=True, verbose_name='FCM Token')), ('slug', models.SlugField(blank=True, max_length=255, null=True, unique=True, verbose_name='Slug')), ('is_staff', models.BooleanField(default=False, verbose_name='Is Staff')), ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active.', verbose_name='Active')), ('deleted_at', models.DateTimeField(blank=True, null=True, verbose_name='Deleted At')), ('info', models.TextField(blank=True, null=True, verbose_name='Bio / Info')), ('skill', models.CharField(blank=True, max_length=512, null=True, verbose_name='Skill / Role')), ('password_enc', models.CharField(blank=True, default='', help_text='Encrypted copy of password for displaying in the admin panel if required.', max_length=512, verbose_name='Encrypted Password')), ('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', 'ordering': ('-id',), }, ), migrations.CreateModel( name='NotificationTemplate', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('notification_type', models.CharField(max_length=50, unique=True, verbose_name='Notification Type')), ('name', models.CharField(max_length=100, verbose_name='Name')), ('is_active', models.BooleanField(default=True, verbose_name='Is Active')), ('title', models.CharField(default='', max_length=255, verbose_name='Title')), ('body', models.TextField(default='', max_length=1024, verbose_name='Body')), ('placeholders_info', models.CharField(blank=True, max_length=255, null=True, verbose_name='Allowed Placeholders Description')), ], options={ 'verbose_name': 'Notification Template', 'verbose_name_plural': 'Notification Templates', }, ), migrations.CreateModel( name='Notification', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=255, verbose_name='Title')), ('message', models.TextField(max_length=1024, verbose_name='Message')), ('is_read', models.BooleanField(default=False, verbose_name='Is Read')), ('notification_type', models.CharField(blank=True, max_length=50, null=True, verbose_name='Notification Type')), ('action', models.CharField(default='navigate', max_length=50, verbose_name='Action')), ('navigate_to', models.CharField(blank=True, max_length=255, null=True, verbose_name='Navigate To')), ('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.CASCADE, related_name='notifications', to=settings.AUTH_USER_MODEL, verbose_name='User')), ], options={ 'verbose_name': 'Notification', 'verbose_name_plural': 'Notifications', 'ordering': ('-created_at',), }, ), migrations.CreateModel( name='LoginHistory', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('lat', models.FloatField(blank=True, null=True, verbose_name='Latitude')), ('lon', models.FloatField(blank=True, null=True, verbose_name='Longitude')), ('country', models.CharField(blank=True, max_length=255, null=True, verbose_name='Country')), ('city', models.CharField(blank=True, max_length=255, null=True, verbose_name='City')), ('ip', models.CharField(blank=True, max_length=255, null=True, verbose_name='IP Address')), ('timezone', models.CharField(blank=True, max_length=100, null=True, verbose_name='Timezone')), ('user_agent', models.TextField(blank=True, null=True, verbose_name='User Agent')), ('device_os', models.CharField(blank=True, max_length=16, null=True, verbose_name='Device OS')), ('at_time', models.DateTimeField(auto_now_add=True, verbose_name='Timestamp')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='login_history', to=settings.AUTH_USER_MODEL, verbose_name='User')), ], options={ 'verbose_name': 'Login History', 'verbose_name_plural': 'Login Histories', 'ordering': ('-at_time',), }, ), migrations.CreateModel( name='LocationHistory', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('lat', models.FloatField(blank=True, null=True, verbose_name='Latitude')), ('lon', models.FloatField(blank=True, null=True, verbose_name='Longitude')), ('country', models.CharField(blank=True, max_length=255, null=True, verbose_name='Country')), ('city', models.CharField(blank=True, max_length=255, null=True, verbose_name='City')), ('selected_manually', models.BooleanField(default=False, verbose_name='Selected Manually')), ('ip', models.CharField(blank=True, max_length=255, null=True, verbose_name='IP Address')), ('timezone', models.CharField(blank=True, max_length=60, null=True, verbose_name='Timezone')), ('at_time', models.DateTimeField(auto_now_add=True, verbose_name='Timestamp')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='location_history', to=settings.AUTH_USER_MODEL, verbose_name='User')), ], options={ 'verbose_name': 'Location History', 'verbose_name_plural': 'Location History', 'ordering': ('-at_time',), }, ), migrations.CreateModel( name='ClientUser', fields=[ ], options={ 'verbose_name': 'Client User', 'verbose_name_plural': 'Client Users', 'ordering': ('-id',), 'proxy': True, 'indexes': [], 'constraints': [], }, bases=('account.user',), ), migrations.CreateModel( name='AdminUser', fields=[ ], options={ 'verbose_name': 'Admin User', 'verbose_name_plural': 'Admin Users', 'proxy': True, 'indexes': [], 'constraints': [], }, bases=('account.user',), ), migrations.CreateModel( name='SuperAdminUser', fields=[ ], options={ 'verbose_name': 'Super Admin User', 'verbose_name_plural': 'Super Admin Users', 'proxy': True, 'indexes': [], 'constraints': [], }, bases=('account.user',), ), ]