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