Skip to content

Commit

Permalink
Split mixin methods from table definitions.
Browse files Browse the repository at this point in the history
  • Loading branch information
keosak committed Oct 24, 2017
1 parent ae1b63b commit 5d5baee
Showing 1 changed file with 25 additions and 19 deletions.
44 changes: 25 additions & 19 deletions flask_fastspring.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,17 +154,7 @@ def request(self, method, uri, params=None):
return data


class OrderMixin:

order_id = Column(Text, primary_key=True)
reference = Column(Text, nullable=False, unique=True)
invoice = Column(Text, nullable=False)
changed = Column(DateTime(timezone=True), nullable=False)
is_complete = Column(Boolean, default=False, nullable=False)

@declared_attr
def data(cls):
return deferred(Column(JSON, nullable=False))
class OrderMethodsMixin:

def synchronize(self):
data = current_app.extensions['fastspring'].fetch_order(self.order_id)
Expand All @@ -188,21 +178,21 @@ def subscription_item(self):
return candidates[0]


class SubscriptionMixin:
class OrderMixin(OrderMethodsMixin):

subscription_id = Column(Text, primary_key=True)
begin = Column(DateTime(timezone=True), nullable=False)
order_id = Column(Text, primary_key=True)
reference = Column(Text, nullable=False, unique=True)
invoice = Column(Text, nullable=False)
changed = Column(DateTime(timezone=True), nullable=False)
next_event = Column(DateTime(timezone=True))
next_charge = Column(DateTime(timezone=True))
end = Column(DateTime(timezone=True))
is_active = Column(Boolean, nullable=False)
state = Column(Text, nullable=False)
is_complete = Column(Boolean, default=False, nullable=False)

@declared_attr
def data(cls):
return deferred(Column(JSON, nullable=False))


class SubscriptionMethodsMixin:

def synchronize(self):
data = current_app.extensions['fastspring'].fetch_subscription(self.subscription_id) # noqa
changed = milliseconds_to_datetime(data['changed'])
Expand All @@ -223,6 +213,22 @@ def cancel(self, immediately=True):
self.subscription_id, immediately=immediately)


class SubscriptionMixin(SubscriptionMethodsMixin):

subscription_id = Column(Text, primary_key=True)
begin = Column(DateTime(timezone=True), nullable=False)
changed = Column(DateTime(timezone=True), nullable=False)
next_event = Column(DateTime(timezone=True))
next_charge = Column(DateTime(timezone=True))
end = Column(DateTime(timezone=True))
is_active = Column(Boolean, nullable=False)
state = Column(Text, nullable=False)

@declared_attr
def data(cls):
return deferred(Column(JSON, nullable=False))


class APIError(Exception):

def __init__(self, response):
Expand Down

0 comments on commit 5d5baee

Please sign in to comment.