Files
OSINT/moderation/migrations/0001_initial.py
Iliyan Angelov ed94dd22dd update
2025-11-26 22:32:20 +02:00

78 lines
4.7 KiB
Python

# 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')],
},
),
]