81dee5cba2
- ad_connector: страницы управления OU и импорта из AD, поле ad_ou_dn в Directory, ADSyncLog; расширение sync-сервиса и клиента - mattermost_connector: personal access token шифруется (Fernet, token_service), бот-сервис, команды создания бота и синхронизации; публикация постов в каналы. Тесты (19) - core: ConnectorConfig, Directory (ad_ou_dn), обновления админки Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
from django.db import models
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from core.models import BaseModel
|
|
|
|
|
|
class ADSyncLog(BaseModel):
|
|
employee = models.ForeignKey(
|
|
'employees.Employee', on_delete=models.CASCADE,
|
|
related_name='ad_sync_logs', verbose_name=_('Сотрудник'),
|
|
)
|
|
action = models.CharField(
|
|
_('Действие'), max_length=20,
|
|
choices=[
|
|
('create', _('Создание')),
|
|
('update', _('Обновление')),
|
|
('activate', _('Включение')),
|
|
('deactivate', _('Отключение')),
|
|
],
|
|
)
|
|
status = models.CharField(
|
|
_('Статус'), max_length=10,
|
|
choices=[('success', _('Успех')), ('error', _('Ошибка'))],
|
|
)
|
|
message = models.TextField(_('Сообщение'), blank=True)
|
|
|
|
class Meta:
|
|
verbose_name = _('Запись синхронизации AD')
|
|
verbose_name_plural = _('Журнал синхронизации AD')
|
|
ordering = ['-created_at']
|
|
|
|
def __str__(self):
|
|
return f'{self.employee} — {self.get_action_display()} — {self.get_status_display()}'
|