# Generated by Django 5.2.8 on 2025-11-26 13:41 import django.db.models.deletion from django.conf import settings from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ('reports', '0001_initial'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='ModerationRule', 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)), ('is_active', models.BooleanField(default=True)), ('priority', models.IntegerField(default=0, help_text='Rule priority (higher = evaluated first)')), ('conditions', models.JSONField(default=dict, help_text='Conditions that trigger this rule')), ('actions', models.JSONField(default=dict, help_text='Actions to take when rule matches')), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ], options={ 'verbose_name': 'Moderation Rule', 'verbose_name_plural': 'Moderation Rules', 'db_table': 'moderation_moderationrule', 'ordering': ['-priority', 'name'], }, ), migrations.CreateModel( name='ModerationAction', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('action_type', models.CharField(choices=[('approve', 'Approve'), ('reject', 'Reject'), ('edit', 'Edit'), ('delete', 'Delete'), ('verify', 'Verify'), ('archive', 'Archive'), ('unarchive', 'Unarchive'), ('assign', 'Assign'), ('unassign', 'Unassign')], max_length=20)), ('reason', models.CharField(blank=True, help_text='Reason for the action', max_length=200)), ('notes', models.TextField(blank=True, help_text='Additional notes')), ('previous_status', models.CharField(blank=True, max_length=20)), ('new_status', models.CharField(blank=True, max_length=20)), ('created_at', models.DateTimeField(auto_now_add=True)), ('moderator', models.ForeignKey(limit_choices_to={'role__in': ['moderator', 'admin']}, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='moderation_actions', to=settings.AUTH_USER_MODEL)), ('report', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='moderation_actions', to='reports.scamreport')), ], options={ 'verbose_name': 'Moderation Action', 'verbose_name_plural': 'Moderation Actions', 'db_table': 'moderation_moderationaction', 'ordering': ['-created_at'], 'indexes': [models.Index(fields=['report', 'created_at'], name='moderation__report__971308_idx'), models.Index(fields=['moderator', 'created_at'], name='moderation__moderat_b59e8d_idx'), models.Index(fields=['action_type', 'created_at'], name='moderation__action__8d1226_idx')], }, ), migrations.CreateModel( name='ModerationQueue', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('priority', models.CharField(choices=[('low', 'Low'), ('normal', 'Normal'), ('high', 'High'), ('urgent', 'Urgent')], default='normal', max_length=20)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('assigned_to', models.ForeignKey(blank=True, limit_choices_to={'role__in': ['moderator', 'admin']}, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='assigned_moderations', to=settings.AUTH_USER_MODEL)), ('report', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='moderation_queue', to='reports.scamreport')), ], options={ 'verbose_name': 'Moderation Queue', 'verbose_name_plural': 'Moderation Queues', 'db_table': 'moderation_moderationqueue', 'ordering': ['-priority', 'created_at'], 'indexes': [models.Index(fields=['priority', 'created_at'], name='moderation__priorit_02ba25_idx'), models.Index(fields=['assigned_to', 'created_at'], name='moderation__assigne_674975_idx')], }, ), ]