add contact deps tenant
This commit is contained in:
@@ -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})"
|
||||
|
||||
Reference in New Issue
Block a user