cryoweb.models.VVessels.__str__()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 2
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 2
dl 0
loc 2
rs 10
c 0
b 0
f 0
cc 1
nop 1
1
# This is an auto-generated Django model module.
2
# You'll have to do the following manually to clean this up:
3
#   * Rearrange models' order
4
#   * Make sure each model has one field with primary_key=True
5
#   * Make sure each ForeignKey has `on_delete` set to the desired behavior.
6
#   * Remove `managed = False` lines if you wish to allow Django to create,
7
#     modify, and delete the table
8
# Feel free to rename the models, but don't rename db_table values or field
9
# names.
10
from __future__ import unicode_literals
11
12
import logging
13
14
from django.db import connections, models
15
16
# Get an instance of a logger
17
logger = logging.getLogger(__name__)
18
19
20
# Adding a classmethod to Category if you want to enable truncate
21
# https://books.agiliq.com/projects/django-orm-cookbook/en/latest/truncate.html
22
class BaseMixin():
23
    "Base class for cryoweb tables"
24
25
    @classmethod
26
    def truncate(cls):
27
        """Truncate table"""
28
29
        # Django.db.connections is a dictionary-like object that allows you
30
        # to retrieve a specific connection using its alias
31
        with connections["cryoweb"].cursor() as cursor:
32
            statement = "TRUNCATE TABLE {0} RESTART IDENTITY CASCADE".format(
33
                cls._meta.db_table)
34
            logger.debug(statement)
35
            cursor.execute(statement)
36
37
38
class Animal(BaseMixin, models.Model):
39
    db_animal = models.IntegerField(unique=True, blank=True, null=True)
40
    db_sire = models.IntegerField(blank=True, null=True)
41
    db_dam = models.IntegerField(blank=True, null=True)
42
    db_sex = models.IntegerField(blank=True, null=True)
43
    db_breed = models.IntegerField(blank=True, null=True)
44
    db_species = models.IntegerField(blank=True, null=True)
45
    birth_dt = models.DateField(blank=True, null=True)
46
    birth_year = models.TextField(blank=True, null=True)
47
    latitude = models.FloatField(blank=True, null=True)
48
    longitude = models.FloatField(blank=True, null=True)
49
    image_id = models.IntegerField(blank=True, null=True)
50
    db_org = models.IntegerField(blank=True, null=True)
51
    la_rep = models.TextField(blank=True, null=True)
52
    la_rep_dt = models.DateField(blank=True, null=True)
53
    last_change_dt = models.DateTimeField(blank=True, null=True)
54
    last_change_user = models.TextField(blank=True, null=True)
55
    dirty = models.NullBooleanField()
56
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
57
    guid = models.IntegerField(primary_key=True)
58
    owner = models.TextField(blank=True, null=True)
59
    version = models.IntegerField(blank=True, null=True)
60
    synch = models.NullBooleanField()
61
    db_hybrid = models.IntegerField(blank=True, null=True)
62
    comment = models.TextField(blank=True, null=True)
63
    file_id = models.IntegerField(blank=True, null=True)
64
65
    class Meta:
66
        managed = False
67
        db_table = 'animal'
68
69
70 View Code Duplication
class ArConstraints(BaseMixin, models.Model):
71
    cons_id = models.IntegerField(unique=True, blank=True, null=True)
72
    cons_name = models.TextField(blank=True, null=True)
73
    cons_type = models.TextField(blank=True, null=True)
74
    cons_desc = models.TextField(blank=True, null=True)
75
    last_change_dt = models.DateTimeField(blank=True, null=True)
76
    last_change_user = models.TextField(blank=True, null=True)
77
    dirty = models.NullBooleanField()
78
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
79
    guid = models.IntegerField(primary_key=True)
80
    owner = models.TextField(blank=True, null=True)
81
    version = models.IntegerField(blank=True, null=True)
82
    synch = models.NullBooleanField()
83
84
    class Meta:
85
        managed = False
86
        db_table = 'ar_constraints'
87
        unique_together = (('cons_name', 'cons_type'),)
88
89
90 View Code Duplication
class ArDbtdescriptors(BaseMixin, models.Model):
91
    descriptor_id = models.IntegerField(unique=True, blank=True, null=True)
92
    descriptor_name = models.TextField(blank=True, null=True)
93
    descriptor_value = models.TextField(blank=True, null=True)
94
    descriptor_desc = models.TextField(blank=True, null=True)
95
    last_change_dt = models.DateTimeField(blank=True, null=True)
96
    last_change_user = models.TextField(blank=True, null=True)
97
    dirty = models.NullBooleanField()
98
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
99
    guid = models.IntegerField(primary_key=True)
100
    owner = models.TextField(blank=True, null=True)
101
    version = models.IntegerField(blank=True, null=True)
102
    synch = models.NullBooleanField()
103
104
    class Meta:
105
        managed = False
106
        db_table = 'ar_dbtdescriptors'
107
        unique_together = (('descriptor_name', 'descriptor_value'),)
108
109
110 View Code Duplication
class ArDbtpolicies(BaseMixin, models.Model):
111
    dbtpolicy_id = models.IntegerField(unique=True, blank=True, null=True)
112
    action_id = models.IntegerField(blank=True, null=True)
113
    table_id = models.IntegerField(blank=True, null=True)
114
    descriptor_id = models.IntegerField(blank=True, null=True)
115
    last_change_dt = models.DateTimeField(blank=True, null=True)
116
    last_change_user = models.TextField(blank=True, null=True)
117
    dirty = models.NullBooleanField()
118
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
119
    guid = models.IntegerField(primary_key=True)
120
    owner = models.TextField(blank=True, null=True)
121
    version = models.IntegerField(blank=True, null=True)
122
    synch = models.NullBooleanField()
123
124
    class Meta:
125
        managed = False
126
        db_table = 'ar_dbtpolicies'
127
        unique_together = (('action_id', 'table_id', 'descriptor_id'),)
128
129
130 View Code Duplication
class ArDbttables(BaseMixin, models.Model):
131
    table_id = models.IntegerField(unique=True, blank=True, null=True)
132
    table_name = models.TextField(blank=True, null=True)
133
    table_columns = models.TextField(blank=True, null=True)
134
    table_desc = models.TextField(blank=True, null=True)
135
    last_change_dt = models.DateTimeField(blank=True, null=True)
136
    last_change_user = models.TextField(blank=True, null=True)
137
    dirty = models.NullBooleanField()
138
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
139
    guid = models.IntegerField(primary_key=True)
140
    owner = models.TextField(blank=True, null=True)
141
    version = models.IntegerField(blank=True, null=True)
142
    synch = models.NullBooleanField()
143
144
    class Meta:
145
        managed = False
146
        db_table = 'ar_dbttables'
147
        unique_together = (('table_name', 'table_columns'),)
148
149
150 View Code Duplication
class ArRoleConstraints(BaseMixin, models.Model):
151
    cons_id = models.IntegerField(blank=True, null=True)
152
    first_role_id = models.IntegerField(blank=True, null=True)
153
    second_role_id = models.IntegerField(blank=True, null=True)
154
    last_change_dt = models.DateTimeField(blank=True, null=True)
155
    last_change_user = models.TextField(blank=True, null=True)
156
    dirty = models.NullBooleanField()
157
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
158
    guid = models.IntegerField(primary_key=True)
159
    owner = models.TextField(blank=True, null=True)
160
    version = models.IntegerField(blank=True, null=True)
161
    synch = models.NullBooleanField()
162
163
    class Meta:
164
        managed = False
165
        db_table = 'ar_role_constraints'
166
        unique_together = (('cons_id', 'first_role_id', 'second_role_id'),)
167
168
169 View Code Duplication
class ArRoleDbtpolicies(BaseMixin, models.Model):
170
    role_id = models.IntegerField(blank=True, null=True)
171
    dbtpolicy_id = models.IntegerField(blank=True, null=True)
172
    last_change_dt = models.DateTimeField(blank=True, null=True)
173
    last_change_user = models.TextField(blank=True, null=True)
174
    dirty = models.NullBooleanField()
175
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
176
    guid = models.IntegerField(primary_key=True)
177
    owner = models.TextField(blank=True, null=True)
178
    version = models.IntegerField(blank=True, null=True)
179
    synch = models.NullBooleanField()
180
181
    class Meta:
182
        managed = False
183
        db_table = 'ar_role_dbtpolicies'
184
        unique_together = (('role_id', 'dbtpolicy_id'),)
185
186
187 View Code Duplication
class ArRoleStpolicies(BaseMixin, models.Model):
188
    role_id = models.IntegerField(blank=True, null=True)
189
    stpolicy_id = models.IntegerField(blank=True, null=True)
190
    last_change_dt = models.DateTimeField(blank=True, null=True)
191
    last_change_user = models.TextField(blank=True, null=True)
192
    dirty = models.NullBooleanField()
193
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
194
    guid = models.IntegerField(primary_key=True)
195
    owner = models.TextField(blank=True, null=True)
196
    version = models.IntegerField(blank=True, null=True)
197
    synch = models.NullBooleanField()
198
199
    class Meta:
200
        managed = False
201
        db_table = 'ar_role_stpolicies'
202
        unique_together = (('role_id', 'stpolicy_id'),)
203
204
205
class ArRoles(BaseMixin, models.Model):
206
    role_id = models.IntegerField(unique=True, blank=True, null=True)
207
    role_name = models.TextField(blank=True, null=True)
208
    role_long_name = models.TextField(blank=True, null=True)
209
    role_type = models.TextField(blank=True, null=True)
210
    role_subset = models.TextField(blank=True, null=True)
211
    role_descr = models.TextField(blank=True, null=True)
212
    last_change_dt = models.DateTimeField(blank=True, null=True)
213
    last_change_user = models.TextField(blank=True, null=True)
214
    dirty = models.NullBooleanField()
215
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
216
    guid = models.IntegerField(primary_key=True)
217
    owner = models.TextField(blank=True, null=True)
218
    version = models.IntegerField(blank=True, null=True)
219
    synch = models.NullBooleanField()
220
221
    class Meta:
222
        managed = False
223
        db_table = 'ar_roles'
224
        unique_together = (('role_name', 'role_type'),)
225
226
227 View Code Duplication
class ArStpolicies(BaseMixin, models.Model):
228
    stpolicy_id = models.IntegerField(unique=True, blank=True, null=True)
229
    stpolicy_name = models.TextField(blank=True, null=True)
230
    stpolicy_type = models.TextField(blank=True, null=True)
231
    stpolicy_desc = models.TextField(blank=True, null=True)
232
    last_change_dt = models.DateTimeField(blank=True, null=True)
233
    last_change_user = models.TextField(blank=True, null=True)
234
    dirty = models.NullBooleanField()
235
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
236
    guid = models.IntegerField(primary_key=True)
237
    owner = models.TextField(blank=True, null=True)
238
    version = models.IntegerField(blank=True, null=True)
239
    synch = models.NullBooleanField()
240
241
    class Meta:
242
        managed = False
243
        db_table = 'ar_stpolicies'
244
        unique_together = (('stpolicy_name', 'stpolicy_type'),)
245
246
247 View Code Duplication
class ArUserRoles(BaseMixin, models.Model):
248
    user_id = models.IntegerField(blank=True, null=True)
249
    role_id = models.IntegerField(blank=True, null=True)
250
    last_change_dt = models.DateTimeField(blank=True, null=True)
251
    last_change_user = models.TextField(blank=True, null=True)
252
    dirty = models.NullBooleanField()
253
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
254
    guid = models.IntegerField(primary_key=True)
255
    owner = models.TextField(blank=True, null=True)
256
    version = models.IntegerField(blank=True, null=True)
257
    synch = models.NullBooleanField()
258
259
    class Meta:
260
        managed = False
261
        db_table = 'ar_user_roles'
262
        unique_together = (('user_id', 'role_id'),)
263
264
265
class ArUsers(BaseMixin, models.Model):
266
    user_id = models.IntegerField(unique=True, blank=True, null=True)
267
    user_login = models.TextField(unique=True, blank=True, null=True)
268
    user_password = models.TextField(blank=True, null=True)
269
    user_language_id = models.IntegerField(blank=True, null=True)
270
    user_marker = models.TextField(blank=True, null=True)
271
    user_disabled = models.NullBooleanField()
272
    user_status = models.NullBooleanField()
273
    user_last_login = models.DateTimeField(blank=True, null=True)
274
    user_last_activ_time = models.TimeField(blank=True, null=True)
275
    user_session_id = models.TextField(blank=True, null=True)
276
    last_change_dt = models.DateTimeField(blank=True, null=True)
277
    last_change_user = models.TextField(blank=True, null=True)
278
    dirty = models.NullBooleanField()
279
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
280
    guid = models.IntegerField(primary_key=True)
281
    owner = models.TextField(blank=True, null=True)
282
    version = models.IntegerField(blank=True, null=True)
283
    synch = models.NullBooleanField()
284
285
    class Meta:
286
        managed = False
287
        db_table = 'ar_users'
288
289
290
class ArUsersData(BaseMixin, models.Model):
291
    user_id = models.IntegerField(unique=True, blank=True, null=True)
292
    user_first_name = models.TextField(blank=True, null=True)
293
    user_second_name = models.TextField(blank=True, null=True)
294
    user_institution = models.TextField(blank=True, null=True)
295
    user_email = models.TextField(blank=True, null=True)
296
    user_country = models.TextField(blank=True, null=True)
297
    user_street = models.TextField(blank=True, null=True)
298
    user_town = models.TextField(blank=True, null=True)
299
    user_zip = models.TextField(blank=True, null=True)
300
    user_other_info = models.TextField(blank=True, null=True)
301
    opening_dt = models.DateField(blank=True, null=True)
302
    closing_dt = models.DateField(blank=True, null=True)
303
    last_change_dt = models.DateTimeField(blank=True, null=True)
304
    last_change_user = models.TextField(blank=True, null=True)
305
    creation_dt = models.DateTimeField(blank=True, null=True)
306
    creation_user = models.TextField(blank=True, null=True)
307
    end_dt = models.DateTimeField(blank=True, null=True)
308
    end_user = models.TextField(blank=True, null=True)
309
    dirty = models.NullBooleanField()
310
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
311
    guid = models.IntegerField(primary_key=True)
312
    owner = models.TextField(blank=True, null=True)
313
    version = models.IntegerField(blank=True, null=True)
314
    synch = models.NullBooleanField()
315
316
    class Meta:
317
        managed = False
318
        db_table = 'ar_users_data'
319
320
321 View Code Duplication
class Blobs(BaseMixin, models.Model):
322
    blob_id = models.IntegerField(blank=True, null=True)
323
    blob = models.BinaryField(blank=True, null=True)
324
    last_change_dt = models.DateTimeField(blank=True, null=True)
325
    last_change_user = models.TextField(blank=True, null=True)
326
    dirty = models.NullBooleanField()
327
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
328
    guid = models.IntegerField(primary_key=True)
329
    owner = models.TextField(blank=True, null=True)
330
    version = models.IntegerField(blank=True, null=True)
331
    synch = models.NullBooleanField()
332
    db_mimetype = models.IntegerField(blank=True, null=True)
333
334
    class Meta:
335
        managed = False
336
        db_table = 'blobs'
337
338
339
class BreedsSpecies(BaseMixin, models.Model):
340
    breed_id = models.IntegerField(unique=True, blank=True, null=True)
341
    db_breed = models.IntegerField(blank=True, null=True)
342
    db_species = models.IntegerField(blank=True, null=True)
343
    efabis_mcname = models.TextField(blank=True, null=True)
344
    efabis_species = models.TextField(blank=True, null=True)
345
    efabis_country = models.TextField(blank=True, null=True)
346
    efabis_lang = models.TextField(blank=True, null=True)
347
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
348
    dirty = models.NullBooleanField()
349
    guid = models.BigIntegerField(primary_key=True)
350
    last_change_dt = models.DateTimeField(blank=True, null=True)
351
    last_change_user = models.TextField(blank=True, null=True)
352
    owner = models.TextField(blank=True, null=True)
353
    synch = models.NullBooleanField()
354
    version = models.SmallIntegerField(blank=True, null=True)
355
356
    class Meta:
357
        managed = False
358
        db_table = 'breeds_species'
359
        unique_together = (('db_species', 'db_breed'),)
360
361
362
class Codes(BaseMixin, models.Model):
363
    ext_code = models.TextField(blank=True, null=True)
364
    # Field renamed because it was a Python reserved word.
365
    class_field = models.TextField(db_column='class', blank=True, null=True)
366
    db_code = models.IntegerField(unique=True, blank=True, null=True)
367
    short_name = models.TextField(blank=True, null=True)
368
    long_name = models.TextField(blank=True, null=True)
369
    description = models.TextField(blank=True, null=True)
370
    opening_dt = models.DateField(blank=True, null=True)
371
    closing_dt = models.DateField(blank=True, null=True)
372
    last_change_dt = models.DateTimeField(blank=True, null=True)
373
    last_change_user = models.TextField(blank=True, null=True)
374
    dirty = models.NullBooleanField()
375
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
376
    guid = models.IntegerField(primary_key=True)
377
    owner = models.TextField(blank=True, null=True)
378
    version = models.IntegerField(blank=True, null=True)
379
    synch = models.NullBooleanField()
380
381
    class Meta:
382
        managed = False
383
        db_table = 'codes'
384
        unique_together = (
385
                ('class_field', 'ext_code', 'closing_dt'),
386
                ('class_field', 'ext_code'),)
387
388
389
class Contacts(BaseMixin, models.Model):
390
    db_contact = models.IntegerField(unique=True, blank=True, null=True)
391
    title = models.TextField(blank=True, null=True)
392
    salutation = models.TextField(blank=True, null=True)
393
    first_name = models.TextField(blank=True, null=True)
394
    second_name = models.TextField(blank=True, null=True)
395
    third_name = models.TextField(blank=True, null=True)
396
    birth_dt = models.DateField(blank=True, null=True)
397
    db_language = models.IntegerField(blank=True, null=True)
398
    street = models.TextField(blank=True, null=True)
399
    zip = models.TextField(blank=True, null=True)
400
    town = models.TextField(blank=True, null=True)
401
    db_country = models.IntegerField(blank=True, null=True)
402
    label = models.TextField(blank=True, null=True)
403
    phone = models.TextField(blank=True, null=True)
404
    phone2 = models.TextField(blank=True, null=True)
405
    fax = models.TextField(blank=True, null=True)
406
    email = models.TextField(blank=True, null=True)
407
    bank_name = models.TextField(blank=True, null=True)
408
    bank_zip = models.TextField(blank=True, null=True)
409
    account = models.TextField(blank=True, null=True)
410
    comment = models.TextField(blank=True, null=True)
411
    opening_dt = models.DateField(blank=True, null=True)
412
    closing_dt = models.DateField(blank=True, null=True)
413
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
414
    dirty = models.NullBooleanField()
415
    guid = models.BigIntegerField(primary_key=True)
416
    last_change_dt = models.DateTimeField(blank=True, null=True)
417
    last_change_user = models.TextField(blank=True, null=True)
418
    owner = models.TextField(blank=True, null=True)
419
    synch = models.NullBooleanField()
420
    version = models.SmallIntegerField(blank=True, null=True)
421
422
    class Meta:
423
        managed = False
424
        db_table = 'contacts'
425
426
427
class Event(BaseMixin, models.Model):
428
    event_id = models.IntegerField(blank=True, null=True)
429
    db_event_type = models.IntegerField(blank=True, null=True)
430
    db_sampler = models.IntegerField(blank=True, null=True)
431
    event_dt = models.DateField(blank=True, null=True)
432
    db_location = models.IntegerField(blank=True, null=True)
433
    last_change_dt = models.DateTimeField(blank=True, null=True)
434
    last_change_user = models.TextField(blank=True, null=True)
435
    dirty = models.NullBooleanField()
436
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
437
    guid = models.IntegerField(primary_key=True)
438
    owner = models.TextField(blank=True, null=True)
439
    version = models.IntegerField(blank=True, null=True)
440
    synch = models.NullBooleanField()
441
442
    class Meta:
443
        managed = False
444
        db_table = 'event'
445
        unique_together = (
446
                ('event_id', 'db_event_type', 'db_location', 'event_dt'),)
447
448
449
class Inspool(BaseMixin, models.Model):
450
    ds = models.TextField(blank=True, null=True)
451
    record_seq = models.IntegerField(unique=True, blank=True, null=True)
452
    in_date = models.DateField(blank=True, null=True)
453
    ext_unit = models.IntegerField(blank=True, null=True)
454
    proc_dt = models.DateField(blank=True, null=True)
455
    status = models.TextField(blank=True, null=True)
456
    record = models.TextField(blank=True, null=True)
457
    last_change_dt = models.DateTimeField(blank=True, null=True)
458
    last_change_user = models.TextField(blank=True, null=True)
459
    dirty = models.NullBooleanField()
460
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
461
    guid = models.IntegerField(primary_key=True)
462
    owner = models.TextField(blank=True, null=True)
463
    version = models.IntegerField(blank=True, null=True)
464
    synch = models.NullBooleanField()
465
466
    class Meta:
467
        managed = False
468
        db_table = 'inspool'
469
470
471
class InspoolErr(BaseMixin, models.Model):
472
    record_seq = models.IntegerField(blank=True, null=True)
473
    err_type = models.TextField(blank=True, null=True)
474
    action = models.TextField(blank=True, null=True)
475
    dbtable = models.TextField(blank=True, null=True)
476
    dbcol = models.TextField(blank=True, null=True)
477
    err_source = models.TextField(blank=True, null=True)
478
    short_msg = models.TextField(blank=True, null=True)
479
    long_msg = models.TextField(blank=True, null=True)
480
    ext_col = models.TextField(blank=True, null=True)
481
    ext_val = models.TextField(blank=True, null=True)
482
    mod_val = models.TextField(blank=True, null=True)
483
    comp_val = models.TextField(blank=True, null=True)
484
    target_col = models.TextField(blank=True, null=True)
485
    ds = models.TextField(blank=True, null=True)
486
    ext_unit = models.TextField(blank=True, null=True)
487
    status = models.TextField(blank=True, null=True)
488
    err_dt = models.DateTimeField(blank=True, null=True)
489
    last_change_dt = models.DateTimeField(blank=True, null=True)
490
    last_change_user = models.TextField(blank=True, null=True)
491
    dirty = models.NullBooleanField()
492
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
493
    guid = models.IntegerField(primary_key=True)
494
    owner = models.TextField(blank=True, null=True)
495
    version = models.IntegerField(blank=True, null=True)
496
    synch = models.NullBooleanField()
497
498
    class Meta:
499
        managed = False
500
        db_table = 'inspool_err'
501
502
503
class Languages(BaseMixin, models.Model):
504
    lang_id = models.IntegerField(unique=True, blank=True, null=True)
505
    iso_lang = models.TextField(unique=True, blank=True, null=True)
506
    lang = models.TextField(blank=True, null=True)
507
    last_change_dt = models.DateTimeField(blank=True, null=True)
508
    last_change_user = models.TextField(blank=True, null=True)
509
    creation_dt = models.DateTimeField(blank=True, null=True)
510
    creation_user = models.TextField(blank=True, null=True)
511
    end_dt = models.DateTimeField(blank=True, null=True)
512
    end_user = models.TextField(blank=True, null=True)
513
    dirty = models.NullBooleanField()
514
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
515
    guid = models.IntegerField(primary_key=True)
516
    owner = models.TextField(blank=True, null=True)
517
    version = models.IntegerField(blank=True, null=True)
518
    synch = models.NullBooleanField()
519
520
    class Meta:
521
        managed = False
522
        db_table = 'languages'
523
524
525
class LoadStat(BaseMixin, models.Model):
526
    ds = models.TextField(blank=True, null=True)
527
    job_start = models.DateTimeField(blank=True, null=True)
528
    job_end = models.DateTimeField(blank=True, null=True)
529
    status = models.IntegerField(blank=True, null=True)
530
    rec_tot_no = models.SmallIntegerField(blank=True, null=True)
531
    rec_err_no = models.SmallIntegerField(blank=True, null=True)
532
    rec_ok_no = models.SmallIntegerField(blank=True, null=True)
533
    last_change_dt = models.DateTimeField(blank=True, null=True)
534
    last_change_user = models.TextField(blank=True, null=True)
535
    dirty = models.NullBooleanField()
536
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
537
    guid = models.IntegerField(primary_key=True)
538
    owner = models.TextField(blank=True, null=True)
539
    version = models.IntegerField(blank=True, null=True)
540
    synch = models.NullBooleanField()
541
542
    class Meta:
543
        managed = False
544
        db_table = 'load_stat'
545
546
547
class Locations(BaseMixin, models.Model):
548
    db_animal = models.IntegerField(blank=True, null=True)
549
    db_location = models.IntegerField(blank=True, null=True)
550
    entry_dt = models.DateField(blank=True, null=True)
551
    db_entry_action = models.IntegerField(blank=True, null=True)
552
    exit_dt = models.DateField(blank=True, null=True)
553
    db_exit_action = models.IntegerField(blank=True, null=True)
554
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
555
    dirty = models.NullBooleanField()
556
    guid = models.BigIntegerField(primary_key=True)
557
    last_change_dt = models.DateTimeField(blank=True, null=True)
558
    last_change_user = models.TextField(blank=True, null=True)
559
    owner = models.TextField(blank=True, null=True)
560
    synch = models.NullBooleanField()
561
    version = models.SmallIntegerField(blank=True, null=True)
562
563
    class Meta:
564
        managed = False
565
        db_table = 'locations'
566
567
568
class Movements(BaseMixin, models.Model):
569
    movements_id = models.IntegerField(unique=True, blank=True, null=True)
570
    from_storage = models.IntegerField(blank=True, null=True)
571
    to_storage = models.IntegerField(blank=True, null=True)
572
    no_units = models.SmallIntegerField(blank=True, null=True)
573
    comment = models.TextField(blank=True, null=True)
574
    action_dt = models.DateTimeField(blank=True, null=True)
575
    action_type = models.TextField(blank=True, null=True)
576
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
577
    dirty = models.NullBooleanField()
578
    guid = models.BigIntegerField(primary_key=True)
579
    last_change_dt = models.DateTimeField(blank=True, null=True)
580
    last_change_user = models.TextField(blank=True, null=True)
581
    owner = models.TextField(blank=True, null=True)
582
    synch = models.NullBooleanField()
583
    version = models.SmallIntegerField(blank=True, null=True)
584
585
    class Meta:
586
        managed = False
587
        db_table = 'movements'
588
589
590 View Code Duplication
class NewPest(BaseMixin, models.Model):
591
    # Field renamed because it was a Python reserved word.
592
    class_field = models.TextField(db_column='class', blank=True, null=True)
593
    key = models.TextField(blank=True, null=True)
594
    trait = models.TextField(blank=True, null=True)
595
    estimator = models.FloatField(blank=True, null=True)
596
    pev = models.FloatField(blank=True, null=True)
597
    last_change_dt = models.DateTimeField(blank=True, null=True)
598
    last_change_user = models.TextField(blank=True, null=True)
599
    dirty = models.NullBooleanField()
600
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
601
    guid = models.IntegerField(primary_key=True)
602
    owner = models.TextField(blank=True, null=True)
603
    version = models.IntegerField(blank=True, null=True)
604
    synch = models.NullBooleanField()
605
606
    class Meta:
607
        managed = False
608
        db_table = 'new_pest'
609
        unique_together = (('class_field', 'key', 'trait'),)
610
611
612 View Code Duplication
class Nodes(BaseMixin, models.Model):
613
    nodename = models.TextField(blank=True, null=True)
614
    address = models.TextField(blank=True, null=True)
615
    last_change_dt = models.DateTimeField(blank=True, null=True)
616
    last_change_user = models.TextField(blank=True, null=True)
617
    dirty = models.NullBooleanField()
618
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
619
    guid = models.IntegerField(primary_key=True)
620
    owner = models.TextField(blank=True, null=True)
621
    version = models.IntegerField(blank=True, null=True)
622
    synch = models.NullBooleanField()
623
624
    class Meta:
625
        managed = False
626
        db_table = 'nodes'
627
628
629 View Code Duplication
class Protocols(BaseMixin, models.Model):
630
    protocol_id = models.IntegerField(blank=True, null=True)
631
    protocol_name = models.TextField(blank=True, null=True)
632
    db_material_type = models.IntegerField(blank=True, null=True)
633
    comment = models.TextField(blank=True, null=True)
634
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
635
    dirty = models.NullBooleanField()
636
    guid = models.BigIntegerField(primary_key=True)
637
    last_change_dt = models.DateTimeField(blank=True, null=True)
638
    last_change_user = models.TextField(blank=True, null=True)
639
    owner = models.TextField(blank=True, null=True)
640
    synch = models.NullBooleanField()
641
    version = models.SmallIntegerField(blank=True, null=True)
642
643
    class Meta:
644
        managed = False
645
        db_table = 'protocols'
646
647
648 View Code Duplication
class Sources(BaseMixin, models.Model):
649
    source = models.TextField(blank=True, null=True)
650
    tablename = models.TextField(blank=True, null=True)
651
    # Field renamed because it was a Python reserved word.
652
    class_field = models.TextField(db_column='class', blank=True, null=True)
653
    columnnames = models.TextField(blank=True, null=True)
654
    last_change_dt = models.DateTimeField(blank=True, null=True)
655
    last_change_user = models.TextField(blank=True, null=True)
656
    dirty = models.NullBooleanField()
657
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
658
    guid = models.IntegerField(primary_key=True)
659
    owner = models.TextField(blank=True, null=True)
660
    version = models.IntegerField(blank=True, null=True)
661
    synch = models.NullBooleanField()
662
663
    class Meta:
664
        managed = False
665
        db_table = 'sources'
666
667
668 View Code Duplication
class StatusChanges(BaseMixin, models.Model):
669
    status_change_id = models.IntegerField(blank=True, null=True)
670
    vessels_storage_id = models.IntegerField(blank=True, null=True)
671
    old_status = models.IntegerField(blank=True, null=True)
672
    new_status = models.IntegerField(blank=True, null=True)
673
    action_dt = models.DateTimeField(blank=True, null=True)
674
    comment = models.TextField(blank=True, null=True)
675
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
676
    dirty = models.NullBooleanField()
677
    guid = models.BigIntegerField(primary_key=True)
678
    last_change_dt = models.DateTimeField(blank=True, null=True)
679
    last_change_user = models.TextField(blank=True, null=True)
680
    owner = models.TextField(blank=True, null=True)
681
    synch = models.NullBooleanField()
682
    version = models.SmallIntegerField(blank=True, null=True)
683
684
    class Meta:
685
        managed = False
686
        db_table = 'status_changes'
687
688
689 View Code Duplication
class Storage(BaseMixin, models.Model):
690
    storage_id = models.IntegerField(unique=True, blank=True, null=True)
691
    storage_name = models.TextField(blank=True, null=True)
692
    parent_id = models.IntegerField(blank=True, null=True)
693
    comment = models.TextField(blank=True, null=True)
694
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
695
    dirty = models.NullBooleanField()
696
    guid = models.BigIntegerField(primary_key=True)
697
    last_change_dt = models.DateTimeField(blank=True, null=True)
698
    last_change_user = models.TextField(blank=True, null=True)
699
    owner = models.TextField(blank=True, null=True)
700
    synch = models.NullBooleanField()
701
    version = models.SmallIntegerField(blank=True, null=True)
702
703
    class Meta:
704
        managed = False
705
        db_table = 'storage'
706
707
708
class StorageHistory(BaseMixin, models.Model):
709
    storage_id = models.IntegerField(blank=True, null=True)
710
    old_storage_name = models.TextField(blank=True, null=True)
711
    new_storage_name = models.TextField(blank=True, null=True)
712
    old_parent_id = models.IntegerField(blank=True, null=True)
713
    new_parent_id = models.IntegerField(blank=True, null=True)
714
    old_comment = models.TextField(blank=True, null=True)
715
    new_comment = models.TextField(blank=True, null=True)
716
    action_type = models.TextField(blank=True, null=True)
717
    action_date = models.DateField(blank=True, null=True)
718
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
719
    dirty = models.NullBooleanField()
720
    guid = models.BigIntegerField(primary_key=True)
721
    last_change_dt = models.DateTimeField(blank=True, null=True)
722
    last_change_user = models.TextField(blank=True, null=True)
723
    owner = models.TextField(blank=True, null=True)
724
    synch = models.NullBooleanField()
725
    version = models.SmallIntegerField(blank=True, null=True)
726
727
    class Meta:
728
        managed = False
729
        db_table = 'storage_history'
730
731
732 View Code Duplication
class Targets(BaseMixin, models.Model):
733
    target = models.TextField(blank=True, null=True)
734
    tablename = models.TextField(blank=True, null=True)
735
    # Field renamed because it was a Python reserved word.
736
    class_field = models.TextField(db_column='class', blank=True, null=True)
737
    columnnames = models.TextField(blank=True, null=True)
738
    last_change_dt = models.DateTimeField(blank=True, null=True)
739
    last_change_user = models.TextField(blank=True, null=True)
740
    dirty = models.NullBooleanField()
741
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
742
    guid = models.IntegerField(primary_key=True)
743
    owner = models.TextField(blank=True, null=True)
744
    version = models.IntegerField(blank=True, null=True)
745
    synch = models.NullBooleanField()
746
747
    class Meta:
748
        managed = False
749
        db_table = 'targets'
750
751
752
class Transfer(BaseMixin, models.Model):
753
    db_animal = models.IntegerField(blank=True, null=True)
754
    ext_animal = models.TextField(blank=True, null=True)
755
    db_unit = models.IntegerField(blank=True, null=True)
756
    id_set = models.IntegerField(blank=True, null=True)
757
    opening_dt = models.DateField(blank=True, null=True)
758
    closing_dt = models.DateField(blank=True, null=True)
759
    last_change_dt = models.DateTimeField(blank=True, null=True)
760
    last_change_user = models.TextField(blank=True, null=True)
761
    dirty = models.NullBooleanField()
762
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
763
    guid = models.IntegerField(primary_key=True)
764
    owner = models.TextField(blank=True, null=True)
765
    version = models.IntegerField(blank=True, null=True)
766
    synch = models.NullBooleanField()
767
768
    class Meta:
769
        managed = False
770
        db_table = 'transfer'
771
        unique_together = (('db_unit', 'ext_animal'),)
772
773
774
class Unit(BaseMixin, models.Model):
775
    db_unit = models.IntegerField(unique=True, blank=True, null=True)
776
    ext_unit = models.TextField(blank=True, null=True)
777
    ext_id = models.TextField(blank=True, null=True)
778
    db_contact = models.IntegerField(blank=True, null=True)
779
    db_member = models.IntegerField(blank=True, null=True)
780
    opening_dt = models.DateField(blank=True, null=True)
781
    closing_dt = models.DateField(blank=True, null=True)
782
    last_change_dt = models.DateTimeField(blank=True, null=True)
783
    last_change_user = models.TextField(blank=True, null=True)
784
    dirty = models.NullBooleanField()
785
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
786
    guid = models.IntegerField(primary_key=True)
787
    owner = models.TextField(blank=True, null=True)
788
    version = models.IntegerField(blank=True, null=True)
789
    synch = models.NullBooleanField()
790
791
    class Meta:
792
        managed = False
793
        db_table = 'unit'
794
        unique_together = (
795
                ('ext_unit', 'ext_id'),
796
                ('ext_unit', 'ext_id', 'closing_dt'),)
797
798
799
class Vessels(BaseMixin, models.Model):
800
    db_vessel = models.IntegerField(unique=True, blank=True, null=True)
801
    ext_vessel = models.TextField(unique=True, blank=True, null=True)
802
    db_animal = models.IntegerField(blank=True, null=True)
803
    protocol_id = models.IntegerField(blank=True, null=True)
804
    production_dt = models.DateField(blank=True, null=True)
805
    freezing_dt = models.DateField(blank=True, null=True)
806
    db_vessel_type = models.IntegerField(blank=True, null=True)
807
    comment = models.TextField(blank=True, null=True)
808
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
809
    dirty = models.NullBooleanField()
810
    guid = models.BigIntegerField(primary_key=True)
811
    last_change_dt = models.DateTimeField(blank=True, null=True)
812
    last_change_user = models.TextField(blank=True, null=True)
813
    owner = models.TextField(blank=True, null=True)
814
    synch = models.NullBooleanField()
815
    version = models.SmallIntegerField(blank=True, null=True)
816
    db_contributor = models.IntegerField(blank=True, null=True)
817
818
    class Meta:
819
        managed = False
820
        db_table = 'vessels'
821
822
823 View Code Duplication
class VesselsStorage(BaseMixin, models.Model):
824
    vessels_storage_id = models.IntegerField(blank=True, null=True)
825
    db_vessel = models.IntegerField(blank=True, null=True)
826
    storage_id = models.IntegerField(blank=True, null=True)
827
    no_units = models.SmallIntegerField(blank=True, null=True)
828
    db_status = models.IntegerField(blank=True, null=True)
829
    comment = models.TextField(blank=True, null=True)
830
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
831
    dirty = models.NullBooleanField()
832
    guid = models.BigIntegerField(primary_key=True)
833
    last_change_dt = models.DateTimeField(blank=True, null=True)
834
    last_change_user = models.TextField(blank=True, null=True)
835
    owner = models.TextField(blank=True, null=True)
836
    synch = models.NullBooleanField()
837
    version = models.SmallIntegerField(blank=True, null=True)
838
839
    class Meta:
840
        managed = False
841
        db_table = 'vessels_storage'
842
        unique_together = (('db_vessel', 'storage_id', 'db_status'),)
843
844
845
# --- Useful Views
846
# https://blog.rescale.com/using-database-views-in-django-orm/
847
class VBreedsSpecies(models.Model):
848
    v_guid = models.BigIntegerField(primary_key=True)
849
    breed_id = models.IntegerField(unique=True, blank=True, null=True)
850
    db_breed = models.IntegerField(blank=True, null=True)
851
    ext_breed = models.TextField(blank=True, null=True)
852
    db_species = models.IntegerField(blank=True, null=True)
853
    ext_species = models.TextField(blank=True, null=True)
854
    efabis_mcname = models.TextField(blank=True, null=True)
855
    efabis_species = models.TextField(blank=True, null=True)
856
    efabis_country = models.TextField(blank=True, null=True)
857
    efabis_lang = models.TextField(blank=True, null=True)
858
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
859
    dirty = models.NullBooleanField()
860
    guid = models.BigIntegerField()
861
    last_change_dt = models.DateTimeField(blank=True, null=True)
862
    last_change_user = models.TextField(blank=True, null=True)
863
    owner = models.TextField(blank=True, null=True)
864
    synch = models.NullBooleanField()
865
    version = models.SmallIntegerField(blank=True, null=True)
866
867
    class Meta:
868
        managed = False
869
        db_table = 'v_breeds_species'
870
        verbose_name = "Breeds Species View"
871
872
    def __str__(self):
873
        return "{breed} ({specie})".format(
874
                breed=self.efabis_mcname,
875
                specie=self.ext_species)
876
877
    @classmethod
878
    def get_all_species(cls):
879
        # get all distinct objects
880
        queryset = cls.objects.distinct('ext_species').order_by(
881
            'ext_species')
882
883
        return [entry.ext_species for entry in queryset]
884
885
    @classmethod
886
    def get_all_countries(cls):
887
        # get all distinct objects
888
        queryset = cls.objects.distinct('efabis_country').order_by(
889
            'efabis_country')
890
891
        return [entry.efabis_country for entry in queryset]
892
893
894
class VTransfer(models.Model):
895
    v_guid = models.BigIntegerField(primary_key=True)
896
    db_animal = models.IntegerField(unique=True, blank=True, null=True)
897
    ext_animal = models.TextField(blank=True, null=True)
898
    db_unit = models.IntegerField(blank=True, null=True)
899
    ext_unit = models.TextField(blank=True, null=True)
900
    id_set = models.IntegerField(blank=True, null=True)
901
    ext_id_set = models.TextField(blank=True, null=True)
902
    opening_dt = models.DateField(blank=True, null=True)
903
    closing_dt = models.DateField(blank=True, null=True)
904
    last_change_dt = models.DateTimeField(blank=True, null=True)
905
    last_change_user = models.TextField(blank=True, null=True)
906
    dirty = models.NullBooleanField()
907
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
908
    guid = models.IntegerField()
909
    owner = models.TextField(blank=True, null=True)
910
    version = models.IntegerField(blank=True, null=True)
911
    synch = models.NullBooleanField()
912
913
    class Meta:
914
        managed = False
915
        db_table = 'v_transfer'
916
        verbose_name = "Transfer View"
917
918
    def __str__(self):
919
        return self.get_fullname()
920
921
    def get_fullname(self):
922
        """No changes in names object"""
923
924
        return ":::".join([self.ext_unit, self.ext_animal])
925
926
927
class VAnimal(models.Model):
928
    v_guid = models.BigIntegerField(primary_key=True)
929
    db_animal = models.IntegerField(unique=True, blank=True, null=True)
930
    ext_animal = models.TextField(blank=True, null=True)
931
    db_sire = models.IntegerField(blank=True, null=True)
932
    ext_sire = models.TextField(blank=True, null=True)
933
    db_dam = models.IntegerField(blank=True, null=True)
934
    ext_dam = models.TextField(blank=True, null=True)
935
    db_sex = models.IntegerField(blank=True, null=True)
936
    ext_sex = models.TextField(blank=True, null=True)
937
    db_breed = models.IntegerField(blank=True, null=True)
938
    ext_breed = models.TextField(blank=True, null=True)
939
    db_species = models.IntegerField(blank=True, null=True)
940
    ext_species = models.TextField(blank=True, null=True)
941
    birth_dt = models.DateField(blank=True, null=True)
942
    birth_year = models.TextField(blank=True, null=True)
943
    latitude = models.FloatField(blank=True, null=True)
944
    longitude = models.FloatField(blank=True, null=True)
945
    image_id = models.IntegerField(blank=True, null=True)
946
    db_org = models.IntegerField(blank=True, null=True)
947
    ext_org = models.TextField(blank=True, null=True)
948
    la_rep = models.TextField(blank=True, null=True)
949
    la_rep_dt = models.DateField(blank=True, null=True)
950
    last_change_dt = models.DateTimeField(blank=True, null=True)
951
    last_change_user = models.TextField(blank=True, null=True)
952
    dirty = models.NullBooleanField()
953
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
954
    guid = models.IntegerField()
955
    owner = models.TextField(blank=True, null=True)
956
    version = models.IntegerField(blank=True, null=True)
957
    synch = models.NullBooleanField()
958
    db_hybrid = models.IntegerField(blank=True, null=True)
959
    ext_hybrid = models.TextField(blank=True, null=True)
960
    comment = models.TextField(blank=True, null=True)
961
962
    class Meta:
963
        managed = False
964
        db_table = 'v_animal'
965
        verbose_name = "Animal View"
966
967
    def __str__(self):
968
        return "%s (%s) (sire:%s, dam:%s)" % (
969
            self.ext_animal,
970
            self.efabis_mcname,
971
            self.ext_sire,
972
            self.ext_dam)
973
974
    @property
975
    def efabis_mcname(self):
976
        "Retrieve efabis mcname from breed_species table"
977
978
        # HINT: is this unique in VBreedsSpecies?
979
        entry = VBreedsSpecies.objects.get(db_breed=self.db_breed)
980
981
        return entry.efabis_mcname
982
983
    @property
984
    def efabis_country(self):
985
        "Retrieve efabis country from breed_species table"
986
987
        # HINT: is this unique in VBreedsSpecies?
988
        entry = VBreedsSpecies.objects.get(db_breed=self.db_breed)
989
990
        return entry.efabis_country
991
992
    def get_sire(self):
993
        """Retrieve sire of this animal from VAnimal table"""
994
995
        try:
996
            return VAnimal.objects.get(db_animal=self.db_sire)
997
998
        except VAnimal.DoesNotExist:
999
            return None
1000
1001
    def get_dam(self):
1002
        """Retrieve dam of this animal from VAnimal table"""
1003
1004
        try:
1005
            return VAnimal.objects.get(db_animal=self.db_dam)
1006
1007
        except VAnimal.DoesNotExist:
1008
            return None
1009
1010
1011
class VVessels(models.Model):
1012
    v_guid = models.BigIntegerField(primary_key=True)
1013
    db_vessel = models.IntegerField(unique=True, blank=True, null=True)
1014
    ext_vessel = models.TextField(unique=True, blank=True, null=True)
1015
    db_animal = models.IntegerField(blank=True, null=True)
1016
    ext_animal = models.TextField(unique=True, blank=True, null=True)
1017
    protocol_id = models.IntegerField(blank=True, null=True)
1018
    ext_protocol_id = models.IntegerField(blank=True, null=True)
1019
    production_dt = models.DateField(blank=True, null=True)
1020
    freezing_dt = models.DateField(blank=True, null=True)
1021
    db_vessel_type = models.IntegerField(blank=True, null=True)
1022
    ext_vessel_type = models.TextField(unique=True, blank=True, null=True)
1023
    comment = models.TextField(blank=True, null=True)
1024
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
1025
    dirty = models.NullBooleanField()
1026
    guid = models.BigIntegerField()
1027
    last_change_dt = models.DateTimeField(blank=True, null=True)
1028
    last_change_user = models.TextField(blank=True, null=True)
1029
    owner = models.TextField(blank=True, null=True)
1030
    synch = models.NullBooleanField()
1031
    version = models.SmallIntegerField(blank=True, null=True)
1032
1033
    class Meta:
1034
        managed = False
1035
        db_table = 'v_vessels'
1036
        verbose_name = "Vessels View"
1037
1038
    def __str__(self):
1039
        return "%s (%s)" % (self.ext_vessel, self.ext_animal)
1040
1041
    def get_protocol(self):
1042
        return VProtocols.objects.get(protocol_id=self.ext_protocol_id)
1043
1044
    def get_protocol_name(self):
1045
        protocol = self.get_protocol()
1046
        return protocol.protocol_name
1047
1048
    def get_organism_part(self):
1049
        protocol = self.get_protocol()
1050
        return protocol.ext_material_type
1051
1052
    def get_animal(self):
1053
        return VAnimal.objects.get(db_animal=self.db_animal)
1054
1055
1056
class VProtocols(models.Model):
1057
    v_guid = models.BigIntegerField(primary_key=True)
1058
    protocol_id = models.IntegerField(blank=True, null=True)
1059
    protocol_name = models.TextField(blank=True, null=True)
1060
    db_material_type = models.IntegerField(blank=True, null=True)
1061
    ext_material_type = models.TextField(unique=True, blank=True, null=True)
1062
    comment = models.TextField(blank=True, null=True)
1063
    chk_lvl = models.SmallIntegerField(blank=True, null=True)
1064
    dirty = models.NullBooleanField()
1065
    guid = models.BigIntegerField()
1066
    last_change_dt = models.DateTimeField(blank=True, null=True)
1067
    last_change_user = models.TextField(blank=True, null=True)
1068
    owner = models.TextField(blank=True, null=True)
1069
    synch = models.NullBooleanField()
1070
    version = models.SmallIntegerField(blank=True, null=True)
1071
1072
    class Meta:
1073
        managed = False
1074
        db_table = 'v_protocols'
1075
        verbose_name = "Protocols View"
1076
1077
    def __str__(self):
1078
        return "%s, %s" % (self.protocol_name, self.ext_material_type)
1079
1080
1081
# --- Custom functions
1082
1083
# A method to truncate database
1084
def truncate_database():
1085
    """Truncate cryoweb database"""
1086
1087
    logger.warning("Truncating ALL cryoweb tables")
1088
1089
    # call each class and truncate its table by calling truncate method
1090
    Animal.truncate()
1091
    ArConstraints.truncate()
1092
    ArDbtdescriptors.truncate()
1093
    ArDbtpolicies.truncate()
1094
    ArDbttables.truncate()
1095
    ArRoleConstraints.truncate()
1096
    ArRoleDbtpolicies.truncate()
1097
    ArRoleStpolicies.truncate()
1098
    ArRoles.truncate()
1099
    ArStpolicies.truncate()
1100
    ArUserRoles.truncate()
1101
    ArUsers.truncate()
1102
    ArUsersData.truncate()
1103
    Blobs.truncate()
1104
    BreedsSpecies.truncate()
1105
    Codes.truncate()
1106
    Contacts.truncate()
1107
    Event.truncate()
1108
    Inspool.truncate()
1109
    InspoolErr.truncate()
1110
    Languages.truncate()
1111
    LoadStat.truncate()
1112
    Locations.truncate()
1113
    Movements.truncate()
1114
    NewPest.truncate()
1115
    Nodes.truncate()
1116
    Protocols.truncate()
1117
    Sources.truncate()
1118
    StatusChanges.truncate()
1119
    Storage.truncate()
1120
    StorageHistory.truncate()
1121
    Targets.truncate()
1122
    Transfer.truncate()
1123
    Unit.truncate()
1124
    # VBreedsSpecies  # it's a view, not a table
1125
    Vessels.truncate()
1126
    VesselsStorage.truncate()
1127
1128
    logger.warning("All cryoweb tables were truncated")
1129
1130
1131
# A method to discover is cryoweb has data or not
1132
def db_has_data():
1133
    # Test only tables I read data to fill UID
1134
    if (BreedsSpecies.objects.exists() or Transfer.objects.exists() or
1135
            Animal.objects.exists() or Protocols.objects.exists() or
1136
            Vessels.objects.exists()):
1137
        return True
1138
1139
    else:
1140
        return False
1141