From e20a4f59ea2011d39ec0c8a753647f689b697269 Mon Sep 17 00:00:00 2001 From: "ht.albert" Date: Tue, 19 Feb 2019 22:11:21 +0300 Subject: [PATCH] Splitting models on many files --- connect/models/__init__.py | 5 +- connect/models/asset.py | 28 ++++ connect/models/base.py | 17 +++ connect/models/company.py | 15 ++ connect/models/connection.py | 22 +++ connect/models/exception.py | 2 +- connect/models/fulfillment.py | 26 ++++ connect/models/hub.py | 20 +++ connect/models/marketplace.py | 71 +++++++++ connect/models/parameters.py | 32 ++++ connect/models/product.py | 30 ++++ connect/models/schema.py | 261 --------------------------------- connect/models/server_error.py | 17 +++ connect/models/tiers.py | 24 +++ 14 files changed, 307 insertions(+), 263 deletions(-) create mode 100644 connect/models/asset.py create mode 100644 connect/models/base.py create mode 100644 connect/models/company.py create mode 100644 connect/models/connection.py create mode 100644 connect/models/fulfillment.py create mode 100644 connect/models/hub.py create mode 100644 connect/models/marketplace.py create mode 100644 connect/models/parameters.py create mode 100644 connect/models/product.py delete mode 100644 connect/models/schema.py create mode 100644 connect/models/server_error.py create mode 100644 connect/models/tiers.py diff --git a/connect/models/__init__.py b/connect/models/__init__.py index bcd9170..90bac0f 100644 --- a/connect/models/__init__.py +++ b/connect/models/__init__.py @@ -1,5 +1,8 @@ from .activation_response import ActivationTemplateResponse, ActivationTileResponse -from .schema import BaseScheme, FulfillmentScheme, Param, ParamsScheme, ServerErrorScheme +from .base import BaseScheme +from .fulfillment import FulfillmentScheme +from .parameters import Param, ParamsScheme +from .server_error import ServerErrorScheme __all__ = [ 'ActivationTemplateResponse', diff --git a/connect/models/asset.py b/connect/models/asset.py new file mode 100644 index 0000000..48cda13 --- /dev/null +++ b/connect/models/asset.py @@ -0,0 +1,28 @@ +from marshmallow import fields, post_load + +from .base import BaseObject, BaseScheme +from .connection import ConnectionScheme +from .parameters import ParamsScheme +from .product import ItemScheme, ProductScheme +from .tiers import TiersSchemeMixin + + +class Asset(BaseObject): + pass + + +class AssetScheme(BaseScheme): + status = fields.Str() + external_id = fields.Str() + external_uid = fields.UUID() + product = fields.Nested(ProductScheme, only=('id', 'name')) + connection = fields.Nested( + ConnectionScheme, only=('id', 'type', 'provider', 'vendor'), + ) + items = fields.List(fields.Nested(ItemScheme)) + params = fields.List(fields.Nested(ParamsScheme)) + tiers = fields.Nested(TiersSchemeMixin) + + @post_load + def make_object(self, data): + return Asset(**data) diff --git a/connect/models/base.py b/connect/models/base.py new file mode 100644 index 0000000..be9c689 --- /dev/null +++ b/connect/models/base.py @@ -0,0 +1,17 @@ +from marshmallow import Schema, fields, post_load + + +class BaseObject: + def __init__(self, *args, **kwargs): + self.id = kwargs.get('id') + if kwargs: + for attr, val in kwargs.items(): + setattr(self, attr, val) + + +class BaseScheme(Schema): + id = fields.Str() + + @post_load + def make_object(self, data): + return BaseObject(**data) diff --git a/connect/models/company.py b/connect/models/company.py new file mode 100644 index 0000000..af69b32 --- /dev/null +++ b/connect/models/company.py @@ -0,0 +1,15 @@ +from marshmallow import fields, post_load + +from .base import BaseObject, BaseScheme + + +class Company(BaseObject): + pass + + +class CompanyScheme(BaseScheme): + name = fields.Str() + + @post_load + def make_object(self, data): + return Company(**data) diff --git a/connect/models/connection.py b/connect/models/connection.py new file mode 100644 index 0000000..4964545 --- /dev/null +++ b/connect/models/connection.py @@ -0,0 +1,22 @@ +from marshmallow import fields, post_load + +from .base import BaseObject, BaseScheme +from .company import CompanyScheme +from .hub import HubScheme +from .product import ProductScheme + + +class Connection(BaseObject): + pass + + +class ConnectionScheme(BaseScheme): + type = fields.Str() + provider = fields.Nested(CompanyScheme, only=('id', 'name')) + vendor = fields.Nested(CompanyScheme, only=('id', 'name')) + product = fields.Nested(ProductScheme) + hub = fields.Nested(HubScheme) + + @post_load + def make_object(self, data): + return Connection(**data) diff --git a/connect/models/exception.py b/connect/models/exception.py index 198b763..b7c2d2a 100644 --- a/connect/models/exception.py +++ b/connect/models/exception.py @@ -1,4 +1,4 @@ -from .schema import ServerError +from .server_error import ServerError class Message(Exception): diff --git a/connect/models/fulfillment.py b/connect/models/fulfillment.py new file mode 100644 index 0000000..00e3bf1 --- /dev/null +++ b/connect/models/fulfillment.py @@ -0,0 +1,26 @@ +from marshmallow import fields, post_load + +from .asset import AssetScheme +from .base import BaseObject, BaseScheme +from .marketplace import ContractScheme, MarketplaceScheme + + +class Fulfillment(BaseObject): + pass + + +class FulfillmentScheme(BaseScheme): + activation_key = fields.Str() + asset = fields.Nested(AssetScheme) + status = fields.Str() + type = fields.Str() + updated = fields.DateTime() + created = fields.DateTime() + reason = fields.Str() + params_form_url = fields.Str() + contract = fields.Nested(ContractScheme, only=('id', 'name')) + marketplace = fields.Nested(MarketplaceScheme, only=('id', 'name')) + + @post_load + def make_object(self, data): + return Fulfillment(**data) diff --git a/connect/models/hub.py b/connect/models/hub.py new file mode 100644 index 0000000..a56961c --- /dev/null +++ b/connect/models/hub.py @@ -0,0 +1,20 @@ +from marshmallow import Schema, fields, post_load + +from .base import BaseObject, BaseScheme + + +class Hub(BaseObject): + pass + + +class HubScheme(BaseScheme): + name = fields.Str() + + @post_load + def make_object(self, data): + return Hub(**data) + + +class HubsSchemeMixin(Schema): + hub = fields.Nested(HubScheme, only=('id', 'name')) + external_id = fields.Str() diff --git a/connect/models/marketplace.py b/connect/models/marketplace.py new file mode 100644 index 0000000..71e8bbb --- /dev/null +++ b/connect/models/marketplace.py @@ -0,0 +1,71 @@ +from marshmallow import fields, post_load + +from .base import BaseObject, BaseScheme +from .company import CompanyScheme +from .hub import HubsSchemeMixin + + +class Marketplace(BaseObject): + pass + + +class MarketplaceScheme(BaseScheme): + name = fields.Str() + zone = fields.Str() + description = fields.Str() + active_contract = fields.Int() + icon = fields.Str() + owner = fields.Nested(CompanyScheme, only=('id', 'name')) + hubs = fields.List(fields.Nested(HubsSchemeMixin, only=('id', 'name'))) + + @post_load + def make_object(self, data): + return Marketplace(**data) + + +class Agreement(BaseObject): + pass + + +class AgreementScheme(BaseScheme): + type = fields.Str() + title = fields.Str() + description = fields.Str() + created = fields.DateTime() + updated = fields.DateTime() + owner = fields.Nested(CompanyScheme, only=('id', 'name')) + stats = fields.Dict() + active = fields.Bool() + version = fields.Int() + link = fields.Str() + version_created = fields.DateTime() + version_contracts = fields.Int() + + @post_load + def make_object(self, data): + return Agreement(**data) + + +class Contract(BaseObject): + pass + + +class ContractScheme(BaseScheme): + name = fields.Str() + status = fields.Str() + version = fields.Int() + type = fields.Str() + agreement = fields.Nested(AgreementScheme, only=('id', 'name')) + marketplace = fields.Nested(MarketplaceScheme, only=('id', 'name')) + owner = fields.Nested(CompanyScheme, only=('id', 'name')) + creater = fields.Nested(CompanyScheme, only=('id', 'name')) + created = fields.DateTime() + updated = fields.DateTime() + enrolled = fields.Str() + version_created = fields.DateTime() + activation = fields.Dict() + signee = fields.Nested(CompanyScheme, only=('id', 'name')) + + @post_load + def make_object(self, data): + return Contract(**data) diff --git a/connect/models/parameters.py b/connect/models/parameters.py new file mode 100644 index 0000000..e50b284 --- /dev/null +++ b/connect/models/parameters.py @@ -0,0 +1,32 @@ +from marshmallow import Schema, fields, post_load + +from .base import BaseObject, BaseScheme + + +class ValueChoice(BaseObject): + pass + + +class ValueChoiceScheme(Schema): + value = fields.Str() + label = fields.Str() + + @post_load + def make_object(self, data): + return ValueChoice(**data) + + +class Param(BaseObject): + pass + + +class ParamsScheme(BaseScheme): + name = fields.Str() + type = fields.Str() + value = fields.Str() + value_choices = fields.List(fields.Nested(ValueChoiceScheme)) + value_error = fields.Str() + + @post_load + def make_object(self, data): + return Param(**data) diff --git a/connect/models/product.py b/connect/models/product.py new file mode 100644 index 0000000..9fba419 --- /dev/null +++ b/connect/models/product.py @@ -0,0 +1,30 @@ +from marshmallow import fields, post_load + +from .base import BaseObject, BaseScheme + + +class Product(BaseObject): + pass + + +class ProductScheme(BaseScheme): + name = fields.Str() + + @post_load + def make_object(self, data): + return Product(**data) + + +class Item(BaseObject): + pass + + +class ItemScheme(BaseScheme): + global_id = fields.Str() + mpn = fields.Str() + old_quantity = fields.Str() + quantity = fields.Integer() + + @post_load + def make_object(self, data): + return Item(**data) diff --git a/connect/models/schema.py b/connect/models/schema.py deleted file mode 100644 index f2a938e..0000000 --- a/connect/models/schema.py +++ /dev/null @@ -1,261 +0,0 @@ -from marshmallow import Schema, fields, post_load - - -class BaseObject: - def __init__(self, *args, **kwargs): - self.id = kwargs.get('id') - if kwargs: - for attr, val in kwargs.items(): - setattr(self, attr, val) - - -class BaseScheme(Schema): - id = fields.Str() - - @post_load - def make_object(self, data): - return BaseObject(**data) - - -class Product(BaseObject): - pass - - -class ProductScheme(BaseScheme): - name = fields.Str() - - @post_load - def make_object(self, data): - return Product(**data) - - -class Item(BaseObject): - pass - - -class ItemScheme(BaseScheme): - global_id = fields.Str() - mpn = fields.Str() - old_quantity = fields.Str() - quantity = fields.Integer() - - @post_load - def make_object(self, data): - return Item(**data) - - -class Tier(BaseObject): - pass - - -class TierScheme(BaseScheme): - name = fields.Str() - contact_info = fields.Dict() - external_id = fields.Str() - external_uid = fields.UUID() - - @post_load - def make_object(self, data): - return Tier(**data) - - -class TiersSchemeMixin(Schema): - customer = fields.Nested(TierScheme) - tier1 = fields.Nested(TierScheme) - tier2 = fields.Nested(TierScheme) - - -class Hub(BaseObject): - pass - - -class HubScheme(BaseScheme): - name = fields.Str() - - @post_load - def make_object(self, data): - return Hub(**data) - - -class HubsSchemeMixin(Schema): - hub = fields.Nested(HubScheme, only=('id', 'name')) - external_id = fields.Str() - - -class Company(BaseObject): - pass - - -class CompanyScheme(BaseScheme): - name = fields.Str() - - @post_load - def make_object(self, data): - return Company(**data) - - -class Connection(BaseObject): - pass - - -class ConnectionScheme(BaseScheme): - type = fields.Str() - provider = fields.Nested(CompanyScheme, only=('id', 'name')) - vendor = fields.Nested(CompanyScheme, only=('id', 'name')) - product = fields.Nested(ProductScheme) - hub = fields.Nested(HubScheme) - - @post_load - def make_object(self, data): - return Connection(**data) - - -class ValueChoice(BaseObject): - pass - - -class ValueChoiceScheme(Schema): - value = fields.Str() - label = fields.Str() - - @post_load - def make_object(self, data): - return ValueChoice(**data) - - -class Param(BaseObject): - pass - - -class ParamsScheme(BaseScheme): - name = fields.Str() - type = fields.Str() - value = fields.Str() - value_choices = fields.List(fields.Nested(ValueChoiceScheme)) - value_error = fields.Str() - - @post_load - def make_object(self, data): - return Param(**data) - - -class Asset(BaseObject): - pass - - -class AssetScheme(BaseScheme): - status = fields.Str() - external_id = fields.Str() - external_uid = fields.UUID() - product = fields.Nested(ProductScheme, only=('id', 'name')) - connection = fields.Nested( - ConnectionScheme, only=('id', 'type', 'provider', 'vendor'), - ) - items = fields.List(fields.Nested(ItemScheme)) - params = fields.List(fields.Nested(ParamsScheme)) - tiers = fields.Nested(TiersSchemeMixin) - - @post_load - def make_object(self, data): - return Asset(**data) - - -class Marketplace(BaseObject): - pass - - -class MarketplaceScheme(BaseScheme): - name = fields.Str() - zone = fields.Str() - description = fields.Str() - active_contract = fields.Int() - icon = fields.Str() - owner = fields.Nested(CompanyScheme, only=('id', 'name')) - hubs = fields.List(fields.Nested(HubsSchemeMixin, only=('id', 'name'))) - - @post_load - def make_object(self, data): - return Marketplace(**data) - - -class Agreement(BaseObject): - pass - - -class AgreementScheme(BaseScheme): - type = fields.Str() - title = fields.Str() - description = fields.Str() - created = fields.DateTime() - updated = fields.DateTime() - owner = fields.Nested(CompanyScheme, only=('id', 'name')) - stats = fields.Dict() - active = fields.Bool() - version = fields.Int() - link = fields.Str() - version_created = fields.DateTime() - version_contracts = fields.Int() - - @post_load - def make_object(self, data): - return Agreement(**data) - - -class Contract(BaseObject): - pass - - -class ContractScheme(BaseScheme): - name = fields.Str() - status = fields.Str() - version = fields.Int() - type = fields.Str() - agreement = fields.Nested(AgreementScheme, only=('id', 'name')) - marketplace = fields.Nested(MarketplaceScheme, only=('id', 'name')) - owner = fields.Nested(CompanyScheme, only=('id', 'name')) - creater = fields.Nested(CompanyScheme, only=('id', 'name')) - created = fields.DateTime() - updated = fields.DateTime() - enrolled = fields.Str() - version_created = fields.DateTime() - activation = fields.Dict() - signee = fields.Nested(CompanyScheme, only=('id', 'name')) - - @post_load - def make_object(self, data): - return Contract(**data) - - -class Fulfillment(BaseObject): - pass - - -class FulfillmentScheme(BaseScheme): - activation_key = fields.Str() - asset = fields.Nested(AssetScheme) - status = fields.Str() - type = fields.Str() - updated = fields.DateTime() - created = fields.DateTime() - reason = fields.Str() - params_form_url = fields.Str() - contract = fields.Nested(ContractScheme, only=('id', 'name')) - marketplace = fields.Nested(MarketplaceScheme, only=('id', 'name')) - - @post_load - def make_object(self, data): - return Fulfillment(**data) - - -class ServerError(BaseObject): - pass - - -class ServerErrorScheme(Schema): - error_code = fields.Str() - params = fields.Dict() - errors = fields.List(fields.Str()) - - @post_load - def make_object(self, data): - return ServerError(**data) diff --git a/connect/models/server_error.py b/connect/models/server_error.py new file mode 100644 index 0000000..2130511 --- /dev/null +++ b/connect/models/server_error.py @@ -0,0 +1,17 @@ +from marshmallow import Schema, fields, post_load + +from .base import BaseObject + + +class ServerError(BaseObject): + pass + + +class ServerErrorScheme(Schema): + error_code = fields.Str() + params = fields.Dict() + errors = fields.List(fields.Str()) + + @post_load + def make_object(self, data): + return ServerError(**data) diff --git a/connect/models/tiers.py b/connect/models/tiers.py new file mode 100644 index 0000000..668100b --- /dev/null +++ b/connect/models/tiers.py @@ -0,0 +1,24 @@ +from marshmallow import Schema, fields, post_load + +from .base import BaseObject, BaseScheme + + +class Tier(BaseObject): + pass + + +class TierScheme(BaseScheme): + name = fields.Str() + contact_info = fields.Dict() + external_id = fields.Str() + external_uid = fields.UUID() + + @post_load + def make_object(self, data): + return Tier(**data) + + +class TiersSchemeMixin(Schema): + customer = fields.Nested(TierScheme) + tier1 = fields.Nested(TierScheme) + tier2 = fields.Nested(TierScheme)