diff --git a/examples/package_counters.py b/examples/package_counters.py index 6f9cfab..c92711c 100644 --- a/examples/package_counters.py +++ b/examples/package_counters.py @@ -4,10 +4,7 @@ USERNAME = "admin" PASSWORD = "111111" -config = { - "API_ROOT": API_ROOT, - "AUTH_CREDS": {"login": USERNAME, "password": PASSWORD} -} +config = {"API_ROOT": API_ROOT, "AUTH_CREDS": {"login": USERNAME, "password": PASSWORD}} # Initialize ORM client (registers models) OrmClient(config) diff --git a/yeti_switch_api/orm/__init__.py b/yeti_switch_api/orm/__init__.py index ea35075..7485f32 100644 --- a/yeti_switch_api/orm/__init__.py +++ b/yeti_switch_api/orm/__init__.py @@ -3,6 +3,7 @@ from .contact import Contact # noqa: F401 from .account import Account # noqa: F401 from .invoice import Invoice # noqa: F401 +from .invoice_template import InvoiceTemplate # 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 diff --git a/yeti_switch_api/orm/account.py b/yeti_switch_api/orm/account.py index 5af40dd..0aca58c 100644 --- a/yeti_switch_api/orm/account.py +++ b/yeti_switch_api/orm/account.py @@ -9,10 +9,57 @@ class Meta: contractor = RelationField("contractor") timezone = RelationField("timezone") + external_id = AttributeField("external-id") + uuid = AttributeField("uuid") + name = AttributeField("name") balance = AttributeField("balance") min_balance = AttributeField("min-balance") max_balance = AttributeField("max-balance") + vat = AttributeField("vat") + balance_low_threshold = AttributeField("balance-low-threshold") + balance_high_threshold = AttributeField("balance-high-threshold") + send_balance_notifications_to = AttributeField("send-balance-notifications-to") + + destination_rate_limit = AttributeField("destination-rate-limit") + max_call_duration = AttributeField("max-call-duration") + origination_capacity = AttributeField("origination-capacity") + termination_capacity = AttributeField("termination-capacity") + total_capacity = AttributeField("total-capacity") + + invoice_template = RelationField("invoice-template") + invoice_period = AttributeField("invoice-period-id") + send_invoices_to = AttributeField("send-invoices-to") + + INVOICE_PERIOD_DAILY = 1 + INVOICE_PERIOD_WEEKLY = 2 + INVOICE_PERIOD_BIWEEKLY = 3 + INVOICE_PERIOD_MONTHLY = 4 + INVOICE_PERIOD_BIWEEKLY_SPLIT = 5 + INVOICE_PERIOD_WEEKLY_SPLIT = 6 def creatable_fields(self): - return ["name", "contractor", "timezone", "min-balance", "max-balance"] + return [ + "external-id", + "uuid", + "name", + "contractor", + "timezone", + "invoice-template", + "min-balance", + "max-balance", + "vat", + "balance-low-threshold", + "balance-high-threshold", + "send-balance-notifications-to", + "destination-rate-limit", + "max-call-duration", + "origination-capacity", + "termination-capacity", + "total-capacity", + "invoice-period-id", + "send-invoices-to", + ] + + def updatable_fields(self): + return self.creatable_fields() diff --git a/yeti_switch_api/orm/customers_auth.py b/yeti_switch_api/orm/customers_auth.py index a8660d8..6232af9 100644 --- a/yeti_switch_api/orm/customers_auth.py +++ b/yeti_switch_api/orm/customers_auth.py @@ -21,6 +21,9 @@ class Meta: dst_prefix = AttributeField("dst-prefix") x_yeti_auth = AttributeField("x-yeti-auth") + tag_action = RelationField("tag-action") + tag_action_value = AttributeField("tag-action-value") + def creatable_fields(self): return [ "name", @@ -37,4 +40,9 @@ def creatable_fields(self): "src-prefix", "dst-prefix", "x-yeti-auth", + "tag-action", + "tag-action-value", ] + + def updatable_fields(self): + return self.creatable_fields() diff --git a/yeti_switch_api/orm/invoice_template.py b/yeti_switch_api/orm/invoice_template.py new file mode 100644 index 0000000..df28e73 --- /dev/null +++ b/yeti_switch_api/orm/invoice_template.py @@ -0,0 +1,10 @@ +from .base_model import BaseModel, AttributeField, RelationField # noqa: F401 + + +class InvoiceTemplate(BaseModel): + class Meta: + path = "invoice-template" + type = "invoice-template" + + name = AttributeField("name") + filename = AttributeField("filename") diff --git a/yeti_switch_api/orm/numberlist.py b/yeti_switch_api/orm/numberlist.py index 682aaa9..3663ab5 100644 --- a/yeti_switch_api/orm/numberlist.py +++ b/yeti_switch_api/orm/numberlist.py @@ -1,4 +1,4 @@ -from .base_model import BaseModel, AttributeField +from .base_model import BaseModel, AttributeField, RelationField class Numberlist(BaseModel): @@ -6,7 +6,48 @@ class Meta: path = "numberlists" type = "numberlists" + external_id = AttributeField("external-id") + external_type = AttributeField("external-type") + name = AttributeField("name") - default_action_id = AttributeField("action-id") + default_action = AttributeField("default-action-id") DEFAULT_ACTION_REJECT = 1 DEFAULT_ACTION_ACCEPT = 2 + + mode = AttributeField("mode-id") + MODE_STRICT = 1 + MODE_PREFIX = 2 + MODE_RANDOM = 3 + + default_src_rewrite_rule = AttributeField("default-src-rewrite-rule") + default_src_rewrite_result = AttributeField("default-src-rewrite-result") + defer_src_rewrite = AttributeField("defer-src-rewrite") + default_dst_rewrite_rule = AttributeField("default-dst-rewrite-rule") + default_dst_rewrite_result = AttributeField("default-dst-rewrite-result") + defer_dst_rewrite = AttributeField("defer-dst-rewrite") + + tag_action = RelationField("tag-action") + tag_action_value = AttributeField("tag-action-value") + + created_at = AttributeField("created-at") + updated_at = AttributeField("updated-at") + + def creatable_fields(self): + return [ + "name", + "default-action-id", + "tag-action", + "tag-action-value", + "mode-id", + "default-src-rewrite-rule", + "default-src-rewrite-result", + "defer-src-rewrite", + "default-dst-rewrite-rule", + "default-dst-rewrite-result", + "defer-dst-rewrite", + "external-id", + "external-type", + ] + + def updatable_fields(self): + return self.creatable_fields() diff --git a/yeti_switch_api/orm/numberlist_item.py b/yeti_switch_api/orm/numberlist_item.py index f1c26c6..f4781fc 100644 --- a/yeti_switch_api/orm/numberlist_item.py +++ b/yeti_switch_api/orm/numberlist_item.py @@ -6,16 +6,43 @@ class Meta: path = "numberlist-items" type = "numberlist-items" - key = AttributeField("key") - number_min_length = AttributeField("number_min_length") - number_max_length = AttributeField("number_max_length") - src_rewrite_rule = AttributeField("src_rewrite_rule") - src_rewrite_result = AttributeField("src_rewrite_result") - dst_rewrite_rule = AttributeField("dst_rewrite_rule") - dst_rewrite_result = AttributeField("dst_rewrite_result") - created_at = AttributeField("created_at") - updated_at = AttributeField("updated_at") numberlist = RelationField("numberlist") + key = AttributeField("key") + number_min_length = AttributeField("number-min-length") + number_max_length = AttributeField("number-max-length") + src_rewrite_rule = AttributeField("src-rewrite-rule") + src_rewrite_result = AttributeField("src-rewrite-result") + defer_src_rewrite = AttributeField("defer-src-rewrite") + + dst_rewrite_rule = AttributeField("dst-rewrite-rule") + dst_rewrite_result = AttributeField("dst-rewrite-result") + defer_dst_rewrite = AttributeField("defer-dst-rewrite") + + created_at = AttributeField("created-at") + updated_at = AttributeField("updated-at") + action_id = AttributeField("action-id") ACTION_REJECT = 1 ACTION_ACCEPT = 2 + tag_action = RelationField("tag-action") + tag_action_value = AttributeField("tag-action-value") + + def creatable_fields(self): + return [ + "numberlist", + "key", + "number-min-length", + "number-max-length", + "src-rewrite-rule", + "src-rewrite-result", + "defer-src-rewrite", + "dst-rewrite-rule", + "dst-rewrite-result", + "defer-dst-rewrite", + "action-id", + "tag-action", + "tag-action-value", + ] + + def updatable_fields(self): + return self.creatable_fields() diff --git a/yeti_switch_api/orm/orm_client.py b/yeti_switch_api/orm/orm_client.py index 6e638a2..2629c80 100644 --- a/yeti_switch_api/orm/orm_client.py +++ b/yeti_switch_api/orm/orm_client.py @@ -6,6 +6,7 @@ from .contact import Contact from .account import Account from .invoice import Invoice +from .invoice_template import InvoiceTemplate from .invoice_originated_destination import InvoiceOriginatedDestination from .invoice_originated_network import InvoiceOriginatedNetwork from .invoice_terminated_destination import InvoiceTerminatedDestination @@ -49,6 +50,7 @@ def __register_models(cls): cls.__register_model(Contact) cls.__register_model(Account) cls.__register_model(Invoice) + cls.__register_model(InvoiceTemplate) cls.__register_model(InvoiceOriginatedDestination) cls.__register_model(InvoiceOriginatedNetwork) cls.__register_model(InvoiceTerminatedDestination) diff --git a/yeti_switch_api/orm/package_counter.py b/yeti_switch_api/orm/package_counter.py index b7c7723..ab5469e 100644 --- a/yeti_switch_api/orm/package_counter.py +++ b/yeti_switch_api/orm/package_counter.py @@ -1,5 +1,6 @@ from .base_model import BaseModel, AttributeField, RelationField + class PackageCounter(BaseModel): class Meta: path = "package-counters" @@ -8,7 +9,6 @@ class Meta: duration = AttributeField("duration") exclude = AttributeField("exclude") prefix = AttributeField("prefix") - service_id = AttributeField("service-id") account = RelationField("account") service = RelationField("service")