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