# Generated by Django 4.2 on 2024-01-12 22:45

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import uuid


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='Activity',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, verbose_name='UUID')),
                ('created_at', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='Created at')),
                ('updated_at', models.DateTimeField(auto_now=True, null=True, verbose_name='Updated at')),
                ('timestamp', models.DateTimeField(auto_now_add=True, help_text='The timestamp when the activity was logged.', verbose_name='Timestamp')),
                ('action_type', models.CharField(choices=[('ADD', 'Add an object'), ('UPDATE', 'Update an object'), ('DELETE', 'Delete an object'), ('VIEW', 'View an object'), ('SEARCH', 'Search for an object'), ('DOWNLOAD', 'Download an object'), ('UPLOAD', 'Upload an object'), ('APPROVE', 'Approve an object'), ('REJECT', 'Reject an object'), ('COMMENT', 'Comment on an object'), ('SHARE', 'Share an object'), ('ARCHIVE', 'Archive an object'), ('RESTORE', 'Restore an object'), ('CREATE', 'Create an object'), ('READ', 'Read an object'), ('WRITE', 'Write an object'), ('CONFIGURE', 'Configure settings'), ('ACTIVATE', 'Activate an object'), ('DEACTIVATE', 'Deactivate an object'), ('SUBMIT', 'Submit an object'), ('CANCEL', 'Cancel an action or object'), ('REFRESH', 'Refresh data or object'), ('ASSIGN', 'Assign an object to a user'), ('UNASSIGN', 'Unassign an object from a user'), ('APPROVE_REQUEST', 'Approve a request'), ('REJECT_REQUEST', 'Reject a request'), ('NOTIFY', 'Send a notification'), ('CONFIRM', 'Confirm an action'), ('UNDO', 'Undo an action'), ('REDO', 'Redo an action'), ('EXPORT', 'Export data or object'), ('IMPORT', 'Import data or object'), ('SYNC', 'Synchronize data or object')], help_text='Type of action performed by the user.', max_length=20, verbose_name='Action Type')),
                ('details', models.TextField(blank=True, help_text='Additional details or context for the activity.', null=True, verbose_name='Details')),
                ('related_object_id', models.CharField(blank=True, help_text='ID of the related object, if applicable.', max_length=64, null=True, verbose_name='Related Object ID')),
                ('related_object_type', models.CharField(blank=True, help_text='Type or model of the related object, if applicable.', max_length=50, null=True, verbose_name='Related Object Type')),
                ('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_created', to=settings.AUTH_USER_MODEL, verbose_name='Created by')),
                ('performer', models.ForeignKey(help_text='The user who performed the activity.', on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='User')),
                ('updated_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_updated', to=settings.AUTH_USER_MODEL, verbose_name='Updated by')),
            ],
            options={
                'verbose_name': 'Activity',
                'verbose_name_plural': 'Activities',
                'ordering': ['-timestamp'],
            },
        ),
    ]
