diff --git a/yeti_switch_api/orm/__init__.py b/yeti_switch_api/orm/__init__.py index ef00664..816b0e7 100644 --- a/yeti_switch_api/orm/__init__.py +++ b/yeti_switch_api/orm/__init__.py @@ -1,2 +1,25 @@ from .orm_client import OrmClient # noqa: F401 from .contractor import Contractor # noqa: F401 +from .contact import Contact # noqa: F401 +from .account import Account # noqa: F401 +from .invoice import Invoice # noqa: F401 +from .invoice_originated_destination import InvoiceOriginatedDestination # noqa: F401 +from .invoice_originated_network import InvoiceOriginatedNetwork # noqa: F401 +from .invoice_terminated_destination import InvoiceTerminatedDestination # noqa: F401 +from .invoice_terminated_network import InvoiceTerminatedNetwork # noqa: F401 + +from .customers_auth import CustomersAuth # noqa: F401 +from .dialpeer import Dialpeer # noqa: F401 +from .numberlist import Numberlist # noqa: F401 +from .numberlist_item import NumberlistItem # noqa: F401 +from .rateplan import Rateplan # noqa: F401 +from .routing_tag import RoutingTag # noqa: F401 + +from .gateway import Gateway # noqa: F401 +from .gateway_group import GatewayGroup # noqa: F401 + +from .pop import Pop # noqa: F401 +from .smtp_connection import SmtpConnection # noqa: F401 +from .country import Country # noqa: F401 +from .network import Network # noqa: F401 +from .network_type import NetworkType # noqa: F401 diff --git a/yeti_switch_api/orm/account.py b/yeti_switch_api/orm/account.py new file mode 100644 index 0000000..7c5f6b5 --- /dev/null +++ b/yeti_switch_api/orm/account.py @@ -0,0 +1,17 @@ +from ..base_model import BaseModel, AttributeField, RelationField + + +class Account(BaseModel): + class Meta: + path = "accounts" + type = "account" + + contractor = RelationField("contractor") + + name = AttributeField("name") + balance = AttributeField("balance") + min_balance = AttributeField("min-balance") + max_balance = AttributeField("max-balance") + + def creatable_fields(self): + return ["contractor", "min_balace", "max_balance"] diff --git a/yeti_switch_api/orm/billing/__init__.py b/yeti_switch_api/orm/billing/__init__.py deleted file mode 100644 index 6c66dfd..0000000 --- a/yeti_switch_api/orm/billing/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -from .contact import Contact # noqa: F401 -from .invoice import Invoice # noqa: F401 -from .invoice_originated_destination import InvoiceOriginatedDestination # noqa: F401 -from .invoice_originated_network import InvoiceOriginatedNetwork # noqa: F401 -from .invoice_terminated_destination import InvoiceTerminatedDestination # noqa: F401 -from .invoice_terminated_network import InvoiceTerminatedNetwork # noqa: F401 diff --git a/yeti_switch_api/orm/billing/contact.py b/yeti_switch_api/orm/contact.py similarity index 86% rename from yeti_switch_api/orm/billing/contact.py rename to yeti_switch_api/orm/contact.py index 479b132..3c8f617 100644 --- a/yeti_switch_api/orm/billing/contact.py +++ b/yeti_switch_api/orm/contact.py @@ -3,7 +3,7 @@ class Contact(BaseModel): class Meta: - path = "billing/contacts" + path = "contacts" type = "contacts" name = AttributeField("name") diff --git a/yeti_switch_api/orm/system/country.py b/yeti_switch_api/orm/country.py similarity index 86% rename from yeti_switch_api/orm/system/country.py rename to yeti_switch_api/orm/country.py index 5328848..709c20c 100644 --- a/yeti_switch_api/orm/system/country.py +++ b/yeti_switch_api/orm/country.py @@ -3,7 +3,7 @@ class Country(BaseModel): class Meta: - path = "system/countries" + path = "countries" type = "countries" name = AttributeField("name") diff --git a/yeti_switch_api/orm/routing/customers_auth.py b/yeti_switch_api/orm/customers_auth.py similarity index 100% rename from yeti_switch_api/orm/routing/customers_auth.py rename to yeti_switch_api/orm/customers_auth.py diff --git a/yeti_switch_api/orm/routing/dialpeer.py b/yeti_switch_api/orm/dialpeer.py similarity index 100% rename from yeti_switch_api/orm/routing/dialpeer.py rename to yeti_switch_api/orm/dialpeer.py diff --git a/yeti_switch_api/orm/gateway.py b/yeti_switch_api/orm/gateway.py new file mode 100644 index 0000000..f45c978 --- /dev/null +++ b/yeti_switch_api/orm/gateway.py @@ -0,0 +1,41 @@ +from ..base_model import BaseModel, AttributeField, RelationField + + +class Gateway(BaseModel): + class Meta: + path = "gateways" + type = "gateways" + + contractor = RelationField("contractor") + gateway_group = RelationField("gateway-group") + pop = RelationField("pop") + + name = AttributeField("name") + enabled = AttributeField("enabled") + priority = AttributeField("priority") + weight = AttributeField("weight") + allow_origination = AttributeField("allow-origination") + allow_termination = AttributeField("allow-termination") + host = AttributeField("host") + port = AttributeField("port") + registered_aor_mode = AttributeField("registered-aor-mode-id") + + REGISTERED_AOR_MODE_DISABLE = 1 + REGISTERED_AOR_MODE_AS_IS = 2 + REGISTERED_AOR_MODE_REPLACE_USEPART = 3 + + def creatable_fields(self): + return [ + "contractor", + "gateway-group", + "pop", + "name", + "enabled", + "priority", + "weight", + "allow-origination", + "allow-termination", + "host", + "port", + "registered-aor-mode-id", + ] diff --git a/yeti_switch_api/orm/gateway_group.py b/yeti_switch_api/orm/gateway_group.py new file mode 100644 index 0000000..5b5d227 --- /dev/null +++ b/yeti_switch_api/orm/gateway_group.py @@ -0,0 +1,11 @@ +from ..base_model import BaseModel, AttributeField, RelationField + + +class GatewayGroup(BaseModel): + class Meta: + path = "gateway-groups" + type = "gateway-groups" + + vendor = RelationField("vendor") + + name = AttributeField("name") diff --git a/yeti_switch_api/orm/billing/invoice.py b/yeti_switch_api/orm/invoice.py similarity index 98% rename from yeti_switch_api/orm/billing/invoice.py rename to yeti_switch_api/orm/invoice.py index b8fdbc0..d06118e 100644 --- a/yeti_switch_api/orm/billing/invoice.py +++ b/yeti_switch_api/orm/invoice.py @@ -3,7 +3,7 @@ class Invoice(BaseModel): class Meta: - path = "billing/invoices" + path = "invoices" type = "invoices" account = RelationField("account") diff --git a/yeti_switch_api/orm/billing/invoice_originated_destination.py b/yeti_switch_api/orm/invoice_originated_destination.py similarity index 93% rename from yeti_switch_api/orm/billing/invoice_originated_destination.py rename to yeti_switch_api/orm/invoice_originated_destination.py index 58dd707..1226ada 100644 --- a/yeti_switch_api/orm/billing/invoice_originated_destination.py +++ b/yeti_switch_api/orm/invoice_originated_destination.py @@ -3,7 +3,7 @@ class InvoiceOriginatedDestination(BaseModel): class Meta: - path = "billing/invoice-originated-destinations" + path = "invoice-originated-destinations" type = "invoice-originated-destinations" invoice = RelationField("invoice") diff --git a/yeti_switch_api/orm/billing/invoice_originated_network.py b/yeti_switch_api/orm/invoice_originated_network.py similarity index 93% rename from yeti_switch_api/orm/billing/invoice_originated_network.py rename to yeti_switch_api/orm/invoice_originated_network.py index 74b1867..e2c86db 100644 --- a/yeti_switch_api/orm/billing/invoice_originated_network.py +++ b/yeti_switch_api/orm/invoice_originated_network.py @@ -3,7 +3,7 @@ class InvoiceOriginatedNetwork(BaseModel): class Meta: - path = "billing/invoice-originated-networks" + path = "invoice-originated-networks" type = "invoice-originated-networks" invoice = RelationField("invoice") diff --git a/yeti_switch_api/orm/billing/invoice_terminated_destination.py b/yeti_switch_api/orm/invoice_terminated_destination.py similarity index 93% rename from yeti_switch_api/orm/billing/invoice_terminated_destination.py rename to yeti_switch_api/orm/invoice_terminated_destination.py index 8acab3f..be6d2b0 100644 --- a/yeti_switch_api/orm/billing/invoice_terminated_destination.py +++ b/yeti_switch_api/orm/invoice_terminated_destination.py @@ -3,7 +3,7 @@ class InvoiceTerminatedDestination(BaseModel): class Meta: - path = "billing/invoice-terminated-destinations" + path = "invoice-terminated-destinations" type = "invoice-terminated-destinations" invoice = RelationField("invoice") diff --git a/yeti_switch_api/orm/billing/invoice_terminated_network.py b/yeti_switch_api/orm/invoice_terminated_network.py similarity index 93% rename from yeti_switch_api/orm/billing/invoice_terminated_network.py rename to yeti_switch_api/orm/invoice_terminated_network.py index 06b483b..7cf2b4f 100644 --- a/yeti_switch_api/orm/billing/invoice_terminated_network.py +++ b/yeti_switch_api/orm/invoice_terminated_network.py @@ -3,7 +3,7 @@ class InvoiceTerminatedNetwork(BaseModel): class Meta: - path = "billing/invoice-terminated-networks" + path = "invoice-terminated-networks" type = "invoice-terminated-networks" invoice = RelationField("invoice") diff --git a/yeti_switch_api/orm/system/network.py b/yeti_switch_api/orm/network.py similarity index 87% rename from yeti_switch_api/orm/system/network.py rename to yeti_switch_api/orm/network.py index 6f6bca7..d9feb99 100644 --- a/yeti_switch_api/orm/system/network.py +++ b/yeti_switch_api/orm/network.py @@ -3,7 +3,7 @@ class Network(BaseModel): class Meta: - path = "system/networks" + path = "networks" type = "networks" name = AttributeField("name") diff --git a/yeti_switch_api/orm/system/network_type.py b/yeti_switch_api/orm/network_type.py similarity index 83% rename from yeti_switch_api/orm/system/network_type.py rename to yeti_switch_api/orm/network_type.py index acb86d1..a6a587a 100644 --- a/yeti_switch_api/orm/system/network_type.py +++ b/yeti_switch_api/orm/network_type.py @@ -3,7 +3,7 @@ class NetworkType(BaseModel): class Meta: - path = "system/network-types" + path = "network-types" type = "network-types" name = AttributeField("name") diff --git a/yeti_switch_api/orm/routing/numberlist.py b/yeti_switch_api/orm/numberlist.py similarity index 88% rename from yeti_switch_api/orm/routing/numberlist.py rename to yeti_switch_api/orm/numberlist.py index 360f6db..e3fe2e8 100644 --- a/yeti_switch_api/orm/routing/numberlist.py +++ b/yeti_switch_api/orm/numberlist.py @@ -3,7 +3,7 @@ class Numberlist(BaseModel): class Meta: - path = "routing/numberlists" + path = "numberlists" type = "numberlists" name = AttributeField("name") diff --git a/yeti_switch_api/orm/routing/numberlist_item.py b/yeti_switch_api/orm/numberlist_item.py similarity index 94% rename from yeti_switch_api/orm/routing/numberlist_item.py rename to yeti_switch_api/orm/numberlist_item.py index dd08f88..37b3b48 100644 --- a/yeti_switch_api/orm/routing/numberlist_item.py +++ b/yeti_switch_api/orm/numberlist_item.py @@ -3,7 +3,7 @@ class NumberlistItem(BaseModel): class Meta: - path = "routing/numberlist-items" + path = "numberlist-items" type = "numberlist-items" key = AttributeField("key") diff --git a/yeti_switch_api/orm/orm_client.py b/yeti_switch_api/orm/orm_client.py index 35b26a3..9f3f91b 100644 --- a/yeti_switch_api/orm/orm_client.py +++ b/yeti_switch_api/orm/orm_client.py @@ -1,18 +1,31 @@ from jsonapi_requests.orm import OrmApi from ..common import build_client_config -from .routing import Rateplan, RoutingTag -from .billing import Contact -from .billing import Invoice -from .billing import InvoiceOriginatedDestination -from .billing import InvoiceOriginatedNetwork -from .billing import InvoiceTerminatedDestination -from .billing import InvoiceTerminatedNetwork + from .contractor import Contractor -from .system import SmtpConnection -from .system import Country -from .system import Network -from .system import NetworkType +from .contact import Contact +from .account import Account +from .invoice import Invoice +from .invoice_originated_destination import InvoiceOriginatedDestination +from .invoice_originated_network import InvoiceOriginatedNetwork +from .invoice_terminated_destination import InvoiceTerminatedDestination +from .invoice_terminated_network import InvoiceTerminatedNetwork + +from .customers_auth import CustomersAuth +from .dialpeer import Dialpeer +from .numberlist import Numberlist +from .numberlist_item import NumberlistItem +from .rateplan import Rateplan +from .routing_tag import RoutingTag + +from .gateway import Gateway +from .gateway_group import GatewayGroup + +from .pop import Pop +from .smtp_connection import SmtpConnection +from .country import Country +from .network import Network +from .network_type import NetworkType class OrmClient: @@ -31,17 +44,25 @@ def __new__(cls, config, **kwargs): def __register_models(cls): cls.__register_model(Contractor) cls.__register_model(Contact) + cls.__register_model(Account) cls.__register_model(Invoice) cls.__register_model(InvoiceOriginatedDestination) cls.__register_model(InvoiceOriginatedNetwork) cls.__register_model(InvoiceTerminatedDestination) cls.__register_model(InvoiceTerminatedNetwork) - cls.__register_model(Country) - cls.__register_model(Network) - cls.__register_model(NetworkType) + cls.__register_model(CustomersAuth) + cls.__register_model(Dialpeer) + cls.__register_model(Numberlist) + cls.__register_model(NumberlistItem) cls.__register_model(Rateplan) cls.__register_model(RoutingTag) + cls.__register_model(Gateway) + cls.__register_model(GatewayGroup) + cls.__register_model(Pop) cls.__register_model(SmtpConnection) + cls.__register_model(Country) + cls.__register_model(Network) + cls.__register_model(NetworkType) @classmethod def __register_model(cls, model_class): diff --git a/yeti_switch_api/orm/pop.py b/yeti_switch_api/orm/pop.py new file mode 100644 index 0000000..ac1ae94 --- /dev/null +++ b/yeti_switch_api/orm/pop.py @@ -0,0 +1,9 @@ +from ..base_model import BaseModel, AttributeField, RelationField # noqa: F401 + + +class Pop(BaseModel): + class Meta: + path = "pops" + type = "pops" + + name = AttributeField("name") diff --git a/yeti_switch_api/orm/routing/rateplan.py b/yeti_switch_api/orm/rateplan.py similarity index 86% rename from yeti_switch_api/orm/routing/rateplan.py rename to yeti_switch_api/orm/rateplan.py index a07a6c3..a826c0f 100644 --- a/yeti_switch_api/orm/routing/rateplan.py +++ b/yeti_switch_api/orm/rateplan.py @@ -3,7 +3,7 @@ class Rateplan(BaseModel): class Meta: - path = "routing/rateplans" + path = "rateplans" type = "rateplans" name = AttributeField("name") diff --git a/yeti_switch_api/orm/routing/__init__.py b/yeti_switch_api/orm/routing/__init__.py deleted file mode 100644 index d87a3dc..0000000 --- a/yeti_switch_api/orm/routing/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -from .rateplan import Rateplan # noqa: F401 -from .routing_tag import RoutingTag # noqa: F401 -from .customers_auth import CustomersAuth # noqa: F401 -from .numberlist import Numberlist # noqa: F401 -from .numberlist_item import NumberlistItem # noqa: F401 -from .dialpeer import Dialpeer # noqa: F401 diff --git a/yeti_switch_api/orm/routing/routing_tag.py b/yeti_switch_api/orm/routing_tag.py similarity index 81% rename from yeti_switch_api/orm/routing/routing_tag.py rename to yeti_switch_api/orm/routing_tag.py index fc3b0c1..a8ff223 100644 --- a/yeti_switch_api/orm/routing/routing_tag.py +++ b/yeti_switch_api/orm/routing_tag.py @@ -3,7 +3,7 @@ class RoutingTag(BaseModel): class Meta: - path = "routing/routing-tags" + path = "routing-tags" type = "routing-tags" name = AttributeField("name") diff --git a/yeti_switch_api/orm/system/smtp_connection.py b/yeti_switch_api/orm/smtp_connection.py similarity index 91% rename from yeti_switch_api/orm/system/smtp_connection.py rename to yeti_switch_api/orm/smtp_connection.py index 62d2371..94dbfc9 100644 --- a/yeti_switch_api/orm/system/smtp_connection.py +++ b/yeti_switch_api/orm/smtp_connection.py @@ -3,7 +3,7 @@ class SmtpConnection(BaseModel): class Meta: - path = "system/smtp-connections" + path = "smtp-connections" type = "smtp-connections" name = AttributeField("name") diff --git a/yeti_switch_api/orm/system/__init__.py b/yeti_switch_api/orm/system/__init__.py deleted file mode 100644 index e5fd93d..0000000 --- a/yeti_switch_api/orm/system/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from .smtp_connection import SmtpConnection # noqa: F401 -from .country import Country # noqa: F401 -from .network import Network # noqa: F401 -from .network_type import NetworkType # noqa: F401