Completed
Push — master ( 4f7ee6...646424 )
by Paolo
08:30 queued 06:53
created

uid.migrations.0001_initial   A

Complexity

Total Complexity 0

Size/Duplication

Total Lines 333
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 0
eloc 266
dl 0
loc 333
rs 10
c 0
b 0
f 0
1
# -*- coding: utf-8 -*-
2
# Generated by Django 1.11.24 on 2019-10-30 11:18
3
from __future__ import unicode_literals
4
5
import common.fields
6
import common.storage
7
from django.conf import settings
8
from django.db import migrations, models
9
import django.db.models.deletion
10
import uid.mixins
11
12
13
class Migration(migrations.Migration):
14
15
    initial = True
16
17
    dependencies = [
18
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
19
    ]
20
21
    operations = [
22
        migrations.CreateModel(
23
            name='Animal',
24
            fields=[
25
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
26
                ('name', models.CharField(max_length=255)),
27
                ('status', models.SmallIntegerField(choices=[(1, 'Loaded'), (2, 'Submitted'), (4, 'Need Revision'), (5, 'Ready'), (6, 'Completed')], default=1, help_text='example: Submitted')),
28
                ('last_changed', models.DateTimeField(auto_now_add=True, null=True)),
29
                ('last_submitted', models.DateTimeField(blank=True, null=True)),
30
                ('alternative_id', models.CharField(blank=True, max_length=255, null=True)),
31
                ('description', models.CharField(blank=True, max_length=255, null=True)),
32
                ('material', models.CharField(default='Organism', editable=False, max_length=255)),
33
                ('birth_date', models.DateField(blank=True, help_text='example: 2019-04-01', null=True)),
34
                ('birth_location', models.CharField(blank=True, max_length=255, null=True)),
35
                ('birth_location_latitude', models.FloatField(blank=True, null=True)),
36
                ('birth_location_longitude', models.FloatField(blank=True, null=True)),
37
                ('birth_location_accuracy', models.SmallIntegerField(choices=[(0, 'missing geographic information'), (1, 'country level'), (2, 'region level'), (3, 'precise coordinates'), (4, 'unknown accuracy level')], default=0, help_text='example: unknown accuracy level, country level')),
38
            ],
39
            bases=(uid.mixins.BioSampleMixin, uid.mixins.BaseMixin, models.Model),
40
        ),
41
        migrations.CreateModel(
42
            name='DictBreed',
43
            fields=[
44
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
45
                ('confidence', models.SmallIntegerField(choices=[(0, 'High'), (1, 'Good'), (2, 'Medium'), (3, 'Low'), (4, 'Manually Curated')], help_text='example: Manually Curated', null=True)),
46
                ('supplied_breed', models.CharField(max_length=255)),
47
                ('label', models.CharField(max_length=255, null=True, verbose_name='mapped breed')),
48
                ('term', models.CharField(help_text='Example: LBO_0000347', max_length=255, null=True, verbose_name='mapped breed term')),
49
            ],
50
            options={
51
                'verbose_name': 'breed',
52
            },
53
            bases=(uid.mixins.BaseMixin, models.Model),
54
        ),
55
        migrations.CreateModel(
56
            name='DictCountry',
57
            fields=[
58
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
59
                ('label', models.CharField(help_text='Example: submitter', max_length=255)),
60
                ('term', models.CharField(help_text='Example: EFO_0001741', max_length=255, null=True)),
61
                ('confidence', models.SmallIntegerField(choices=[(0, 'High'), (1, 'Good'), (2, 'Medium'), (3, 'Low'), (4, 'Manually Curated')], help_text='example: Manually Curated', null=True)),
62
            ],
63
            options={
64
                'verbose_name': 'country',
65
                'verbose_name_plural': 'countries',
66
                'ordering': ['label'],
67
            },
68
            bases=(uid.mixins.BaseMixin, models.Model),
69
        ),
70
        migrations.CreateModel(
71
            name='DictDevelStage',
72
            fields=[
73
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
74
                ('label', models.CharField(help_text='Example: submitter', max_length=255)),
75
                ('term', models.CharField(help_text='Example: EFO_0001741', max_length=255, null=True)),
76
                ('confidence', models.SmallIntegerField(choices=[(0, 'High'), (1, 'Good'), (2, 'Medium'), (3, 'Low'), (4, 'Manually Curated')], help_text='example: Manually Curated', null=True)),
77
            ],
78
            options={
79
                'verbose_name': 'developmental stage',
80
            },
81
            bases=(uid.mixins.BaseMixin, models.Model),
82
        ),
83
        migrations.CreateModel(
84
            name='DictPhysioStage',
85
            fields=[
86
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
87
                ('label', models.CharField(help_text='Example: submitter', max_length=255)),
88
                ('term', models.CharField(help_text='Example: EFO_0001741', max_length=255, null=True)),
89
                ('confidence', models.SmallIntegerField(choices=[(0, 'High'), (1, 'Good'), (2, 'Medium'), (3, 'Low'), (4, 'Manually Curated')], help_text='example: Manually Curated', null=True)),
90
            ],
91
            options={
92
                'verbose_name': 'physiological stage',
93
            },
94
            bases=(uid.mixins.BaseMixin, models.Model),
95
        ),
96
        migrations.CreateModel(
97
            name='DictRole',
98
            fields=[
99
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
100
                ('label', models.CharField(help_text='Example: submitter', max_length=255)),
101
                ('term', models.CharField(help_text='Example: EFO_0001741', max_length=255, null=True)),
102
            ],
103
            options={
104
                'verbose_name': 'role',
105
            },
106
            bases=(uid.mixins.BaseMixin, models.Model),
107
        ),
108
        migrations.CreateModel(
109
            name='DictSex',
110
            fields=[
111
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
112
                ('label', models.CharField(help_text='Example: submitter', max_length=255)),
113
                ('term', models.CharField(help_text='Example: EFO_0001741', max_length=255, null=True)),
114
            ],
115
            options={
116
                'verbose_name': 'sex',
117
                'verbose_name_plural': 'sex',
118
            },
119
            bases=(uid.mixins.BaseMixin, models.Model),
120
        ),
121
        migrations.CreateModel(
122
            name='DictSpecie',
123
            fields=[
124
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
125
                ('label', models.CharField(help_text='Example: submitter', max_length=255)),
126
                ('term', models.CharField(help_text='Example: EFO_0001741', max_length=255, null=True)),
127
                ('confidence', models.SmallIntegerField(choices=[(0, 'High'), (1, 'Good'), (2, 'Medium'), (3, 'Low'), (4, 'Manually Curated')], help_text='example: Manually Curated', null=True)),
128
                ('general_breed_label', models.CharField(blank=True, help_text='Example: cattle breed', max_length=255, null=True, verbose_name='general breed label')),
129
                ('general_breed_term', models.CharField(blank=True, help_text='Example: LBO_0000001', max_length=255, null=True, verbose_name='general breed term')),
130
            ],
131
            options={
132
                'verbose_name': 'specie',
133
            },
134
            bases=(uid.mixins.BaseMixin, models.Model),
135
        ),
136
        migrations.CreateModel(
137
            name='DictUberon',
138
            fields=[
139
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
140
                ('label', models.CharField(help_text='Example: submitter', max_length=255)),
141
                ('term', models.CharField(help_text='Example: EFO_0001741', max_length=255, null=True)),
142
                ('confidence', models.SmallIntegerField(choices=[(0, 'High'), (1, 'Good'), (2, 'Medium'), (3, 'Low'), (4, 'Manually Curated')], help_text='example: Manually Curated', null=True)),
143
            ],
144
            options={
145
                'verbose_name': 'organism part',
146
            },
147
            bases=(uid.mixins.BaseMixin, models.Model),
148
        ),
149
        migrations.CreateModel(
150
            name='Ontology',
151
            fields=[
152
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
153
                ('library_name', models.CharField(help_text='Each value must be unique', max_length=255, unique=True)),
154
                ('library_uri', models.URLField(blank=True, help_text='Each value must be unique and with a valid URL', max_length=500, null=True)),
155
                ('comment', models.CharField(blank=True, max_length=255, null=True)),
156
            ],
157
            options={
158
                'verbose_name_plural': 'ontologies',
159
            },
160
            bases=(uid.mixins.BaseMixin, models.Model),
161
        ),
162
        migrations.CreateModel(
163
            name='Organization',
164
            fields=[
165
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
166
                ('name', models.CharField(max_length=255)),
167
                ('address', models.CharField(blank=True, help_text='One line, comma separated', max_length=255, null=True)),
168
                ('URI', models.URLField(blank=True, help_text='Web site', max_length=500, null=True)),
169
                ('country', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='uid.DictCountry')),
170
                ('role', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='uid.DictRole')),
171
            ],
172
            options={
173
                'ordering': ['name', 'country'],
174
            },
175
            bases=(uid.mixins.BaseMixin, models.Model),
176
        ),
177
        migrations.CreateModel(
178
            name='Person',
179
            fields=[
180
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
181
                ('initials', models.CharField(blank=True, max_length=255, null=True)),
182
                ('affiliation', models.ForeignKey(help_text='The institution you belong to', null=True, on_delete=django.db.models.deletion.PROTECT, to='uid.Organization')),
183
                ('role', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='uid.DictRole')),
184
                ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='person', to=settings.AUTH_USER_MODEL)),
185
            ],
186
            bases=(uid.mixins.BaseMixin, models.Model),
187
        ),
188
        migrations.CreateModel(
189
            name='Publication',
190
            fields=[
191
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
192
                ('doi', models.CharField(help_text='Valid Digital Object Identifier', max_length=255)),
193
            ],
194
            bases=(uid.mixins.BaseMixin, models.Model),
195
        ),
196
        migrations.CreateModel(
197
            name='Sample',
198
            fields=[
199
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
200
                ('name', models.CharField(max_length=255)),
201
                ('status', models.SmallIntegerField(choices=[(1, 'Loaded'), (2, 'Submitted'), (4, 'Need Revision'), (5, 'Ready'), (6, 'Completed')], default=1, help_text='example: Submitted')),
202
                ('last_changed', models.DateTimeField(auto_now_add=True, null=True)),
203
                ('last_submitted', models.DateTimeField(blank=True, null=True)),
204
                ('alternative_id', models.CharField(blank=True, max_length=255, null=True)),
205
                ('description', models.CharField(blank=True, max_length=255, null=True)),
206
                ('material', models.CharField(default='Specimen from Organism', editable=False, max_length=255)),
207
                ('protocol', models.CharField(blank=True, max_length=255, null=True)),
208
                ('collection_date', models.DateField(blank=True, help_text='example: 2019-04-01', null=True)),
209
                ('collection_place_latitude', models.FloatField(blank=True, null=True)),
210
                ('collection_place_longitude', models.FloatField(blank=True, null=True)),
211
                ('collection_place', models.CharField(blank=True, max_length=255, null=True)),
212
                ('collection_place_accuracy', models.SmallIntegerField(choices=[(0, 'missing geographic information'), (1, 'country level'), (2, 'region level'), (3, 'precise coordinates'), (4, 'unknown accuracy level')], default=0, help_text='example: unknown accuracy level, country level')),
213
                ('animal_age_at_collection', models.IntegerField(blank=True, null=True)),
214
                ('animal_age_at_collection_units', models.SmallIntegerField(blank=True, choices=[(0, 'minutes'), (1, 'hours'), (2, 'days'), (3, 'weeks'), (4, 'months'), (5, 'years')], help_text='example: years', null=True)),
215
                ('availability', models.CharField(blank=True, help_text='Either a link to a web page giving information on who to contact or an e-mail address to contact about availability. If neither available, please use the value no longer available', max_length=255, null=True)),
216
                ('storage', models.SmallIntegerField(blank=True, choices=[(0, 'ambient temperature'), (1, 'cut slide'), (2, 'frozen, -80 degrees Celsius freezer'), (3, 'frozen, -20 degrees Celsius freezer'), (4, 'frozen, liquid nitrogen'), (5, 'frozen, vapor phase'), (6, 'paraffin block'), (7, 'RNAlater, frozen -20 degrees Celsius'), (8, 'TRIzol, frozen'), (9, 'paraffin block at ambient temperatures (+15 to +30 degrees Celsius)'), (10, 'freeze dried'), (11, 'frozen, -40 degrees Celsius freezer')], help_text='How the sample was stored', null=True)),
217
                ('storage_processing', models.SmallIntegerField(blank=True, choices=[(0, 'cryopreservation in liquid nitrogen (dead tissue)'), (1, 'cryopreservation in dry ice (dead tissue)'), (2, 'cryopreservation of live cells in liquid nitrogen'), (3, 'cryopreservation, other'), (4, 'formalin fixed, unbuffered'), (5, 'formalin fixed, buffered'), (6, 'formalin fixed and paraffin embedded'), (7, 'freeze dried (vaiable for reproduction)'), (8, 'freeze dried')], help_text='How the sample was prepared for storage', null=True)),
218
                ('preparation_interval', models.IntegerField(blank=True, null=True)),
219
                ('preparation_interval_units', models.SmallIntegerField(blank=True, choices=[(0, 'minutes'), (1, 'hours'), (2, 'days'), (3, 'weeks'), (4, 'months'), (5, 'years')], help_text='example: years', null=True)),
220
                ('animal', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='uid.Animal')),
221
                ('developmental_stage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='uid.DictDevelStage')),
222
                ('organism_part', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='uid.DictUberon')),
223
                ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)),
224
                ('physiological_stage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='uid.DictPhysioStage')),
225
                ('publication', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='uid.Publication')),
226
            ],
227
            bases=(uid.mixins.BioSampleMixin, uid.mixins.BaseMixin, models.Model),
228
        ),
229
        migrations.CreateModel(
230
            name='Submission',
231
            fields=[
232
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
233
                ('title', models.CharField(help_text='Example: Roslin Sheep Atlas', max_length=255, verbose_name='Submission title')),
234
                ('project', models.CharField(default='IMAGE', editable=False, max_length=25)),
235
                ('description', models.CharField(help_text='Example: The Roslin Institute Sheep Gene Expression Atlas Project', max_length=255)),
236
                ('gene_bank_name', models.CharField(help_text='example: CryoWeb', max_length=255)),
237
                ('datasource_type', models.SmallIntegerField(choices=[(0, 'CryoWeb'), (1, 'Template'), (2, 'CRB-Anim')], help_text='example: CryoWeb', verbose_name='Data source type')),
238
                ('datasource_version', models.CharField(help_text='examples: "2018-04-27", "version 1.5"', max_length=255, verbose_name='Data source version')),
239
                ('uploaded_file', common.fields.ProtectedFileField(storage=common.storage.ProtectedFileSystemStorage(), upload_to='data_source/')),
240
                ('created_at', models.DateTimeField(auto_now_add=True)),
241
                ('updated_at', models.DateTimeField(auto_now=True)),
242
                ('status', models.SmallIntegerField(choices=[(0, 'Waiting'), (1, 'Loaded'), (2, 'Submitted'), (3, 'Error'), (4, 'Need Revision'), (5, 'Ready'), (6, 'Completed')], default=0, help_text='example: Waiting')),
243
                ('message', models.TextField(blank=True, null=True)),
244
                ('gene_bank_country', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='uid.DictCountry')),
245
                ('organization', models.ForeignKey(help_text='Who owns the data', on_delete=django.db.models.deletion.PROTECT, to='uid.Organization')),
246
                ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
247
            ],
248
            bases=(uid.mixins.BaseMixin, models.Model),
249
        ),
250
        migrations.AlterUniqueTogether(
251
            name='dictuberon',
252
            unique_together=set([('label', 'term')]),
253
        ),
254
        migrations.AlterUniqueTogether(
255
            name='dictspecie',
256
            unique_together=set([('label', 'term')]),
257
        ),
258
        migrations.AlterUniqueTogether(
259
            name='dictsex',
260
            unique_together=set([('label', 'term')]),
261
        ),
262
        migrations.AlterUniqueTogether(
263
            name='dictrole',
264
            unique_together=set([('label', 'term')]),
265
        ),
266
        migrations.AlterUniqueTogether(
267
            name='dictphysiostage',
268
            unique_together=set([('label', 'term')]),
269
        ),
270
        migrations.AlterUniqueTogether(
271
            name='dictdevelstage',
272
            unique_together=set([('label', 'term')]),
273
        ),
274
        migrations.AlterUniqueTogether(
275
            name='dictcountry',
276
            unique_together=set([('label', 'term')]),
277
        ),
278
        migrations.AddField(
279
            model_name='dictbreed',
280
            name='country',
281
            field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='uid.DictCountry'),
282
        ),
283
        migrations.AddField(
284
            model_name='dictbreed',
285
            name='specie',
286
            field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='uid.DictSpecie'),
287
        ),
288
        migrations.AddField(
289
            model_name='animal',
290
            name='breed',
291
            field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='uid.DictBreed'),
292
        ),
293
        migrations.AddField(
294
            model_name='animal',
295
            name='father',
296
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='father_of', to='uid.Animal'),
297
        ),
298
        migrations.AddField(
299
            model_name='animal',
300
            name='mother',
301
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='mother_of', to='uid.Animal'),
302
        ),
303
        migrations.AddField(
304
            model_name='animal',
305
            name='owner',
306
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL),
307
        ),
308
        migrations.AddField(
309
            model_name='animal',
310
            name='publication',
311
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='uid.Publication'),
312
        ),
313
        migrations.AddField(
314
            model_name='animal',
315
            name='sex',
316
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='uid.DictSex'),
317
        ),
318
        migrations.AlterUniqueTogether(
319
            name='submission',
320
            unique_together=set([('gene_bank_name', 'gene_bank_country', 'datasource_type', 'datasource_version', 'owner')]),
321
        ),
322
        migrations.AlterUniqueTogether(
323
            name='sample',
324
            unique_together=set([('name', 'animal')]),
325
        ),
326
        migrations.AlterUniqueTogether(
327
            name='dictbreed',
328
            unique_together=set([('supplied_breed', 'specie', 'country')]),
329
        ),
330
        migrations.AlterUniqueTogether(
331
            name='animal',
332
            unique_together=set([('name', 'breed')]),
333
        ),
334
    ]
335