3dd35f5b13f6b9ac8b3467b9fe7b3bd9b57faad0
[htsworkflow.git] / samples / samples_factory.py
1 import datetime
2
3 import factory
4 from factory.django import DjangoModelFactory
5 from factory.fuzzy import FuzzyChoice, FuzzyText, FuzzyInteger
6 from . import models
7
8 class AffiliationFactory(DjangoModelFactory):
9     class Meta:
10         model = models.Affiliation
11
12     name = FuzzyText(prefix='affiliation ')
13     contact = 'contact name'
14     email = factory.LazyAttribute(lambda obj: '%s@example.com' % obj.name)
15
16     @factory.post_generation
17     def users(self, create, extracted, **kwargs):
18         if not create:
19             return
20
21         if extracted:
22             for user in extracted:
23                 self.users.add(user)
24
25 class AntibodyFactory(DjangoModelFactory):
26     class Meta:
27         model = models.Antibody
28         django_get_or_create = ('antigene',)
29
30     antigene = 'antigene'
31     nickname = 'short name'
32     catalog = 'catalog #'
33     antibodies = 'antibody'
34     source = 'source'
35     biology = 'some biological description'
36     notes = 'some notes'
37
38
39 class CelllineFactory(DjangoModelFactory):
40     class Meta:
41         model = models.Cellline
42
43     cellline_name = 'Test'
44     nickname = 'Test'
45     notes = 'Notes'
46
47
48 class ConditionFactory(DjangoModelFactory):
49     class Meta:
50         model = models.Condition
51
52     condition_name = 'condition name'
53     nicname = 'nickname'
54     notes = 'notes'
55
56 class ExperimentTypeFactory(DjangoModelFactory):
57     class Meta:
58         model = models.ExperimentType
59         django_get_or_create = ('name',)
60
61     name = 'experiment type name'
62
63 class HTSUserFactory(DjangoModelFactory):
64     class Meta:
65         model = models.HTSUser
66         django_get_or_create = ('username',)
67
68     username = 'username'
69     email = factory.LazyAttribute(lambda obj: '%s@example.org' % obj.username)
70     is_staff = False
71     is_superuser = False
72
73 #class Tag
74
75 class SpeciesFactory(DjangoModelFactory):
76     class Meta:
77         model = models.Species
78
79     scientific_name = FuzzyText(prefix='scientific name ')
80     common_name = FuzzyText(prefix='common name ')
81
82 class LibraryTypeFactory(DjangoModelFactory):
83     class Meta:
84         model = models.LibraryType
85
86     is_paired_end = FuzzyChoice([True, False])
87     can_multiplex = FuzzyChoice([True, False])
88     name = FuzzyText(prefix='library type ')
89
90 class MultiplexIndexFactory(DjangoModelFactory):
91     class Meta:
92         model = models.MultiplexIndex
93
94     adapter_type = factory.SubFactory(LibraryTypeFactory)
95     multiplex_id = factory.LazyAttribute(lambda o: 'N{}'.format(o.sequence))
96     sequence = FuzzyText(length=5, chars='AGCT')
97
98 class LibraryFactory(DjangoModelFactory):
99     class Meta:
100         model = models.Library
101
102     id = factory.Sequence(lambda n: str(10000 + n))
103     library_name = factory.LazyAttribute(lambda o: 'Library %s' % (o.id))
104     library_species = factory.SubFactory(SpeciesFactory)
105     experiment_type = factory.SubFactory(ExperimentTypeFactory)
106     creation_date = datetime.datetime.now()
107     gel_cut_size = 400
108     made_for = 'scientist unit 2007'
109     made_by = 'microfluidics bot 7321'
110     stopping_point = '2A'
111     undiluted_concentration = '5.01'
112     hidden = False
113     library_type = factory.SubFactory(LibraryTypeFactory)