# Generated by Django 5.0 on 2024-12-09 03:00

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


class Migration(migrations.Migration):
    initial = True

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

    operations = [
        migrations.CreateModel(
            name="SessionFilters",
            fields=[
                ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
                ("searchers", models.CharField(max_length=500, null=True, verbose_name="Поисковики")),
                ("capcha_limit", models.SmallIntegerField(default=10000, verbose_name="Порог капчи")),
                ("ban_limit", models.SmallIntegerField(default=10000, verbose_name="Порог бана")),
                ("ip_penalty", models.SmallIntegerField(default=0, verbose_name="Запрос к IP")),
                ("ports_penalty", models.SmallIntegerField(default=0, verbose_name="Запрос к порту")),
                ("disallowed_host", models.SmallIntegerField(default=0, verbose_name="Несуществующий домен")),
                ("disable_urls", models.TextField(verbose_name="Запрос содержит(все)")),
                ("disable_urls_sites", models.TextField(null=True, verbose_name="Запрос содержит(сайты)")),
                ("disable_urls_penalty", models.SmallIntegerField(default=0, verbose_name="Запрещенный адрес")),
                ("page_not_found_penalty", models.SmallIntegerField(default=0, verbose_name="Несуществующий адрес")),
                ("reject_capcha", models.SmallIntegerField(default=0, verbose_name="Отказ от капчи")),
                ("capcha_error", models.SmallIntegerField(default=0, verbose_name="Ошибка в капче")),
                ("capcha_success", models.SmallIntegerField(default=0, verbose_name="Успешная капча")),
                ("no_cookie", models.SmallIntegerField(default=0, verbose_name="Нет cookies")),
                ("hide_admin", models.BooleanField(default=False)),
            ],
            options={
                "verbose_name": "Фильтры сессий",
                "verbose_name_plural": "Фильтры сессий",
            },
        ),
        migrations.CreateModel(
            name="SessionModel",
            fields=[
                ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
                ("unique_key", models.CharField(max_length=500, null=True, unique=True)),
                ("ip", models.CharField(max_length=15)),
                ("start_time", models.DateTimeField(verbose_name="Дата")),
                ("site", models.CharField(max_length=50, null=True, verbose_name="Сайт")),
                ("device", models.BooleanField(default=False)),
                ("headers", models.TextField(max_length=2000, null=True)),
                ("ban_rate", models.SmallIntegerField(default=0, verbose_name="Штраф")),
                ("hacking", models.BooleanField(default=False)),
                ("show_capcha", models.BooleanField(default=False)),
                ("checked_single_page", models.BooleanField(default=False)),
                ("utm_source", models.CharField(max_length=500, null=True)),
            ],
            options={
                "verbose_name": "Сессии",
                "verbose_name_plural": "Сессии",
            },
        ),
        migrations.CreateModel(
            name="TryLoginToAdminPanel",
            fields=[
                ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
                ("client_ip", models.CharField(max_length=15, verbose_name="ip с которого был запрос")),
                ("login", models.CharField(max_length=100, verbose_name="логин")),
                ("date", models.DateTimeField(auto_now_add=True)),
            ],
            options={
                "verbose_name": "Попытка входа в админку",
                "verbose_name_plural": "Попытки входа в админку",
            },
        ),
        migrations.CreateModel(
            name="TryLoginToFakeAdminPanel",
            fields=[
                ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
                ("client_ip", models.CharField(max_length=15, verbose_name="ip с которого был запрос")),
                ("login", models.CharField(max_length=100, verbose_name="логин")),
                ("date", models.DateTimeField(auto_now_add=True)),
            ],
            options={
                "verbose_name": "Попытка входа в фейковую админку",
                "verbose_name_plural": "Попытки входа в фейковую админку",
            },
        ),
        migrations.CreateModel(
            name="WebSearcher",
            fields=[
                ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
                ("ip", models.CharField(max_length=15)),
                ("start_time", models.DateTimeField(verbose_name="Дата")),
                ("site", models.CharField(max_length=50, null=True, verbose_name="Сайт")),
                ("headers", models.TextField(max_length=2000, null=True)),
            ],
            options={
                "verbose_name": "Поисковик",
                "verbose_name_plural": "Поисковики",
            },
        ),
        migrations.CreateModel(
            name="SessionFiltersHeader",
            fields=[
                ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
                ("header", models.CharField(max_length=50, verbose_name="Заголовок")),
                (
                    "contain",
                    models.CharField(
                        choices=[
                            ("Присутствует", "Присутствует"),
                            ("Отсутствует", "Отсутствует"),
                            ("Содержит", "Содержит"),
                            ("Не содержит", "Не содержит"),
                            ("Совпадает", "Совпадает"),
                            ("Не совпадает", "Не совпадает"),
                        ],
                        max_length=50,
                        verbose_name="содержит",
                    ),
                ),
                ("content", models.CharField(blank=True, max_length=1000, null=True, verbose_name="строка")),
                ("penalty", models.SmallIntegerField(default=0, verbose_name="штраф")),
                (
                    "session_filters",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="headers",
                        to="site_statistics.sessionfilters",
                    ),
                ),
            ],
        ),
        migrations.CreateModel(
            name="PenaltyLog",
            fields=[
                ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
                ("text", models.CharField(max_length=500)),
                (
                    "session",
                    models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="site_statistics.sessionmodel"),
                ),
            ],
        ),
        migrations.CreateModel(
            name="UserActivity",
            fields=[
                ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
                ("unique_key", models.CharField(max_length=500, null=True, unique=True)),
                ("ip", models.CharField(max_length=15)),
                ("start_time", models.DateTimeField(verbose_name="Дата")),
                ("site", models.CharField(max_length=50, null=True, verbose_name="Сайт")),
                ("device", models.BooleanField(default=False)),
                ("banks_count", models.PositiveIntegerField(default=0, verbose_name="Банки")),
                ("profile_actions_count", models.PositiveIntegerField(default=0, verbose_name="ЛК")),
                ("auth", models.CharField(max_length=20, null=True)),
                (
                    "session",
                    models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="site_statistics.sessionmodel"),
                ),
                (
                    "user",
                    models.ForeignKey(
                        null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL
                    ),
                ),
            ],
            options={
                "verbose_name": "Посетители",
                "verbose_name_plural": "Посетители",
            },
        ),
        migrations.CreateModel(
            name="WebSearcherAction",
            fields=[
                ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
                ("adress", models.CharField(max_length=300, verbose_name="страница")),
                ("time", models.DateTimeField()),
                (
                    "searcher",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="actions",
                        to="site_statistics.websearcher",
                    ),
                ),
            ],
            options={
                "verbose_name": "Событие",
                "verbose_name_plural": "События",
                "ordering": ["-time"],
            },
        ),
        migrations.CreateModel(
            name="SessionAction",
            fields=[
                ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
                ("adress", models.CharField(max_length=300, verbose_name="страница")),
                ("time", models.DateTimeField()),
                ("is_page", models.BooleanField(default=True)),
                ("is_source", models.BooleanField(default=False)),
                (
                    "session",
                    models.ForeignKey(
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="actions",
                        to="site_statistics.sessionmodel",
                    ),
                ),
            ],
            options={
                "ordering": ["-time"],
                "indexes": [models.Index(fields=["session_id"], name="site_statis_session_e3ab7b_idx")],
            },
        ),
        migrations.CreateModel(
            name="UserAction",
            fields=[
                ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
                ("adress", models.CharField(max_length=300, verbose_name="страница")),
                ("time", models.DateTimeField()),
                ("text", models.CharField(max_length=200, verbose_name="")),
                ("is_page", models.BooleanField(default=True)),
                (
                    "session",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="actions",
                        to="site_statistics.useractivity",
                    ),
                ),
            ],
            options={
                "ordering": ["-time"],
                "indexes": [models.Index(fields=["session_id"], name="site_statis_session_c7d8f2_idx")],
            },
        ),
    ]
