diff --git a/add_tenant_with_prefix.py b/add_tenant_with_prefix.py index 35dbec4..acbdbb4 100644 --- a/add_tenant_with_prefix.py +++ b/add_tenant_with_prefix.py @@ -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})"