Corp/backend/employees/migrations/0042_ldapsyncqueue.py
2026-09-07 19:43:48 +03:00

273 lines
9.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Generated by Django 5.2.4 on 2026-03-19 19:53
import ldapdb.models.fields
from django.db import migrations, models
import employees.ldap.mixins
class Migration(migrations.Migration):
dependencies = [
("employees", "0041_alter_departmentpermission_code"),
]
operations = [
migrations.CreateModel(
name="LdapGroup",
fields=[
(
"dn",
ldapdb.models.fields.CharField(
max_length=200, primary_key=True, serialize=False
),
),
("cn", ldapdb.models.fields.CharField(db_column="cn", max_length=200)),
(
"object_guid",
ldapdb.models.fields.CharField(
db_column="objectGUID", max_length=200
),
),
(
"sam_account_name",
ldapdb.models.fields.CharField(
db_column="sAMAccountName", max_length=200
),
),
(
"description",
ldapdb.models.fields.CharField(
blank=True, db_column="description", max_length=200
),
),
(
"member",
ldapdb.models.fields.ListField(blank=True, db_column="member"),
),
(
"member_of",
ldapdb.models.fields.ListField(blank=True, db_column="memberOf"),
),
(
"when_created",
ldapdb.models.fields.DateTimeField(db_column="whenCreated"),
),
(
"when_changed",
ldapdb.models.fields.DateTimeField(db_column="whenChanged"),
),
],
options={
"managed": False,
},
bases=(employees.ldap.mixins.ModifyDnMixin, models.Model),
),
migrations.CreateModel(
name="LdapOrganizationalUnit",
fields=[
(
"dn",
ldapdb.models.fields.CharField(
max_length=200, primary_key=True, serialize=False
),
),
("ou", ldapdb.models.fields.CharField(db_column="ou", max_length=200)),
(
"object_guid",
ldapdb.models.fields.CharField(
db_column="objectGUID", max_length=200
),
),
(
"description",
ldapdb.models.fields.CharField(
blank=True, db_column="description", max_length=200
),
),
(
"managed_by",
ldapdb.models.fields.CharField(
blank=True, db_column="managedBy", max_length=200
),
),
(
"when_created",
ldapdb.models.fields.DateTimeField(db_column="whenCreated"),
),
(
"when_changed",
ldapdb.models.fields.DateTimeField(db_column="whenChanged"),
),
],
options={
"managed": False,
},
bases=(employees.ldap.mixins.ModifyDnMixin, models.Model),
),
migrations.CreateModel(
name="LdapUser",
fields=[
(
"dn",
ldapdb.models.fields.CharField(
max_length=200, primary_key=True, serialize=False
),
),
("cn", ldapdb.models.fields.CharField(db_column="cn", max_length=200)),
(
"object_guid",
ldapdb.models.fields.CharField(
db_column="objectGUID", max_length=200
),
),
(
"sam_account_name",
ldapdb.models.fields.CharField(
db_column="sAMAccountName", max_length=200
),
),
(
"user_principal_name",
ldapdb.models.fields.CharField(
db_column="userPrincipalName", max_length=200
),
),
(
"given_name",
ldapdb.models.fields.CharField(
db_column="givenName", max_length=200
),
),
("sn", ldapdb.models.fields.CharField(db_column="sn", max_length=200)),
(
"display_name",
ldapdb.models.fields.CharField(
db_column="displayName", max_length=200
),
),
(
"mail",
ldapdb.models.fields.CharField(db_column="mail", max_length=200),
),
(
"telephone_number",
ldapdb.models.fields.CharField(
blank=True, db_column="telephoneNumber", max_length=200
),
),
(
"mobile",
ldapdb.models.fields.CharField(
blank=True, db_column="mobile", max_length=200
),
),
(
"user_account_control",
ldapdb.models.fields.IntegerField(db_column="userAccountControl"),
),
(
"description",
ldapdb.models.fields.CharField(
blank=True, db_column="description", max_length=200
),
),
(
"thumbnail_photo",
ldapdb.models.fields.ImageField(
blank=True, db_column="thumbnailPhoto"
),
),
(
"employee_number",
ldapdb.models.fields.CharField(
blank=True, db_column="employeeNumber", max_length=200
),
),
(
"member_of",
ldapdb.models.fields.ListField(blank=True, db_column="memberOf"),
),
(
"when_created",
ldapdb.models.fields.DateTimeField(db_column="whenCreated"),
),
(
"when_changed",
ldapdb.models.fields.DateTimeField(db_column="whenChanged"),
),
],
options={
"managed": False,
},
bases=(
employees.ldap.mixins.LdapSyncStateMixin,
employees.ldap.mixins.ModifyDnMixin,
models.Model,
),
),
migrations.CreateModel(
name="LdapSyncQueue",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"operation",
models.CharField(
db_index=True,
help_text="Имя операции (employee_save, department_delete, group_m2m и т.д.)",
max_length=64,
),
),
("model_name", models.CharField(db_index=True, max_length=32)),
("object_pk", models.CharField(db_index=True, max_length=64)),
(
"payload",
models.JSONField(
default=dict,
help_text="JSON с аргументами для повтора операции",
),
),
(
"status",
models.CharField(
choices=[
("pending", "Ожидает"),
("in_progress", "Выполняется"),
("completed", "Завершено"),
("failed", "Ошибка (исчерпаны попытки)"),
],
db_index=True,
default="pending",
max_length=16,
),
),
("attempts", models.PositiveIntegerField(default=0)),
("max_attempts", models.PositiveIntegerField(default=5)),
(
"next_retry_at",
models.DateTimeField(blank=True, db_index=True, null=True),
),
("last_error", models.TextField(blank=True, default="")),
("created_at", models.DateTimeField(auto_now_add=True)),
("updated_at", models.DateTimeField(auto_now=True)),
],
options={
"verbose_name": "Очередь LDAP синхронизации",
"verbose_name_plural": "Очередь LDAP синхронизации",
"ordering": ["created_at"],
"indexes": [
models.Index(
fields=["status", "next_retry_at"], name="ldap_queue_retry_idx"
)
],
},
),
]