add: department exclusion check for auto-approval
This commit is contained in:
+31
-3
@@ -17,8 +17,6 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import base64
|
|
||||||
import json
|
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
@@ -185,6 +183,24 @@ def find_user(conn, login=None, email=None, phone=None):
|
|||||||
else:
|
else:
|
||||||
result["manager_email"] = None
|
result["manager_email"] = None
|
||||||
|
|
||||||
|
# Проверка department на исключение из автосогласования
|
||||||
|
excluded_depts = [
|
||||||
|
# "IT-Администраторы",
|
||||||
|
# "Системные аналитики",
|
||||||
|
# Добавьте нужные отделы из config.py: APPROVAL_EXCLUDED_DEPARTMENTS
|
||||||
|
]
|
||||||
|
|
||||||
|
if result["department"] and any(
|
||||||
|
dept.lower() in result["department"].lower() or
|
||||||
|
result["department"].lower() in dept.lower()
|
||||||
|
for dept in excluded_depts
|
||||||
|
):
|
||||||
|
result["approval_excluded"] = True
|
||||||
|
result["excluded_department"] = result["department"]
|
||||||
|
else:
|
||||||
|
result["approval_excluded"] = False
|
||||||
|
result["excluded_department"] = None
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
@@ -202,7 +218,7 @@ def print_report(data):
|
|||||||
print(f" ФИО: {data['display_name']}")
|
print(f" ФИО: {data['display_name']}")
|
||||||
print(f" Email: {data['mail']}")
|
print(f" Email: {data['mail']}")
|
||||||
print(f" Должность: {data['title']}")
|
print(f" Должность: {data['title']}")
|
||||||
print(f" Отдел: {data['department']}")
|
print(f" Отдел: {data['department'] or '—'}")
|
||||||
print(f" Город: {data['city'] or '—'}")
|
print(f" Город: {data['city'] or '—'}")
|
||||||
print(f" Компания: {data['company'] or '—'}")
|
print(f" Компания: {data['company'] or '—'}")
|
||||||
print(f" Телефон: {data['phone'] or '—'}")
|
print(f" Телефон: {data['phone'] or '—'}")
|
||||||
@@ -210,6 +226,15 @@ def print_report(data):
|
|||||||
print(f" Руководитель: {data['manager_name'] or '—'}")
|
print(f" Руководитель: {data['manager_name'] or '—'}")
|
||||||
if data.get("manager_email"):
|
if data.get("manager_email"):
|
||||||
print(f" Email руково.: {data['manager_email']}")
|
print(f" Email руково.: {data['manager_email']}")
|
||||||
|
|
||||||
|
# Проверка на исключение из автосогласования
|
||||||
|
if data.get("approval_excluded"):
|
||||||
|
print("\n" + "!" * 60)
|
||||||
|
print(f" ⚠️ ОТДЕЛ: {data['excluded_department']}")
|
||||||
|
print(f" ⚠️ АВТОСОГЛАСОВАНИЕ ОТМЕНЕНО")
|
||||||
|
print(f" Пользователь находится в исключённом отделе.")
|
||||||
|
print("!" * 60)
|
||||||
|
|
||||||
print("-" * 60)
|
print("-" * 60)
|
||||||
print(f" DN: {data['dn']}")
|
print(f" DN: {data['dn']}")
|
||||||
|
|
||||||
@@ -282,6 +307,9 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
Учётные данные AD загружаются из Passwork (как в основном коде).
|
Учётные данные AD загружаются из Passwork (как в основном коде).
|
||||||
Если Passwork недоступен — запрашиваются вручную.
|
Если Passwork недоступен — запрашиваются вручную.
|
||||||
|
|
||||||
|
Проверка department: если department пользователя совпадает с
|
||||||
|
APPROVAL_EXCLUDED_DEPARTMENTS из config.py — автосогласование отменяется.
|
||||||
""",
|
""",
|
||||||
)
|
)
|
||||||
group = parser.add_mutually_exclusive_group(required=True)
|
group = parser.add_mutually_exclusive_group(required=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user