1 from __future__ import absolute_import, print_function
6 from factory.django import DjangoModelFactory
7 from factory.fuzzy import FuzzyText, FuzzyInteger
8 from experiments.experiments_factory import FlowCellFactory
9 from samples.samples_factory import LibraryFactory
11 #from bcmagic.factory import PrinterFactory
13 class VendorFactory(DjangoModelFactory):
17 name = FuzzyText(prefix='vendor name ')
18 url = FuzzyText(prefix='https://vendor.example.org/')
21 class LocationFactory(DjangoModelFactory):
23 model = models.Location
25 name = FuzzyText(prefix='location name ')
26 location_description = FuzzyText(prefix='location ')
27 notes = FuzzyText(prefix='note ')
30 class ItemInfoFactory(DjangoModelFactory):
32 model = models.ItemInfo
34 model_id = FuzzyText(prefix='model ')
35 part_number = FuzzyText(prefix='part ')
36 lot_number = FuzzyText(prefix='lot ')
37 url = factory.LazyAttribute(lambda o: 'http://example.com/{}'.format(o.model_id))
38 qty_purchased = FuzzyInteger(1, 50)
40 vendor = factory.SubFactory(VendorFactory)
41 purchase_date = datetime.datetime.now()
45 class ItemTypeFactory(DjangoModelFactory):
47 model = models.ItemType
49 name = FuzzyText(prefix='item type name ')
50 description = FuzzyText(prefix='item type description ')
53 class ItemStatusFactory(DjangoModelFactory):
55 model = models.ItemStatus
57 name = FuzzyText(prefix='item status ')
58 notes = FuzzyText(prefix='item status description ')
61 class ItemFactory(DjangoModelFactory):
65 barcode_id = FuzzyText(length=12, chars='0123456789')
67 item_type = factory.SubFactory(ItemTypeFactory)
68 item_info = factory.SubFactory(ItemInfoFactory)
69 location = factory.SubFactory(LocationFactory)
70 status = factory.SubFactory(ItemStatusFactory)
71 creation_date = datetime.datetime.now()
72 modified_date = creation_date
73 notes = FuzzyText(prefix='Item notes ')
76 class PrinterTemplateFactory(DjangoModelFactory):
78 model = models.PrinterTemplate
80 item_type = factory.SubFactory(ItemTypeFactory)
81 #printer = factory.SubFactory(PrinterFactory)
86 class LongTermStorageFactory(DjangoModelFactory):
88 model = models.LongTermStorage
90 flowcell = factory.SubFactory(FlowCellFactory)
91 # libraries = many to many Library
92 # storage_devices = many to many Item
93 creation_date = datetime.datetime.now()
94 modified_date = creation_date
96 @factory.post_generation
97 def libraries(self, create, extracted, **kwargs):
100 self.libraries.add(e)
102 @factory.post_generation
103 def storage_devices(self, create, extracted, **kwargs):
106 self.storage_devices.add(e)
108 class ReagentBaseFactory(DjangoModelFactory):
110 model = models.ReagentBase
112 #reagent = many to many Item
113 creation_date = datetime.datetime.now()
114 modification_date = creation_date
117 class ReagentFlowcellFactory(DjangoModelFactory):
119 model = models.ReagentFlowcell
121 flowcell = factory.SubFactory(FlowCellFactory)
123 class ReagentLibraryFactory(DjangoModelFactory):
125 model = models.ReagentLibrary
127 library = factory.SubFactory(LibraryFactory)