]> git.parisson.com Git - telemeta.git/commitdiff
Add migrations 0001 based on django 1.8 migration system, add init script
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Fri, 20 Jan 2017 15:22:12 +0000 (16:22 +0100)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Fri, 20 Jan 2017 15:22:12 +0000 (16:22 +0100)
app/scripts/init.sh [new file with mode: 0644]
app/scripts/worker.sh
telemeta/migrations/0001_initial.py [new file with mode: 0644]
telemeta/migrations/__init__.py [new file with mode: 0644]

diff --git a/app/scripts/init.sh b/app/scripts/init.sh
new file mode 100644 (file)
index 0000000..21bd3d5
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+app='/srv/app'
+manage=$app'/manage.py'
+
+python $manage migrate --noinput
+python $manage telemeta-create-admin-user
+python $manage telemeta-create-boilerplate
+python $manage bower_install -- --allow-root
index f141f24ee3fa9b95245fd8770cac664f9389ffea..4a52a2601b5a9ddbe57642bb9ca0f6bd36c59a95 100644 (file)
@@ -7,6 +7,7 @@ wsgi=$app'/wsgi.py'
 
 # stating apps
 # pip install django-environ redis
+pip uninstall -y south
 
 # waiting for other services
 bash $app/scripts/wait.sh
diff --git a/telemeta/migrations/0001_initial.py b/telemeta/migrations/0001_initial.py
new file mode 100644 (file)
index 0000000..6b65912
--- /dev/null
@@ -0,0 +1,1179 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import telemeta.models.fields
+import telemeta.models.collection
+import dirtyfields.dirtyfields
+import django.db.models.deletion
+from django.conf import settings
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='AcquisitionMode',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'acquisition_modes',
+                'verbose_name': 'mode of acquisition',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='AdConversion',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'ad_conversions',
+                'verbose_name': 'A/D conversion',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='ContextKeyword',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'context_keywords',
+                'verbose_name': 'keyword',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='CopyType',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'copy_type',
+                'verbose_name': 'copy type',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='Criteria',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('key', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='key', blank=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='value', blank=True)),
+            ],
+            options={
+                'db_table': 'search_criteria',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='EthnicGroup',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'ethnic_groups',
+                'verbose_name': 'population / social group',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='EthnicGroupAlias',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='name', blank=True)),
+                ('ethnic_group', telemeta.models.fields.ForeignKey(related_name='aliases', verbose_name='population / social group', to='telemeta.EthnicGroup')),
+            ],
+            options={
+                'ordering': ['ethnic_group__value'],
+                'db_table': 'ethnic_group_aliases',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='Format',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('original_code', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='original code', blank=True)),
+                ('original_number', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='original number', blank=True)),
+                ('original_status', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='original status', blank=True)),
+                ('original_state', telemeta.models.fields.TextField(default=b'', verbose_name='technical properties / conservation state', blank=True)),
+                ('original_comments', telemeta.models.fields.TextField(default=b'', verbose_name='comments / notes', blank=True)),
+                ('original_audio_quality', telemeta.models.fields.TextField(default=b'', verbose_name='audio quality', blank=True)),
+                ('recording_system', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='recording system', blank=True)),
+                ('tape_thickness', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='tape thickness (um)', blank=True)),
+                ('tape_reference', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='tape reference', blank=True)),
+                ('sticker_presence', telemeta.models.fields.BooleanField(default=False, verbose_name='sticker presence')),
+            ],
+            options={
+                'db_table': 'media_formats',
+                'verbose_name': 'format',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='GenericStyle',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'generic_styles',
+                'verbose_name': 'generic style',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='IdentifierType',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'identifier_type',
+                'verbose_name': 'identifier type',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='Instrument',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('name', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='name', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['name'],
+                'db_table': 'instruments',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='InstrumentAlias',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('name', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='name', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['name'],
+                'db_table': 'instrument_aliases',
+                'verbose_name_plural': 'instrument aliases',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='InstrumentAliasRelation',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('alias', telemeta.models.fields.ForeignKey(related_name='other_name', verbose_name='alias', to='telemeta.InstrumentAlias')),
+                ('instrument', telemeta.models.fields.ForeignKey(related_name='relation', verbose_name='instrument', to='telemeta.Instrument')),
+            ],
+            options={
+                'db_table': 'instrument_alias_relations',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='InstrumentRelation',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('instrument', telemeta.models.fields.ForeignKey(related_name='parent_relation', verbose_name='instrument', to='telemeta.Instrument')),
+                ('parent_instrument', telemeta.models.fields.ForeignKey(related_name='child_relation', verbose_name='parent instrument', to='telemeta.Instrument')),
+            ],
+            options={
+                'db_table': 'instrument_relations',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='Language',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('identifier', telemeta.models.fields.CharField(default=b'', max_length=3, verbose_name='identifier', blank=True)),
+                ('part2B', telemeta.models.fields.CharField(default=b'', max_length=3, verbose_name='equivalent ISO 639-2 identifier (bibliographic)', blank=True)),
+                ('part2T', telemeta.models.fields.CharField(default=b'', max_length=3, verbose_name='equivalent ISO 639-2 identifier (terminologic)', blank=True)),
+                ('part1', telemeta.models.fields.CharField(default=b'', max_length=1, verbose_name='equivalent ISO 639-1 identifier', blank=True)),
+                ('scope', telemeta.models.fields.CharField(default=b'', max_length=1, verbose_name='scope', blank=True, choices=[(b'I', b'Individual'), (b'M', b'Macrolanguage'), (b'S', b'Special')])),
+                ('type', telemeta.models.fields.CharField(default=b'', max_length=1, verbose_name='type', blank=True, choices=[(b'A', b'Ancient'), (b'C', b'Constructed'), (b'E', b'Extinct'), (b'H', b'Historical'), (b'L', b'Living'), (b'S', b'Special')])),
+                ('name', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='name', blank=True)),
+                ('comment', telemeta.models.fields.TextField(default=b'', verbose_name='comment', blank=True)),
+            ],
+            options={
+                'ordering': ['name'],
+                'db_table': 'languages',
+                'verbose_name_plural': 'languages',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='LegalRight',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'legal_rights',
+                'verbose_name': 'legal rights',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='Location',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('name', telemeta.models.fields.CharField(default=b'', unique=True, max_length=150, verbose_name='name', blank=True)),
+                ('type', telemeta.models.fields.IntegerField(default=0, blank=True, verbose_name='type', db_index=True, choices=[(2, 'country'), (1, 'continent'), (0, 'other')])),
+                ('latitude', telemeta.models.fields.FloatField(default=None, null=True, blank=True)),
+                ('longitude', telemeta.models.fields.FloatField(default=None, null=True, blank=True)),
+                ('is_authoritative', telemeta.models.fields.BooleanField(default=False, verbose_name='authoritative')),
+            ],
+            options={
+                'ordering': ['name'],
+                'db_table': 'locations',
+                'verbose_name': 'location',
+                'verbose_name_plural': 'locations',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='LocationAlias',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('alias', telemeta.models.fields.CharField(default=b'', max_length=150, verbose_name='alias', blank=True)),
+                ('is_authoritative', telemeta.models.fields.BooleanField(default=False, verbose_name='authoritative')),
+                ('location', telemeta.models.fields.ForeignKey(related_name='aliases', verbose_name='location', to='telemeta.Location')),
+            ],
+            options={
+                'ordering': ['alias'],
+                'db_table': 'location_aliases',
+                'verbose_name_plural': 'location aliases',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='LocationRelation',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('is_direct', telemeta.models.fields.BooleanField(default=False, db_index=True)),
+                ('is_authoritative', telemeta.models.fields.BooleanField(default=False, verbose_name='authoritative')),
+                ('ancestor_location', telemeta.models.fields.ForeignKey(related_name='descendant_relations', verbose_name='ancestor location', to='telemeta.Location')),
+                ('location', telemeta.models.fields.ForeignKey(related_name='ancestor_relations', verbose_name='location', to='telemeta.Location')),
+            ],
+            options={
+                'ordering': ['ancestor_location__name'],
+                'db_table': 'location_relations',
+                'verbose_name_plural': 'location relations',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='LocationType',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('code', telemeta.models.fields.CharField(default=b'', unique=True, max_length=64, verbose_name='identifier', blank=True)),
+                ('name', telemeta.models.fields.CharField(default=b'', max_length=150, verbose_name='name', blank=True)),
+            ],
+            options={
+                'ordering': ['name'],
+                'db_table': 'location_types',
+                'verbose_name_plural': 'location types',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='MediaCollection',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('title', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='title', blank=True)),
+                ('alt_title', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='original title / translation', blank=True)),
+                ('creator', telemeta.models.fields.CharField(default=b'', help_text='First name, Last name ; First name, Last name', max_length=250, verbose_name='depositor / contributor', blank=True)),
+                ('description', telemeta.models.fields.TextField(default=b'', verbose_name='description', blank=True)),
+                ('recorded_from_year', telemeta.models.fields.IntegerField(default=0, help_text='YYYY', verbose_name='recording year (from)', blank=True)),
+                ('recorded_to_year', telemeta.models.fields.IntegerField(default=0, help_text='YYYY', verbose_name='recording year (until)', blank=True)),
+                ('year_published', telemeta.models.fields.IntegerField(default=0, help_text='YYYY', verbose_name='year published', blank=True)),
+                ('public_access', telemeta.models.fields.CharField(default=b'metadata', max_length=16, verbose_name='access type', blank=True, choices=[(b'none', 'none'), (b'metadata', 'metadata'), (b'mixed', 'mixed'), (b'full', 'full')])),
+                ('collector', telemeta.models.fields.CharField(default=b'', help_text='First name, Last name ; First name, Last name', max_length=250, verbose_name='recordist', blank=True)),
+                ('publisher_serial', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='publisher serial number', blank=True)),
+                ('booklet_author', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='booklet author', blank=True)),
+                ('reference', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='publisher reference', blank=True)),
+                ('external_references', telemeta.models.fields.TextField(default=b'', verbose_name='bibliographic references', blank=True)),
+                ('auto_period_access', telemeta.models.fields.BooleanField(default=True, verbose_name='automatic access after a rolling period')),
+                ('code', telemeta.models.fields.CharField(default=b'', validators=[telemeta.models.collection.is_valid_collection_code], max_length=250, blank=True, unique=True, verbose_name='code')),
+                ('old_code', telemeta.models.fields.CharField(default=None, max_length=250, null=True, verbose_name='old code', blank=True)),
+                ('cnrs_contributor', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='CNRS depositor', blank=True)),
+                ('booklet_description', telemeta.models.fields.TextField(default=b'', verbose_name='related documentation', blank=True)),
+                ('alt_copies', telemeta.models.fields.TextField(default=b'', verbose_name='copies', blank=True)),
+                ('comment', telemeta.models.fields.TextField(default=b'', verbose_name='comment', blank=True)),
+                ('archiver_notes', telemeta.models.fields.TextField(default=b'', verbose_name='archiver notes', blank=True)),
+                ('items_done', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='items finished', blank=True)),
+                ('collector_is_creator', telemeta.models.fields.BooleanField(default=False, verbose_name='recordist identical to depositor')),
+                ('is_published', telemeta.models.fields.BooleanField(default=False, verbose_name='published')),
+                ('conservation_site', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='conservation site', blank=True)),
+                ('approx_duration', telemeta.models.fields.DurationField(default=b'0', help_text=b'hh:mm:ss', verbose_name='estimated duration', blank=True)),
+                ('physical_items_num', telemeta.models.fields.IntegerField(default=0, verbose_name='number of components (medium / piece)', blank=True)),
+                ('alt_ids', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='copies (obsolete field)', blank=True)),
+                ('travail', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='archiver notes (obsolete field)', blank=True)),
+                ('acquisition_mode', telemeta.models.fields.WeakForeignKey(related_name='collections', default=None, blank=True, to='telemeta.AcquisitionMode', null=True, verbose_name='mode of acquisition')),
+                ('ad_conversion', telemeta.models.fields.WeakForeignKey(related_name='collections', default=None, blank=True, to='telemeta.AdConversion', null=True, verbose_name='digitization')),
+                ('copy_type', telemeta.models.fields.WeakForeignKey(related_name='collections', default=None, blank=True, to='telemeta.CopyType', null=True, verbose_name='copy type')),
+                ('legal_rights', telemeta.models.fields.WeakForeignKey(related_name='collections', default=None, blank=True, to='telemeta.LegalRight', null=True, verbose_name='legal rights')),
+            ],
+            options={
+                'ordering': ['code'],
+                'db_table': 'media_collections',
+                'verbose_name': 'collection',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='MediaCollectionIdentifier',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('identifier', models.CharField(unique=True, max_length=255, verbose_name='identifier', blank=True)),
+                ('date_add', models.DateTimeField(auto_now_add=True, verbose_name='date added')),
+                ('date_first', models.DateTimeField(verbose_name='date of first attribution')),
+                ('date_last', models.DateTimeField(verbose_name='date of last attribution')),
+                ('date_modified', models.DateTimeField(auto_now=True, verbose_name='date modified')),
+                ('notes', models.TextField(null=True, verbose_name='notes')),
+                ('collection', telemeta.models.fields.ForeignKey(related_name='identifiers', verbose_name='collection', to='telemeta.MediaCollection')),
+                ('type', telemeta.models.fields.WeakForeignKey(default=None, blank=True, to='telemeta.IdentifierType', null=True, verbose_name='type')),
+            ],
+            options={
+                'db_table': 'media_collection_identifier',
+                'verbose_name': 'collection identifier',
+                'verbose_name_plural': 'collection identifiers',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='MediaCollectionRelated',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('title', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='title', blank=True)),
+                ('date', models.DateTimeField(auto_now=True, verbose_name='date')),
+                ('description', telemeta.models.fields.TextField(default=b'', verbose_name='description', blank=True)),
+                ('mime_type', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='mime_type', blank=True)),
+                ('url', telemeta.models.fields.CharField(default=b'', max_length=500, verbose_name='url', blank=True)),
+                ('credits', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='credits', blank=True)),
+                ('file', telemeta.models.fields.FileField(db_column=b'filename', default=b'', upload_to=b'items/%Y/%m/%d', max_length=255, blank=True, verbose_name='file')),
+                ('collection', telemeta.models.fields.ForeignKey(related_name='related', verbose_name='collection', to='telemeta.MediaCollection')),
+            ],
+            options={
+                'db_table': 'media_collection_related',
+                'verbose_name': 'collection related media',
+                'verbose_name_plural': 'collection related media',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='MediaCorpus',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('title', models.CharField(max_length=250, verbose_name='title')),
+                ('description', models.CharField(max_length=250, null=True, verbose_name='description_old', blank=True)),
+                ('descriptions', models.TextField(verbose_name='description', blank=True)),
+                ('code', models.CharField(unique=True, max_length=250, verbose_name='code')),
+                ('public_access', models.CharField(default=b'metadata', max_length=16, verbose_name='public access', choices=[(b'none', 'none'), (b'metadata', 'metadata'), (b'mixed', 'mixed'), (b'full', 'full')])),
+                ('recorded_from_year', telemeta.models.fields.IntegerField(default=0, help_text='YYYY', verbose_name='recording year (from)', blank=True)),
+                ('recorded_to_year', telemeta.models.fields.IntegerField(default=0, help_text='YYYY', verbose_name='recording year (until)', blank=True)),
+                ('children', models.ManyToManyField(related_name='corpus', verbose_name='collections', to='telemeta.MediaCollection', blank=True)),
+            ],
+            options={
+                'ordering': ['code'],
+                'db_table': 'media_corpus',
+                'verbose_name': 'corpus',
+                'verbose_name_plural': 'corpus',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='MediaCorpusRelated',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('title', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='title', blank=True)),
+                ('date', models.DateTimeField(auto_now=True, verbose_name='date')),
+                ('description', telemeta.models.fields.TextField(default=b'', verbose_name='description', blank=True)),
+                ('mime_type', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='mime_type', blank=True)),
+                ('url', telemeta.models.fields.CharField(default=b'', max_length=500, verbose_name='url', blank=True)),
+                ('credits', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='credits', blank=True)),
+                ('file', telemeta.models.fields.FileField(db_column=b'filename', default=b'', upload_to=b'items/%Y/%m/%d', max_length=255, blank=True, verbose_name='file')),
+                ('resource', telemeta.models.fields.ForeignKey(related_name='related', verbose_name='corpus', to='telemeta.MediaCorpus')),
+            ],
+            options={
+                'db_table': 'media_corpus_related',
+                'verbose_name': 'corpus related media',
+                'verbose_name_plural': 'corpus related media',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='MediaFonds',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('title', models.CharField(max_length=250, verbose_name='title')),
+                ('description', models.CharField(max_length=250, null=True, verbose_name='description_old', blank=True)),
+                ('descriptions', models.TextField(verbose_name='description', blank=True)),
+                ('code', models.CharField(unique=True, max_length=250, verbose_name='code')),
+                ('public_access', models.CharField(default=b'metadata', max_length=16, verbose_name='public access', choices=[(b'none', 'none'), (b'metadata', 'metadata'), (b'mixed', 'mixed'), (b'full', 'full')])),
+                ('children', models.ManyToManyField(related_name='fonds', verbose_name='corpus', to='telemeta.MediaCorpus', blank=True)),
+            ],
+            options={
+                'ordering': ['code'],
+                'db_table': 'media_fonds',
+                'verbose_name': 'fonds',
+                'verbose_name_plural': 'fonds',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='MediaFondsRelated',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('title', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='title', blank=True)),
+                ('date', models.DateTimeField(auto_now=True, verbose_name='date')),
+                ('description', telemeta.models.fields.TextField(default=b'', verbose_name='description', blank=True)),
+                ('mime_type', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='mime_type', blank=True)),
+                ('url', telemeta.models.fields.CharField(default=b'', max_length=500, verbose_name='url', blank=True)),
+                ('credits', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='credits', blank=True)),
+                ('file', telemeta.models.fields.FileField(db_column=b'filename', default=b'', upload_to=b'items/%Y/%m/%d', max_length=255, blank=True, verbose_name='file')),
+                ('resource', telemeta.models.fields.ForeignKey(related_name='related', verbose_name='fonds', to='telemeta.MediaFonds')),
+            ],
+            options={
+                'db_table': 'media_fonds_related',
+                'verbose_name': 'fonds related media',
+                'verbose_name_plural': 'fonds related media',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='MediaItem',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('title', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='title', blank=True)),
+                ('alt_title', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='original title / translation', blank=True)),
+                ('collector', telemeta.models.fields.CharField(default=b'', help_text='First name, Last name ; First name, Last name', max_length=250, verbose_name='collector', blank=True)),
+                ('recorded_from_date', telemeta.models.fields.DateField(default=None, help_text='YYYY-MM-DD', null=True, verbose_name='recording date (from)', blank=True)),
+                ('recorded_to_date', telemeta.models.fields.DateField(default=None, help_text='YYYY-MM-DD', null=True, verbose_name='recording date (until)', blank=True)),
+                ('public_access', telemeta.models.fields.CharField(default=b'metadata', max_length=16, verbose_name='access type', blank=True, choices=[(b'none', 'none'), (b'metadata', 'metadata'), (b'full', 'full')])),
+                ('location_comment', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='location details', blank=True)),
+                ('cultural_area', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='cultural area', blank=True)),
+                ('language', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='language', blank=True)),
+                ('context_comment', telemeta.models.fields.TextField(default=b'', verbose_name='Ethnographic context', blank=True)),
+                ('moda_execut', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='implementing rules', blank=True)),
+                ('author', telemeta.models.fields.CharField(default=b'', help_text='First name, Last name ; First name, Last name', max_length=250, verbose_name='author / compositor', blank=True)),
+                ('depositor', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='depositor', blank=True)),
+                ('code', telemeta.models.fields.CharField(default=b'', max_length=250, blank=True, help_text='CollectionCode_ItemCode', unique=True, verbose_name='code')),
+                ('old_code', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='original code', blank=True)),
+                ('track', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='item number', blank=True)),
+                ('collector_selection', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='collector selection', blank=True)),
+                ('collector_from_collection', telemeta.models.fields.BooleanField(default=False, verbose_name='collector as in collection')),
+                ('creator_reference', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='creator reference', blank=True)),
+                ('external_references', telemeta.models.fields.TextField(default=b'', verbose_name='published references', blank=True)),
+                ('auto_period_access', telemeta.models.fields.BooleanField(default=True, verbose_name='automatic access after a rolling period')),
+                ('comment', telemeta.models.fields.TextField(default=b'', verbose_name='remarks', blank=True)),
+                ('approx_duration', telemeta.models.fields.DurationField(default=b'0', help_text='hh:mm:ss', verbose_name='approximative duration', blank=True)),
+                ('mimetype', telemeta.models.fields.CharField(default=b'', max_length=255, verbose_name='mime type', blank=True)),
+                ('file', telemeta.models.fields.FileField(db_column=b'filename', default=b'', upload_to=b'items/%Y/%m/%d', max_length=1024, blank=True, verbose_name='file')),
+                ('url', models.URLField(max_length=512, verbose_name='URL', blank=True)),
+                ('recordist', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='recordist', blank=True)),
+                ('digitalist', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='digitalist', blank=True)),
+                ('digitization_date', telemeta.models.fields.DateField(default=None, null=True, verbose_name='digitization date', blank=True)),
+                ('publishing_date', telemeta.models.fields.DateField(default=None, null=True, verbose_name='publishing date', blank=True)),
+                ('scientist', telemeta.models.fields.CharField(default=b'', help_text='First name, Last name ; First name, Last name', max_length=250, verbose_name='scientist', blank=True)),
+                ('summary', telemeta.models.fields.TextField(default=b'', verbose_name='summary', blank=True)),
+                ('contributor', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='contributor', blank=True)),
+                ('collection', telemeta.models.fields.ForeignKey(related_name='items', verbose_name='collection', to='telemeta.MediaCollection')),
+                ('ethnic_group', telemeta.models.fields.WeakForeignKey(related_name='items', default=None, blank=True, to='telemeta.EthnicGroup', null=True, verbose_name='population / social group')),
+                ('generic_style', telemeta.models.fields.WeakForeignKey(related_name='items', default=None, blank=True, to='telemeta.GenericStyle', null=True, verbose_name='generic style')),
+                ('language_iso', telemeta.models.fields.ForeignKey(related_name='items', on_delete=django.db.models.deletion.SET_NULL, default=None, blank=True, to='telemeta.Language', null=True, verbose_name='Language (ISO norm)')),
+                ('location', telemeta.models.fields.WeakForeignKey(default=None, blank=True, to='telemeta.Location', null=True, verbose_name='location')),
+            ],
+            options={
+                'db_table': 'media_items',
+                'verbose_name': 'item',
+                'permissions': (('can_play_all_items', 'Can play all media items'), ('can_download_all_items', 'Can download all media items')),
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='MediaItemAnalysis',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('analyzer_id', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='id', blank=True)),
+                ('name', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='name', blank=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='value', blank=True)),
+                ('unit', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='unit', blank=True)),
+                ('item', telemeta.models.fields.ForeignKey(related_name='analysis', verbose_name='item', to='telemeta.MediaItem')),
+            ],
+            options={
+                'ordering': ['name'],
+                'db_table': 'media_analysis',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='MediaItemIdentifier',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('identifier', models.CharField(unique=True, max_length=255, verbose_name='identifier', blank=True)),
+                ('date_add', models.DateTimeField(auto_now_add=True, verbose_name='date added')),
+                ('date_first', models.DateTimeField(verbose_name='date of first attribution')),
+                ('date_last', models.DateTimeField(verbose_name='date of last attribution')),
+                ('date_modified', models.DateTimeField(auto_now=True, verbose_name='date modified')),
+                ('notes', models.TextField(null=True, verbose_name='notes')),
+                ('item', telemeta.models.fields.ForeignKey(related_name='identifiers', verbose_name='item', to='telemeta.MediaItem')),
+                ('type', telemeta.models.fields.WeakForeignKey(default=None, blank=True, to='telemeta.IdentifierType', null=True, verbose_name='type')),
+            ],
+            options={
+                'db_table': 'media_item_identifier',
+                'verbose_name': 'item identifier',
+                'verbose_name_plural': 'item identifiers',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='MediaItemKeyword',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('item', telemeta.models.fields.ForeignKey(related_name='keyword_relations', verbose_name='item', to='telemeta.MediaItem')),
+                ('keyword', telemeta.models.fields.ForeignKey(related_name='item_relations', verbose_name='keyword', to='telemeta.ContextKeyword')),
+            ],
+            options={
+                'db_table': 'media_item_keywords',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='MediaItemMarker',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('public_id', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='public_id', blank=True)),
+                ('time', telemeta.models.fields.FloatField(default=0, verbose_name='time (s)', blank=True)),
+                ('title', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='title', blank=True)),
+                ('date', models.DateTimeField(auto_now=True, verbose_name='date')),
+                ('description', telemeta.models.fields.TextField(default=b'', verbose_name='description', blank=True)),
+                ('author', telemeta.models.fields.ForeignKey(related_name='markers', default=None, blank=True, to=settings.AUTH_USER_MODEL, null=True, verbose_name='author')),
+                ('item', telemeta.models.fields.ForeignKey(related_name='markers', verbose_name='item', to='telemeta.MediaItem')),
+            ],
+            options={
+                'ordering': ['time'],
+                'db_table': 'media_markers',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='MediaItemPerformance',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('instruments_num', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='number', blank=True)),
+                ('musicians', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='interprets', blank=True)),
+                ('alias', telemeta.models.fields.WeakForeignKey(related_name='performances', default=None, blank=True, to='telemeta.InstrumentAlias', null=True, verbose_name='vernacular name')),
+                ('instrument', telemeta.models.fields.WeakForeignKey(related_name='performances', default=None, blank=True, to='telemeta.Instrument', null=True, verbose_name='composition')),
+                ('media_item', telemeta.models.fields.ForeignKey(related_name='performances', verbose_name='item', to='telemeta.MediaItem')),
+            ],
+            options={
+                'db_table': 'media_item_performances',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='MediaItemRelated',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('title', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='title', blank=True)),
+                ('date', models.DateTimeField(auto_now=True, verbose_name='date')),
+                ('description', telemeta.models.fields.TextField(default=b'', verbose_name='description', blank=True)),
+                ('mime_type', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='mime_type', blank=True)),
+                ('url', telemeta.models.fields.CharField(default=b'', max_length=500, verbose_name='url', blank=True)),
+                ('credits', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='credits', blank=True)),
+                ('file', telemeta.models.fields.FileField(db_column=b'filename', default=b'', upload_to=b'items/%Y/%m/%d', max_length=255, blank=True, verbose_name='file')),
+                ('item', telemeta.models.fields.ForeignKey(related_name='related', verbose_name='item', to='telemeta.MediaItem')),
+            ],
+            options={
+                'db_table': 'media_item_related',
+                'verbose_name': 'item related media',
+                'verbose_name_plural': 'item related media',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='MediaItemTranscoded',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('mimetype', models.CharField(max_length=255, verbose_name='mime_type', blank=True)),
+                ('date_added', models.DateTimeField(auto_now_add=True, verbose_name='date')),
+                ('status', models.IntegerField(default=1, verbose_name='status', choices=[(0, 'broken'), (1, 'pending'), (2, 'processing'), (3, 'done'), (5, 'ready')])),
+                ('file', models.FileField(upload_to=b'items/%Y/%m/%d', max_length=1024, verbose_name='file', blank=True)),
+                ('item', models.ForeignKey(related_name='transcoded', verbose_name='item', to='telemeta.MediaItem')),
+            ],
+            options={
+                'db_table': 'telemeta_media_transcoded',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='MediaItemTranscodingFlag',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('mime_type', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='mime_type', blank=True)),
+                ('date', models.DateTimeField(auto_now=True, verbose_name='date')),
+                ('value', telemeta.models.fields.BooleanField(default=False, verbose_name='transcoded')),
+                ('item', telemeta.models.fields.ForeignKey(related_name='transcoding', verbose_name='item', to='telemeta.MediaItem')),
+            ],
+            options={
+                'db_table': 'media_transcoding',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='MediaPart',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('title', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='title', blank=True)),
+                ('start', telemeta.models.fields.FloatField(default=0, verbose_name='start', blank=True)),
+                ('end', telemeta.models.fields.FloatField(default=0, verbose_name='end', blank=True)),
+                ('item', telemeta.models.fields.ForeignKey(related_name='parts', verbose_name='item', to='telemeta.MediaItem')),
+            ],
+            options={
+                'db_table': 'media_parts',
+                'verbose_name': 'item part',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='MediaType',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'media_type',
+                'verbose_name': 'media type',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='MetadataAuthor',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'metadata_authors',
+                'verbose_name': 'record author',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='MetadataWriter',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'metadata_writers',
+                'verbose_name': 'record writer',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='NumberOfChannels',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'original_channel_number',
+                'verbose_name': 'number of channels',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='Organization',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'organization',
+                'verbose_name': 'organization',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='OriginalFormat',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'original_format',
+                'verbose_name': 'original format',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='PhysicalFormat',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'physical_formats',
+                'verbose_name': 'archive format',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='Playlist',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('public_id', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='public_id', blank=True)),
+                ('title', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='title', blank=True)),
+                ('description', telemeta.models.fields.TextField(default=b'', verbose_name='description', blank=True)),
+                ('author', telemeta.models.fields.ForeignKey(related_name='playlists', db_column=b'author', to=settings.AUTH_USER_MODEL)),
+            ],
+            options={
+                'db_table': 'playlists',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='PlaylistResource',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('public_id', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='public_id', blank=True)),
+                ('resource_type', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='resource_type', blank=True, choices=[(b'item', b'item'), (b'collection', b'collection'), (b'marker', b'marker'), (b'fonds', b'fonds'), (b'corpus', b'corpus')])),
+                ('resource_id', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='resource_id', blank=True)),
+                ('playlist', telemeta.models.fields.ForeignKey(related_name='resources', verbose_name='playlist', to='telemeta.Playlist')),
+            ],
+            options={
+                'db_table': 'playlist_resources',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='Publisher',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'publishers',
+                'verbose_name': 'publisher',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='PublisherCollection',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='value', blank=True)),
+                ('publisher', telemeta.models.fields.ForeignKey(related_name='publisher_collections', verbose_name='publisher', to='telemeta.Publisher')),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'publisher_collections',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='PublishingStatus',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'publishing_status',
+                'verbose_name': 'secondary edition',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='RecordingContext',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'recording_contexts',
+                'verbose_name': 'recording context',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='Revision',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('element_type', telemeta.models.fields.CharField(default=b'', max_length=16, verbose_name='element type', blank=True, choices=[(b'collection', b'collection'), (b'item', b'item'), (b'part', b'part'), (b'marker', b'marker'), (b'media', b'media'), (b'fonds', b'fonds'), (b'corpus', b'corpus')])),
+                ('element_id', telemeta.models.fields.IntegerField(default=0, verbose_name='element identifier', blank=True)),
+                ('change_type', telemeta.models.fields.CharField(default=b'', max_length=16, verbose_name='modification type', blank=True, choices=[(b'import', b'import'), (b'create', b'create'), (b'update', b'update'), (b'delete', b'delete')])),
+                ('time', models.DateTimeField(auto_now_add=True, verbose_name='time')),
+                ('user', telemeta.models.fields.ForeignKey(related_name='revisions', db_column=b'username', verbose_name='user', to=settings.AUTH_USER_MODEL)),
+            ],
+            options={
+                'ordering': ['-time'],
+                'db_table': 'revisions',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='Rights',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'rights',
+                'verbose_name': 'rights',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='Search',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('date', models.DateTimeField(auto_now_add=True, verbose_name='date')),
+                ('description', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='Description', blank=True)),
+                ('criteria', models.ManyToManyField(related_name='search', verbose_name='criteria', to='telemeta.Criteria', blank=True)),
+                ('username', telemeta.models.fields.ForeignKey(related_name='searches', db_column=b'username', to=settings.AUTH_USER_MODEL)),
+            ],
+            options={
+                'ordering': ['-date'],
+                'db_table': 'searches',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='Status',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'media_status',
+                'verbose_name': 'collection status',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='TapeLength',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'tape_length',
+                'verbose_name': 'tape length (cm)',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='TapeSpeed',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'tape_speed',
+                'verbose_name': 'tape speed (cm/s)',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='TapeVendor',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'tape_vendor',
+                'verbose_name': 'tape brand',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='TapeWheelDiameter',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'tape_wheel_diameter',
+                'verbose_name': 'tape wheel diameter (cm)',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='TapeWidth',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'tape_width',
+                'verbose_name': 'tape width (inch)',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='Topic',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'topic',
+                'verbose_name': 'topic',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.CreateModel(
+            name='UserProfile',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('institution', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='Institution', blank=True)),
+                ('department', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='Department', blank=True)),
+                ('attachment', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='Attachment', blank=True)),
+                ('function', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='Function', blank=True)),
+                ('address', telemeta.models.fields.TextField(default=b'', verbose_name='Address', blank=True)),
+                ('telephone', telemeta.models.fields.CharField(default=b'', max_length=250, verbose_name='Telephone', blank=True)),
+                ('expiration_date', telemeta.models.fields.DateField(default=None, null=True, verbose_name='Expiration_date', blank=True)),
+                ('user', telemeta.models.fields.ForeignKey(to=settings.AUTH_USER_MODEL, unique=True)),
+            ],
+            options={
+                'db_table': 'profiles',
+                'permissions': (('can_view_users_and_profiles', 'Can view other users and any profile'),),
+            },
+        ),
+        migrations.CreateModel(
+            name='VernacularStyle',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('value', telemeta.models.fields.CharField(default=b'', unique=True, max_length=250, verbose_name='value', blank=True)),
+                ('notes', telemeta.models.fields.TextField(default=b'', verbose_name='notes', blank=True)),
+            ],
+            options={
+                'ordering': ['value'],
+                'db_table': 'vernacular_styles',
+                'verbose_name': 'vernacular style',
+            },
+            bases=(models.Model, dirtyfields.dirtyfields.DirtyFieldsMixin),
+        ),
+        migrations.AddField(
+            model_name='mediaitem',
+            name='media_type',
+            field=telemeta.models.fields.WeakForeignKey(related_name='items', default=None, blank=True, to='telemeta.MediaType', null=True, verbose_name='media type'),
+        ),
+        migrations.AddField(
+            model_name='mediaitem',
+            name='organization',
+            field=telemeta.models.fields.WeakForeignKey(default=None, blank=True, to='telemeta.Organization', null=True, verbose_name='organization'),
+        ),
+        migrations.AddField(
+            model_name='mediaitem',
+            name='rights',
+            field=telemeta.models.fields.WeakForeignKey(default=None, blank=True, to='telemeta.Rights', null=True, verbose_name='rights'),
+        ),
+        migrations.AddField(
+            model_name='mediaitem',
+            name='topic',
+            field=telemeta.models.fields.WeakForeignKey(default=None, blank=True, to='telemeta.Topic', null=True, verbose_name='topic'),
+        ),
+        migrations.AddField(
+            model_name='mediaitem',
+            name='vernacular_style',
+            field=telemeta.models.fields.WeakForeignKey(related_name='items', default=None, blank=True, to='telemeta.VernacularStyle', null=True, verbose_name='vernacular style'),
+        ),
+        migrations.AddField(
+            model_name='mediacollection',
+            name='media_type',
+            field=telemeta.models.fields.WeakForeignKey(related_name='collections', default=None, blank=True, to='telemeta.MediaType', null=True, verbose_name='media type'),
+        ),
+        migrations.AddField(
+            model_name='mediacollection',
+            name='metadata_author',
+            field=telemeta.models.fields.WeakForeignKey(related_name='collections', default=None, blank=True, to='telemeta.MetadataAuthor', null=True, verbose_name='record author'),
+        ),
+        migrations.AddField(
+            model_name='mediacollection',
+            name='metadata_writer',
+            field=telemeta.models.fields.WeakForeignKey(related_name='collections', default=None, blank=True, to='telemeta.MetadataWriter', null=True, verbose_name='record writer'),
+        ),
+        migrations.AddField(
+            model_name='mediacollection',
+            name='original_format',
+            field=telemeta.models.fields.WeakForeignKey(related_name='collections', default=None, blank=True, to='telemeta.OriginalFormat', null=True, verbose_name='original format'),
+        ),
+        migrations.AddField(
+            model_name='mediacollection',
+            name='physical_format',
+            field=telemeta.models.fields.WeakForeignKey(related_name='collections', default=None, blank=True, to='telemeta.PhysicalFormat', null=True, verbose_name='archive format'),
+        ),
+        migrations.AddField(
+            model_name='mediacollection',
+            name='publisher',
+            field=telemeta.models.fields.WeakForeignKey(related_name='collections', default=None, blank=True, to='telemeta.Publisher', null=True, verbose_name='publisher'),
+        ),
+        migrations.AddField(
+            model_name='mediacollection',
+            name='publisher_collection',
+            field=telemeta.models.fields.WeakForeignKey(related_name='collections', default=None, blank=True, to='telemeta.PublisherCollection', null=True, verbose_name='publisher collection'),
+        ),
+        migrations.AddField(
+            model_name='mediacollection',
+            name='publishing_status',
+            field=telemeta.models.fields.WeakForeignKey(related_name='collections', default=None, blank=True, to='telemeta.PublishingStatus', null=True, verbose_name='secondary edition'),
+        ),
+        migrations.AddField(
+            model_name='mediacollection',
+            name='recording_context',
+            field=telemeta.models.fields.WeakForeignKey(related_name='collections', default=None, blank=True, to='telemeta.RecordingContext', null=True, verbose_name='recording context'),
+        ),
+        migrations.AddField(
+            model_name='mediacollection',
+            name='status',
+            field=telemeta.models.fields.WeakForeignKey(related_name='collections', default=None, blank=True, to='telemeta.Status', null=True, verbose_name='collection status'),
+        ),
+        migrations.AddField(
+            model_name='location',
+            name='complete_type',
+            field=telemeta.models.fields.ForeignKey(related_name='locations', verbose_name='complete type', to='telemeta.LocationType'),
+        ),
+        migrations.AddField(
+            model_name='location',
+            name='current_location',
+            field=telemeta.models.fields.WeakForeignKey(related_name='past_names', default=None, blank=True, to='telemeta.Location', null=True, verbose_name='current location'),
+        ),
+        migrations.AddField(
+            model_name='format',
+            name='item',
+            field=telemeta.models.fields.ForeignKey(related_name='format', on_delete=django.db.models.deletion.SET_NULL, default=None, blank=True, to='telemeta.MediaItem', null=True, verbose_name='item'),
+        ),
+        migrations.AddField(
+            model_name='format',
+            name='original_channels',
+            field=telemeta.models.fields.WeakForeignKey(related_name='format', default=None, blank=True, to='telemeta.NumberOfChannels', null=True, verbose_name='number of channels'),
+        ),
+        migrations.AddField(
+            model_name='format',
+            name='original_location',
+            field=telemeta.models.fields.ForeignKey(related_name='format', on_delete=django.db.models.deletion.SET_NULL, default=None, blank=True, to='telemeta.Location', null=True, verbose_name='original location'),
+        ),
+        migrations.AddField(
+            model_name='format',
+            name='physical_format',
+            field=telemeta.models.fields.WeakForeignKey(related_name='format', default=None, blank=True, to='telemeta.PhysicalFormat', null=True, verbose_name='physical format'),
+        ),
+        migrations.AddField(
+            model_name='format',
+            name='tape_speed',
+            field=telemeta.models.fields.WeakForeignKey(related_name='format', default=None, blank=True, to='telemeta.TapeSpeed', null=True, verbose_name='tape speed (cm/s)'),
+        ),
+        migrations.AddField(
+            model_name='format',
+            name='tape_vendor',
+            field=telemeta.models.fields.WeakForeignKey(related_name='format', default=None, blank=True, to='telemeta.TapeVendor', null=True, verbose_name='tape vendor'),
+        ),
+        migrations.AddField(
+            model_name='format',
+            name='tape_wheel_diameter',
+            field=telemeta.models.fields.WeakForeignKey(related_name='format', default=None, blank=True, to='telemeta.TapeWheelDiameter', null=True, verbose_name='tape wheel diameter (cm)'),
+        ),
+        migrations.AlterUniqueTogether(
+            name='mediaitemkeyword',
+            unique_together=set([('item', 'keyword')]),
+        ),
+        migrations.AlterUniqueTogether(
+            name='mediaitemidentifier',
+            unique_together=set([('identifier', 'item')]),
+        ),
+        migrations.AlterUniqueTogether(
+            name='mediacollectionidentifier',
+            unique_together=set([('identifier', 'collection')]),
+        ),
+        migrations.AlterUniqueTogether(
+            name='locationrelation',
+            unique_together=set([('location', 'ancestor_location')]),
+        ),
+        migrations.AlterUniqueTogether(
+            name='locationalias',
+            unique_together=set([('location', 'alias')]),
+        ),
+        migrations.AlterUniqueTogether(
+            name='instrumentrelation',
+            unique_together=set([('instrument', 'parent_instrument')]),
+        ),
+        migrations.AlterUniqueTogether(
+            name='instrumentaliasrelation',
+            unique_together=set([('alias', 'instrument')]),
+        ),
+        migrations.AlterUniqueTogether(
+            name='ethnicgroupalias',
+            unique_together=set([('ethnic_group', 'value')]),
+        ),
+    ]
diff --git a/telemeta/migrations/__init__.py b/telemeta/migrations/__init__.py
new file mode 100644 (file)
index 0000000..e69de29