convert to unicode_literals
[htsworkflow.git] / inventory / inventory_factory.py
1 from __future__ import absolute_import, print_function, unicode_literals
2
3 import datetime
4
5 import factory
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
10 from . import models
11 #from bcmagic.factory import PrinterFactory
12
13 class VendorFactory(DjangoModelFactory):
14     class Meta:
15         model = models.Vendor
16
17     name = FuzzyText(prefix='vendor name ')
18     url = FuzzyText(prefix='https://vendor.example.org/')
19
20
21 class LocationFactory(DjangoModelFactory):
22     class Meta:
23         model = models.Location
24
25     name = FuzzyText(prefix='location name ')
26     location_description = FuzzyText(prefix='location ')
27     notes = FuzzyText(prefix='note ')
28
29
30 class ItemInfoFactory(DjangoModelFactory):
31     class Meta:
32         model = models.ItemInfo
33
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)
39
40     vendor = factory.SubFactory(VendorFactory)
41     purchase_date = datetime.datetime.now()
42     warranty_months = 30
43
44
45 class ItemTypeFactory(DjangoModelFactory):
46     class Meta:
47         model = models.ItemType
48
49     name = FuzzyText(prefix='item type name ')
50     description = FuzzyText(prefix='item type description ')
51
52
53 class ItemStatusFactory(DjangoModelFactory):
54     class Meta:
55         model = models.ItemStatus
56
57     name = FuzzyText(prefix='item status ')
58     notes = FuzzyText(prefix='item status description ')
59
60
61 class ItemFactory(DjangoModelFactory):
62     class Meta:
63         model = models.Item
64
65     barcode_id = FuzzyText(length=12, chars='0123456789')
66     force_use_uuid = True
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 ')
74
75
76 class PrinterTemplateFactory(DjangoModelFactory):
77     class Meta:
78         model = models.PrinterTemplate
79
80     item_type = factory.SubFactory(ItemTypeFactory)
81     #printer = factory.SubFactory(PrinterFactory)
82     default = True
83     template = 'template'
84
85
86 class LongTermStorageFactory(DjangoModelFactory):
87     class Meta:
88         model = models.LongTermStorage
89
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
95
96     @factory.post_generation
97     def libraries(self, create, extracted, **kwargs):
98         if extracted:
99             for e in extracted:
100                 self.libraries.add(e)
101
102     @factory.post_generation
103     def storage_devices(self, create, extracted, **kwargs):
104         if extracted:
105             for e in extracted:
106                 self.storage_devices.add(e)
107
108 class ReagentBaseFactory(DjangoModelFactory):
109     class Meta:
110         model = models.ReagentBase
111
112     #reagent = many to many Item
113     creation_date = datetime.datetime.now()
114     modification_date = creation_date
115
116
117 class ReagentFlowcellFactory(DjangoModelFactory):
118     class Meta:
119         model = models.ReagentFlowcell
120
121     flowcell = factory.SubFactory(FlowCellFactory)
122
123 class ReagentLibraryFactory(DjangoModelFactory):
124     class Meta:
125         model = models.ReagentLibrary
126
127     library = factory.SubFactory(LibraryFactory)