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