from eventsourcing.infrastructure.django.manager import DjangoRecordManager
from eventsourcing.infrastructure.factory import InfrastructureFactory
[docs]class DjangoInfrastructureFactory(InfrastructureFactory):
"""
Infrastructure factory for Django.
"""
record_manager_class = DjangoRecordManager
tracking_record_class = None
[docs] def __init__(self, tracking_record_class=None, *args, **kwargs):
super(DjangoInfrastructureFactory, self).__init__(*args, **kwargs)
self._tracking_record_class = tracking_record_class
@property
def integer_sequenced_record_class(self):
from eventsourcing.infrastructure.django.models import IntegerSequencedRecord
return IntegerSequencedRecord
@property
def timestamp_sequenced_record_class(self):
from eventsourcing.infrastructure.django.models import TimestampSequencedRecord
return TimestampSequencedRecord
@property
def snapshot_record_class(self):
from eventsourcing.infrastructure.django.models import SnapshotRecord
return SnapshotRecord
[docs] def construct_integer_sequenced_record_manager(self, **kwargs):
"""
Constructs Django record manager.
:return: A Django record manager.
:rtype: DjangoRecordManager
"""
tracking_record_class = (
self._tracking_record_class or self.tracking_record_class
)
return super(
DjangoInfrastructureFactory, self
).construct_integer_sequenced_record_manager(
tracking_record_class=tracking_record_class, **kwargs
)