# Generated by Django 6.1.1 on 2026-10-13 12:11

import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('organizations', '0001_initial'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='Module',
            fields=[
                ('code', models.CharField(max_length=50, primary_key=True, serialize=False)),
                ('title_fa', models.CharField(max_length=120)),
                ('description_fa', models.TextField(blank=True, default='')),
                ('status', models.CharField(choices=[('available', 'Available'), ('planned', 'Planned'), ('deprecated', 'Deprecated')], default='available', max_length=12)),
                ('is_core', models.BooleanField(default=False)),
                ('sort_order', models.PositiveSmallIntegerField(default=0)),
            ],
            options={
                'db_table': 'modules',
                'ordering': ['sort_order', 'code'],
            },
        ),
        migrations.CreateModel(
            name='ModuleDependency',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('depends_on', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='dependents', to='modules.module')),
                ('module', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='dependencies', to='modules.module')),
            ],
            options={
                'db_table': 'module_dependencies',
                'constraints': [models.UniqueConstraint(fields=('module', 'depends_on'), name='unique_module_dependency'), models.CheckConstraint(condition=models.Q(('module', models.F('depends_on')), _negated=True), name='module_not_self_dependent')],
            },
        ),
        migrations.CreateModel(
            name='OrganizationModule',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('is_enabled', models.BooleanField(default=False)),
                ('enabled_at', models.DateTimeField(blank=True, null=True)),
                ('disabled_at', models.DateTimeField(blank=True, null=True)),
                ('changed_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
                ('module', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='organization_states', to='modules.module')),
                ('organization', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='module_states', to='organizations.organization')),
            ],
            options={
                'db_table': 'organization_modules',
                'constraints': [models.UniqueConstraint(fields=('organization', 'module'), name='unique_organization_module')],
            },
        ),
    ]
