# Generated by Django 5.1.5 on 2025-03-10 18:14

import django.core.validators
import django.db.models.deletion
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'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='Category',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100)),
                ('description', models.TextField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name='ContactMessage',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100, verbose_name='Sender Name')),
                ('email', models.EmailField(max_length=254, verbose_name='Sender Email')),
                ('message', models.TextField(verbose_name='Message Content')),
                ('submitted_at', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='Submission Time')),
                ('status', models.CharField(choices=[('unread', 'Unread'), ('read', 'Read'), ('archived', 'Archived')], default='unread', max_length=10, verbose_name='Message Status')),
                ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Last Updated')),
            ],
            options={
                'verbose_name': 'Contact Message',
                'verbose_name_plural': 'Contact Messages',
                'ordering': ['-submitted_at'],
            },
        ),
        migrations.CreateModel(
            name='SearchQuery',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('query', models.CharField(max_length=255)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
            ],
        ),
        migrations.CreateModel(
            name='SearchTermQuery',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('query', models.CharField(max_length=255)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('status', models.CharField(choices=[('found', 'Found'), ('not_found', 'Not Found')], default='found', max_length=50)),
            ],
        ),
        migrations.CreateModel(
            name='Subscriber',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('email', models.EmailField(max_length=254, unique=True, verbose_name='Email Address')),
                ('subscribed_at', models.DateTimeField(auto_now_add=True, verbose_name='Subscription Date')),
            ],
        ),
        migrations.CreateModel(
            name='SuspiciousLog',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('ip', models.GenericIPAddressField(unique=True)),
                ('count', models.IntegerField(default=0)),
                ('timestamp', models.DateTimeField(auto_now_add=True)),
                ('blocked', models.BooleanField(default=False)),
            ],
        ),
        migrations.CreateModel(
            name='TeamMember',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(help_text='Nama lengkap anggota tim.', max_length=255)),
                ('description', models.TextField(help_text='Deskripsi tentang anggota tim, termasuk keahlian atau peran mereka.')),
                ('profile_photo', models.TextField(blank=True, help_text='Foto profil dalam format teks (blob/base64).', null=True)),
                ('linkedin_url', models.URLField(blank=True, help_text='URL profil LinkedIn anggota tim.', max_length=500, null=True)),
                ('role', models.CharField(help_text='Peran atau posisi anggota tim.', max_length=255)),
            ],
            options={
                'verbose_name': 'Team Member',
                'verbose_name_plural': 'Team Members',
                'ordering': ['name'],
            },
        ),
        migrations.CreateModel(
            name='VisitorIP',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('ip_address', models.GenericIPAddressField(validators=[django.core.validators.validate_ipv46_address])),
                ('accessed_url', models.CharField(max_length=255)),
                ('timestamp', models.DateTimeField(auto_now_add=True)),
            ],
        ),
        migrations.CreateModel(
            name='Year',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('year', models.PositiveIntegerField(unique=True)),
            ],
        ),
        migrations.CreateModel(
            name='MyModel',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('uuid', models.UUIDField(default=uuid.uuid4, editable=False)),
                ('data', models.JSONField()),
                ('is_verified', models.BooleanField(default=False, verbose_name='Verified')),
                ('slug', models.SlugField(blank=True, max_length=255, unique=True)),
                ('category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='regulations.category')),
                ('year', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='regulations.year')),
            ],
        ),
        migrations.CreateModel(
            name='MyModelVisits',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('user_ip', models.CharField(max_length=15, validators=[django.core.validators.validate_ipv46_address])),
                ('visited_at', models.DateTimeField(auto_now_add=True)),
                ('device_type', models.CharField(max_length=255, null=True)),
                ('platform_type', models.CharField(max_length=255, null=True)),
                ('browser_type', models.CharField(max_length=255, null=True)),
                ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
                ('uu', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='regulations.mymodel')),
            ],
        ),
        migrations.CreateModel(
            name='Popularity',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('view_count', models.PositiveIntegerField(default=0)),
                ('uu', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='regulations.mymodel')),
            ],
        ),
        migrations.CreateModel(
            name='RecentlyUpdated',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('my_model', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='recent_updates', to='regulations.mymodel')),
            ],
            options={
                'ordering': ['-updated_at'],
            },
        ),
        migrations.CreateModel(
            name='Term',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=255)),
                ('definition', models.TextField()),
                ('slug', models.SlugField(blank=True, max_length=255, null=True, unique=True)),
                ('my_models', models.ManyToManyField(related_name='terms', to='regulations.mymodel')),
            ],
        ),
        migrations.CreateModel(
            name='UserProfile',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('first_name', models.CharField(blank=True, max_length=255, null=True)),
                ('last_name', models.CharField(blank=True, max_length=255, null=True)),
                ('job', models.CharField(blank=True, choices=[('Software Engineer', 'Software Engineer'), ('Data Scientist', 'Data Scientist'), ('Product Manager', 'Product Manager'), ('Designer', 'Designer'), ('Marketing Specialist', 'Marketing Specialist')], max_length=255, null=True)),
                ('province', models.CharField(blank=True, choices=[('Aceh', 'Aceh'), ('Bali', 'Bali'), ('Banten', 'Banten'), ('Bengkulu', 'Bengkulu'), ('DI Yogyakarta', 'DI Yogyakarta'), ('DKI Jakarta', 'DKI Jakarta'), ('Jambi', 'Jambi'), ('Jawa Barat', 'Jawa Barat'), ('Jawa Tengah', 'Jawa Tengah'), ('Jawa Timur', 'Jawa Timur'), ('Kalimantan Barat', 'Kalimantan Barat'), ('Kalimantan Selatan', 'Kalimantan Selatan'), ('Kalimantan Tengah', 'Kalimantan Tengah'), ('Kalimantan Timur', 'Kalimantan Timur'), ('Kalimantan Utara', 'Kalimantan Utara'), ('Kepulauan Bangka Belitung', 'Kepulauan Bangka Belitung'), ('Kepulauan Riau', 'Kepulauan Riau'), ('Lampung', 'Lampung'), ('Maluku', 'Maluku'), ('Maluku Utara', 'Maluku Utara'), ('Nusa Tenggara Barat', 'Nusa Tenggara Barat'), ('Nusa Tenggara Timur', 'Nusa Tenggara Timur'), ('Papua', 'Papua'), ('Papua Barat', 'Papua Barat'), ('Papua Tengah', 'Papua Tengah'), ('Papua Pegunungan', 'Papua Pegunungan'), ('Papua Selatan', 'Papua Selatan'), ('Papua Barat Daya', 'Papua Barat Daya'), ('Riau', 'Riau'), ('Sumatera Barat', 'Sumatera Barat'), ('Sumatera Selatan', 'Sumatera Selatan'), ('Sumatera Utara', 'Sumatera Utara'), ('Sulawesi Barat', 'Sulawesi Barat'), ('Sulawesi Selatan', 'Sulawesi Selatan'), ('Sulawesi Tengah', 'Sulawesi Tengah'), ('Sulawesi Tenggara', 'Sulawesi Tenggara'), ('Sulawesi Utara', 'Sulawesi Utara')], max_length=255, null=True)),
                ('birth_date', models.DateField(blank=True, null=True)),
                ('profile_picture', models.TextField(blank=True, null=True)),
                ('groups', models.ManyToManyField(blank=True, related_name='userprofile_groups', to='auth.group')),
                ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
                ('user_permissions', models.ManyToManyField(blank=True, related_name='userprofile_permissions', to='auth.permission')),
            ],
        ),
        migrations.CreateModel(
            name='Bookmark',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('last_read_position', models.FloatField(default=0)),
                ('url', models.URLField()),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
                ('regulation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='regulations.mymodel')),
            ],
            options={
                'unique_together': {('user', 'regulation')},
            },
        ),
    ]
