# Generated by Django 5.2.12 on 2026-03-19 16:40 import django.db.models.deletion import uuid from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ("farm_hub", "0006_seed_expanded_product_catalog"), ("sensor_catalog", "0002_sensorcatalog_supported_power_sources"), ] operations = [ migrations.CreateModel( name="AccessFeature", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("uuid", models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, unique=True)), ("code", models.SlugField(db_index=True, max_length=128, unique=True)), ("name", models.CharField(max_length=255)), ( "feature_type", models.CharField( choices=[("page", "Page"), ("action", "Action"), ("widget", "Widget"), ("section", "Section")], default="page", max_length=32, ), ), ("description", models.TextField(blank=True, default="")), ("default_enabled", models.BooleanField(default=False)), ("metadata", models.JSONField(blank=True, default=dict)), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ], options={"db_table": "access_features", "ordering": ["feature_type", "code"]}, ), migrations.CreateModel( name="SubscriptionPlan", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("uuid", models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, unique=True)), ("code", models.SlugField(db_index=True, max_length=64, unique=True)), ("name", models.CharField(db_index=True, max_length=255, unique=True)), ("description", models.TextField(blank=True, default="")), ("metadata", models.JSONField(blank=True, default=dict)), ("is_active", models.BooleanField(default=True)), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ], options={"db_table": "subscription_plans", "ordering": ["name"]}, ), migrations.CreateModel( name="AccessRule", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("uuid", models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, unique=True)), ("code", models.SlugField(db_index=True, max_length=128, unique=True)), ("name", models.CharField(max_length=255)), ("description", models.TextField(blank=True, default="")), ("effect", models.CharField(choices=[("allow", "Allow"), ("deny", "Deny")], default="allow", max_length=16)), ("priority", models.PositiveIntegerField(default=100)), ("is_active", models.BooleanField(default=True)), ("metadata", models.JSONField(blank=True, default=dict)), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ("farm_types", models.ManyToManyField(blank=True, related_name="access_rules", to="farm_hub.farmtype")), ("features", models.ManyToManyField(blank=True, related_name="rules", to="access_control.accessfeature")), ("products", models.ManyToManyField(blank=True, related_name="access_rules", to="farm_hub.product")), ( "sensor_catalogs", models.ManyToManyField(blank=True, related_name="access_rules", to="sensor_catalog.sensorcatalog"), ), ( "subscription_plans", models.ManyToManyField(blank=True, related_name="access_rules", to="access_control.subscriptionplan"), ), ], options={"db_table": "access_rules", "ordering": ["priority", "code"]}, ), migrations.CreateModel( name="FarmAccessProfile", fields=[ ( "farm", models.OneToOneField( db_column="farm_uuid", on_delete=django.db.models.deletion.CASCADE, primary_key=True, related_name="access_profile", serialize=False, to="farm_hub.farmhub", to_field="farm_uuid", ), ), ("cached_features", models.JSONField(blank=True, default=dict)), ("cached_groups", models.JSONField(blank=True, default=dict)), ("matched_rules", models.JSONField(blank=True, default=list)), ("metadata", models.JSONField(blank=True, default=dict)), ("last_resolved_at", models.DateTimeField(blank=True, null=True)), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ], options={"db_table": "farm_access_profiles"}, ), ]