from datetime import date, time from factory import DjangoModelFactory, Sequence, SubFactory, LazyFunction from factory.fuzzy import FuzzyText, FuzzyDate, FuzzyInteger from factory.django import FileField from .models import CollectionType, CollectionMethod, Flaw, ADFGPermit, Collection, \ DatasheetAttachment, CollectionTrap from ..projects.factories import ProjectFactory from ..locations.factories import StudyLocationFactory, StorageLocationFactory from ..processing.factories import ProcessTypeFactory, ReagentFactory class CollectionTypeFactory(DjangoModelFactory): class Meta: model = CollectionType name = Sequence(lambda n: 'collection_type{}'.format(n)) code = Sequence(lambda n: 'ct{}'.format(n)) sort_order = Sequence(lambda n: n) class CollectionMethodFactory(DjangoModelFactory): class Meta: model = CollectionMethod name = Sequence(lambda n: 'collection_method{}'.format(n)) code = Sequence(lambda n: 'cm{}'.format(n)) collection_method_class = FuzzyText(length=50) sort_order = Sequence(lambda n: n) class FlawFactory(DjangoModelFactory): class Meta: model = Flaw name = Sequence(lambda n: 'flaw{}'.format(n)) description = FuzzyText(length=255) sort_order = Sequence(lambda n: n) class ADFGPermitFactory(DjangoModelFactory): class Meta: model = ADFGPermit name = Sequence(lambda n: 'adfg_permit{}'.format(n)) sort_order = Sequence(lambda n: n) class CollectionFactory(DjangoModelFactory): class Meta: model = Collection project = SubFactory(ProjectFactory) study_location = SubFactory(StudyLocationFactory) collection_type = SubFactory(CollectionTypeFactory) collection_method = SubFactory(CollectionMethodFactory) number_of_traps = FuzzyInteger(0) collection_start_date = FuzzyDate(date(2012, 1, 1)) collection_start_time = None collection_end_date = FuzzyDate(date(2015, 1, 1)) collection_end_time = None storage_location = SubFactory(StorageLocationFactory) specimen_state = FuzzyText(length=50) process_type = SubFactory(ProcessTypeFactory) reagent = SubFactory(ReagentFactory) adfg_permit = SubFactory(ADFGPermitFactory) flaw = SubFactory(FlawFactory) class DatasheetAttachmentFactory(DjangoModelFactory): class Meta: model = DatasheetAttachment collection = SubFactory(CollectionFactory) datasheet = FileField() class CollectionTrapFactory(DjangoModelFactory): class Meta: model = CollectionTrap collection = SubFactory(CollectionFactory) number_of_traps = FuzzyInteger(0) date_opened = FuzzyDate(date(2012, 1, 1)) time_opened = LazyFunction(time) date_closed = FuzzyDate(date(2015, 1, 1)) time_closed = LazyFunction(time)