123 lines
4.5 KiB
Python
123 lines
4.5 KiB
Python
# Generated by Django 5.2.4 on 2025-07-29 05:31
|
||
|
||
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="Document",
|
||
fields=[
|
||
(
|
||
"id",
|
||
models.BigAutoField(
|
||
auto_created=True,
|
||
primary_key=True,
|
||
serialize=False,
|
||
verbose_name="ID",
|
||
),
|
||
),
|
||
("title", models.CharField(max_length=255, verbose_name="Название")),
|
||
(
|
||
"file",
|
||
models.FileField(
|
||
upload_to="documents/%Y/%m/%d/", verbose_name="Файл"
|
||
),
|
||
),
|
||
("description", models.TextField(blank=True, verbose_name="Описание")),
|
||
(
|
||
"uploaded_at",
|
||
models.DateTimeField(
|
||
auto_now_add=True, verbose_name="Дата загрузки"
|
||
),
|
||
),
|
||
(
|
||
"sent_to_all",
|
||
models.BooleanField(
|
||
default=False,
|
||
help_text="Если включено — уведомление получат все активные сотрудники",
|
||
verbose_name="Разослать всем",
|
||
),
|
||
),
|
||
(
|
||
"recipients",
|
||
models.ManyToManyField(
|
||
blank=True,
|
||
help_text="Если `Разослать всем` отключено, документ пойдет только этим",
|
||
related_name="document_recipients",
|
||
to=settings.AUTH_USER_MODEL,
|
||
verbose_name="Получатели",
|
||
),
|
||
),
|
||
(
|
||
"uploaded_by",
|
||
models.ForeignKey(
|
||
blank=True,
|
||
null=True,
|
||
on_delete=django.db.models.deletion.SET_NULL,
|
||
related_name="uploaded_documents",
|
||
to=settings.AUTH_USER_MODEL,
|
||
verbose_name="Загрузил",
|
||
),
|
||
),
|
||
],
|
||
options={
|
||
"verbose_name": "Документ",
|
||
"verbose_name_plural": "Документы",
|
||
"ordering": ["-uploaded_at"],
|
||
},
|
||
),
|
||
migrations.CreateModel(
|
||
name="DocumentAcknowledgement",
|
||
fields=[
|
||
(
|
||
"id",
|
||
models.BigAutoField(
|
||
auto_created=True,
|
||
primary_key=True,
|
||
serialize=False,
|
||
verbose_name="ID",
|
||
),
|
||
),
|
||
(
|
||
"acknowledged_at",
|
||
models.DateTimeField(
|
||
auto_now_add=True, verbose_name="Время ознакомления"
|
||
),
|
||
),
|
||
(
|
||
"document",
|
||
models.ForeignKey(
|
||
on_delete=django.db.models.deletion.CASCADE,
|
||
related_name="acknowledgements",
|
||
to="documents.document",
|
||
verbose_name="Документ",
|
||
),
|
||
),
|
||
(
|
||
"user",
|
||
models.ForeignKey(
|
||
on_delete=django.db.models.deletion.CASCADE,
|
||
related_name="document_acknowledgements",
|
||
to=settings.AUTH_USER_MODEL,
|
||
verbose_name="Сотрудник",
|
||
),
|
||
),
|
||
],
|
||
options={
|
||
"verbose_name": "Ознакомление с документом",
|
||
"verbose_name_plural": "Ознакомления с документами",
|
||
"ordering": ["-acknowledged_at"],
|
||
"unique_together": {("document", "user")},
|
||
},
|
||
),
|
||
]
|