Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion connect/models/__init__.py
Original file line number Diff line number Diff line change
@@ -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',
Expand Down
28 changes: 28 additions & 0 deletions connect/models/asset.py
Original file line number Diff line number Diff line change
@@ -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)
17 changes: 17 additions & 0 deletions connect/models/base.py
Original file line number Diff line number Diff line change
@@ -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)
15 changes: 15 additions & 0 deletions connect/models/company.py
Original file line number Diff line number Diff line change
@@ -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)
22 changes: 22 additions & 0 deletions connect/models/connection.py
Original file line number Diff line number Diff line change
@@ -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)
2 changes: 1 addition & 1 deletion connect/models/exception.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from .schema import ServerError
from .server_error import ServerError


class Message(Exception):
Expand Down
26 changes: 26 additions & 0 deletions connect/models/fulfillment.py
Original file line number Diff line number Diff line change
@@ -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)
20 changes: 20 additions & 0 deletions connect/models/hub.py
Original file line number Diff line number Diff line change
@@ -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()
71 changes: 71 additions & 0 deletions connect/models/marketplace.py
Original file line number Diff line number Diff line change
@@ -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)
32 changes: 32 additions & 0 deletions connect/models/parameters.py
Original file line number Diff line number Diff line change
@@ -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)
30 changes: 30 additions & 0 deletions connect/models/product.py
Original file line number Diff line number Diff line change
@@ -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)
Loading