add contact deps tenant

This commit is contained in:
IluaAir
2025-09-30 17:04:15 +03:00
parent e6df4820a6
commit 569a88a248

View File

@@ -1,6 +1,6 @@
import re
from tenancy.models import Tenant, TenantGroup
from tenancy.models import Tenant, TenantGroup, Contact, ContactRole
from ipam.models import Prefix, VRF, Role
from extras.scripts import Script, StringVar, IPNetworkVar, ChoiceVar, ObjectVar
from django.core.exceptions import ValidationError
@@ -139,6 +139,7 @@ class CreateTenant(Script):
contacts_fio = StringVar(label="ФИО", required=False)
contacts_phone = StringVar(label="Номер тел.", required=False)
contacts_email = StringVar(label="E-mail", required=False)
contacts_role = ObjectVar(label="Роль контакта", model=ContactRole, required=False)
def run(self, data, commit):
try:
@@ -171,7 +172,9 @@ class CreateTenant(Script):
tenant.full_clean()
if commit:
tenant.save()
self.log_success(f"Создан новый оператор: {tenant.name}")
self.log_success(
f"Создан новый оператор: {tenant.name} - {tenant.slug}"
)
if Prefix.objects.filter(prefix=data["prefix_cidr"]).exists():
self.log_warning(f"Префикс {data['prefix_cidr']} уже существует")
return
@@ -189,7 +192,30 @@ class CreateTenant(Script):
self.log_success(
f"Создан префикс {prefix.prefix} для оператора: {tenant.name}"
)
if data.get("contacts_fio"):
contact = Contact(
tenant=tenant,
fio=data["contacts_fio"],
phone=data["contacts_phone"],
email=data["contacts_email"],
)
try:
contact.full_clean()
contact.save()
self.log_success(f"Создан контакт: {contact.fio}")
except Exception as e:
self.log_failure(f"Ошибка при создании контакта: {e}")
try:
contact.role = data.get(
"contacts_role", ContactRole.objects.first()
)
contact.tenant = tenant
contact.save()
self.log_success(f"Связан контакт с оператором: {tenant.name}")
except Exception as e:
self.log_failure(
f"Ошибка при связывании контакта с оператором: {e}"
)
else:
self.log_info(
f"Тестовый режим: Будет создан оператор: {tenant.name} (slug: {tenant.slug})"