From: Guillaume Pellerin Date: Tue, 21 Jan 2014 23:47:40 +0000 (+0100) Subject: add a URLField to MediaItem X-Git-Tag: 1.4.6~8^2~10 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=917a0131a91b1585713ed9d203d8458a2d83c1db;p=telemeta.git add a URLField to MediaItem add media streaming support from URLs, FIXME: resource sound properties --- diff --git a/example/sandbox/settings.py b/example/sandbox/settings.py index 7af4de45..ca2f9a87 100644 --- a/example/sandbox/settings.py +++ b/example/sandbox/settings.py @@ -157,9 +157,6 @@ TELEMETA_DOWNLOAD_FORMATS = ('wav', 'mp3', 'ogg', 'flac') TELEMETA_PUBLIC_ACCESS_PERIOD = 51 TELEMETA_DEFAULT_WAVEFORM_SIZES = ['360x130', '640x130'] -TIMESIDE_DEFAULT_GRAPHER_ID = 'waveform_centroid' -TIMESIDE_AUTO_ZOOM = True - AUTH_PROFILE_MODULE = 'telemeta.userprofile' SESSION_EXPIRE_AT_BROWSER_CLOSE = False @@ -169,3 +166,5 @@ LOGIN_REDIRECT_URL = reverse_lazy('telemeta-desk-lists') EMAIL_HOST = 'localhost' DEFAULT_FROM_EMAIL = 'webmaster@parisson.com' +TIMESIDE_DEFAULT_GRAPHER_ID = 'waveform_centroid' +TIMESIDE_AUTO_ZOOM = True diff --git a/telemeta/management/commands/telemeta-import-items-from-url.py b/telemeta/management/commands/telemeta-import-items-from-url.py new file mode 100644 index 00000000..8e12bd3a --- /dev/null +++ b/telemeta/management/commands/telemeta-import-items-from-url.py @@ -0,0 +1,43 @@ +from optparse import make_option +from django.conf import settings +from django.core.management.base import BaseCommand, CommandError +from django.core.files.base import ContentFile +from telemeta.models import * +from telemeta.util.unaccent import unaccent +from telemeta.util.url import URLMediaParser +import os + + +class Command(BaseCommand): + help = "import media files from a URL directory into a collection" + args = "collection_code URL" + + def handle(self, *args, **options): + collection_code = args[-2] + url = args[-1] + + parser = URLMediaParser(url) + urls = parser.get_urls() + collections = MediaCollection.objects.filter(code=collection_code) + if not collections: + collection = MediaCollection(code=collection_code, title=collection_code) + collection.public_access = 'full' + collection.save() + print 'collection created: ' + collection_code + else: + collection = collections[0] + print 'using collection: ' + collection.code + + for url in urls: + filename = url.split('/')[-1] + name, ext = os.path.splitext(filename) + items = MediaItem.objects.filter(code=name) + if not items: + item = MediaItem(collection=collection, code=name) + item.title = name + item.url = url + item.public_access = 'full' + item.save() + print 'item created: ' + item.code + else: + print 'item already exists: ' + items[0].code diff --git a/telemeta/migrations/0032_auto__add_field_mediaitem_url.py b/telemeta/migrations/0032_auto__add_field_mediaitem_url.py new file mode 100644 index 00000000..1ddfef37 --- /dev/null +++ b/telemeta/migrations/0032_auto__add_field_mediaitem_url.py @@ -0,0 +1,541 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding field 'MediaItem.url' + db.add_column('media_items', 'url', + self.gf('django.db.models.fields.URLField')(default='', max_length=512, blank=True), + keep_default=False) + + + def backwards(self, orm): + # Deleting field 'MediaItem.url' + db.delete_column('media_items', 'url') + + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + 'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + 'telemeta.acquisitionmode': { + 'Meta': {'ordering': "['value']", 'object_name': 'AcquisitionMode', 'db_table': "'acquisition_modes'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.adconversion': { + 'Meta': {'ordering': "['value']", 'object_name': 'AdConversion', 'db_table': "'ad_conversions'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.contextkeyword': { + 'Meta': {'ordering': "['value']", 'object_name': 'ContextKeyword', 'db_table': "'context_keywords'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.criteria': { + 'Meta': {'object_name': 'Criteria', 'db_table': "'search_criteria'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'key': ('telemeta.models.core.CharField', [], {'max_length': '250'}), + 'value': ('telemeta.models.core.CharField', [], {'max_length': '250'}) + }, + 'telemeta.ethnicgroup': { + 'Meta': {'ordering': "['value']", 'object_name': 'EthnicGroup', 'db_table': "'ethnic_groups'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.ethnicgroupalias': { + 'Meta': {'ordering': "['ethnic_group__value']", 'unique_together': "(('ethnic_group', 'value'),)", 'object_name': 'EthnicGroupAlias', 'db_table': "'ethnic_group_aliases'"}, + 'ethnic_group': ('telemeta.models.core.ForeignKey', [], {'related_name': "'aliases'", 'to': "orm['telemeta.EthnicGroup']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'max_length': '250'}) + }, + 'telemeta.format': { + 'Meta': {'object_name': 'Format', 'db_table': "'media_formats'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'item': ('telemeta.models.core.ForeignKey', [], {'related_name': "'format'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['telemeta.MediaItem']", 'blank': 'True', 'null': 'True'}), + 'original_audio_quality': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'original_channels': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'format'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.NumberOfChannels']"}), + 'original_code': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'original_comments': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'original_location': ('telemeta.models.core.ForeignKey', [], {'related_name': "'format'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['telemeta.Location']", 'blank': 'True', 'null': 'True'}), + 'original_number': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'original_state': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'original_status': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'physical_format': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'format'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.PhysicalFormat']"}), + 'recording_system': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'sticker_presence': ('telemeta.models.core.BooleanField', [], {'default': 'False'}), + 'tape_reference': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'tape_speed': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'format'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.TapeSpeed']"}), + 'tape_thickness': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'tape_vendor': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'format'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.TapeVendor']"}), + 'tape_wheel_diameter': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'format'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.TapeWheelDiameter']"}) + }, + 'telemeta.genericstyle': { + 'Meta': {'ordering': "['value']", 'object_name': 'GenericStyle', 'db_table': "'generic_styles'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.instrument': { + 'Meta': {'object_name': 'Instrument', 'db_table': "'instruments'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('telemeta.models.core.CharField', [], {'max_length': '250'}) + }, + 'telemeta.instrumentalias': { + 'Meta': {'object_name': 'InstrumentAlias', 'db_table': "'instrument_aliases'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('telemeta.models.core.CharField', [], {'max_length': '250'}) + }, + 'telemeta.instrumentaliasrelation': { + 'Meta': {'unique_together': "(('alias', 'instrument'),)", 'object_name': 'InstrumentAliasRelation', 'db_table': "'instrument_alias_relations'"}, + 'alias': ('telemeta.models.core.ForeignKey', [], {'related_name': "'other_name'", 'to': "orm['telemeta.InstrumentAlias']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'instrument': ('telemeta.models.core.ForeignKey', [], {'related_name': "'relation'", 'to': "orm['telemeta.Instrument']"}) + }, + 'telemeta.instrumentrelation': { + 'Meta': {'unique_together': "(('instrument', 'parent_instrument'),)", 'object_name': 'InstrumentRelation', 'db_table': "'instrument_relations'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'instrument': ('telemeta.models.core.ForeignKey', [], {'related_name': "'parent_relation'", 'to': "orm['telemeta.Instrument']"}), + 'parent_instrument': ('telemeta.models.core.ForeignKey', [], {'related_name': "'child_relation'", 'to': "orm['telemeta.Instrument']"}) + }, + 'telemeta.language': { + 'Meta': {'ordering': "['name']", 'object_name': 'Language', 'db_table': "'languages'"}, + 'comment': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'identifier': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '3', 'blank': 'True'}), + 'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'part1': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '1', 'blank': 'True'}), + 'part2B': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '3', 'blank': 'True'}), + 'part2T': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '3', 'blank': 'True'}), + 'scope': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '1', 'blank': 'True'}), + 'type': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '1', 'blank': 'True'}) + }, + 'telemeta.legalright': { + 'Meta': {'ordering': "['value']", 'object_name': 'LegalRight', 'db_table': "'legal_rights'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.location': { + 'Meta': {'ordering': "['name']", 'object_name': 'Location', 'db_table': "'locations'"}, + 'complete_type': ('telemeta.models.core.ForeignKey', [], {'related_name': "'locations'", 'to': "orm['telemeta.LocationType']"}), + 'current_location': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'past_names'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.Location']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_authoritative': ('telemeta.models.core.BooleanField', [], {'default': 'False'}), + 'latitude': ('telemeta.models.core.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'longitude': ('telemeta.models.core.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'name': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '150'}), + 'type': ('telemeta.models.core.IntegerField', [], {'default': '0', 'db_index': 'True', 'blank': 'True'}) + }, + 'telemeta.locationalias': { + 'Meta': {'ordering': "['alias']", 'unique_together': "(('location', 'alias'),)", 'object_name': 'LocationAlias', 'db_table': "'location_aliases'"}, + 'alias': ('telemeta.models.core.CharField', [], {'max_length': '150'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_authoritative': ('telemeta.models.core.BooleanField', [], {'default': 'False'}), + 'location': ('telemeta.models.core.ForeignKey', [], {'related_name': "'aliases'", 'to': "orm['telemeta.Location']"}) + }, + 'telemeta.locationrelation': { + 'Meta': {'ordering': "['ancestor_location__name']", 'unique_together': "(('location', 'ancestor_location'),)", 'object_name': 'LocationRelation', 'db_table': "'location_relations'"}, + 'ancestor_location': ('telemeta.models.core.ForeignKey', [], {'related_name': "'descendant_relations'", 'to': "orm['telemeta.Location']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_authoritative': ('telemeta.models.core.BooleanField', [], {'default': 'False'}), + 'is_direct': ('telemeta.models.core.BooleanField', [], {'default': 'False', 'db_index': 'True'}), + 'location': ('telemeta.models.core.ForeignKey', [], {'related_name': "'ancestor_relations'", 'to': "orm['telemeta.Location']"}) + }, + 'telemeta.locationtype': { + 'Meta': {'ordering': "['name']", 'object_name': 'LocationType', 'db_table': "'location_types'"}, + 'code': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '64'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('telemeta.models.core.CharField', [], {'max_length': '150'}) + }, + 'telemeta.mediacollection': { + 'Meta': {'ordering': "['code']", 'object_name': 'MediaCollection', 'db_table': "'media_collections'"}, + 'a_informer_07_03': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'acquisition_mode': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.AcquisitionMode']"}), + 'ad_conversion': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.AdConversion']"}), + 'alt_ids': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'alt_title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'approx_duration': ('telemeta.models.core.DurationField', [], {'default': "'0'", 'blank': 'True'}), + 'auto_period_access': ('telemeta.models.core.BooleanField', [], {'default': 'True'}), + 'booklet_author': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'booklet_description': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'cnrs_contributor': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'code': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}), + 'collector': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'collector_is_creator': ('telemeta.models.core.BooleanField', [], {'default': 'False'}), + 'comment': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'conservation_site': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'creator': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'doctype_code': ('telemeta.models.core.IntegerField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'external_references': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_published': ('telemeta.models.core.BooleanField', [], {'default': 'False'}), + 'items_done': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'legal_rights': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.LegalRight']"}), + 'metadata_author': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.MetadataAuthor']"}), + 'metadata_writer': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.MetadataWriter']"}), + 'old_code': ('telemeta.models.core.CharField', [], {'default': 'None', 'max_length': '250', 'null': 'True', 'blank': 'True'}), + 'physical_format': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.PhysicalFormat']"}), + 'physical_items_num': ('telemeta.models.core.IntegerField', [], {'default': '0', 'blank': 'True'}), + 'public_access': ('telemeta.models.core.CharField', [], {'default': "'metadata'", 'max_length': '16', 'blank': 'True'}), + 'publisher': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.Publisher']"}), + 'publisher_collection': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.PublisherCollection']"}), + 'publisher_serial': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'publishing_status': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.PublishingStatus']"}), + 'recorded_from_year': ('telemeta.models.core.IntegerField', [], {'default': '0', 'blank': 'True'}), + 'recorded_to_year': ('telemeta.models.core.IntegerField', [], {'default': '0', 'blank': 'True'}), + 'recording_context': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'collections'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.RecordingContext']"}), + 'reference': ('telemeta.models.core.CharField', [], {'default': 'None', 'max_length': '250', 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'state': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'title': ('telemeta.models.core.CharField', [], {'max_length': '250'}), + 'travail': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'year_published': ('telemeta.models.core.IntegerField', [], {'default': '0', 'blank': 'True'}) + }, + 'telemeta.mediacollectionrelated': { + 'Meta': {'object_name': 'MediaCollectionRelated', 'db_table': "'media_collection_related'"}, + 'collection': ('telemeta.models.core.ForeignKey', [], {'related_name': "'related'", 'to': "orm['telemeta.MediaCollection']"}), + 'credits': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'date': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now': 'True', 'null': 'True', 'blank': 'True'}), + 'description': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'file': ('telemeta.models.core.FileField', [], {'default': "''", 'max_length': '255', 'db_column': "'filename'", 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'mime_type': ('telemeta.models.core.CharField', [], {'default': 'None', 'max_length': '250', 'null': 'True', 'blank': 'True'}), + 'title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'url': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '500', 'blank': 'True'}) + }, + 'telemeta.mediacorpus': { + 'Meta': {'object_name': 'MediaCorpus', 'db_table': "'media_corpus'"}, + 'children': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'corpus'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['telemeta.MediaCollection']"}), + 'code': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}), + 'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'descriptions': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'public_access': ('telemeta.models.core.CharField', [], {'default': "'metadata'", 'max_length': '16', 'blank': 'True'}), + 'recorded_from_year': ('telemeta.models.core.IntegerField', [], {'default': '0', 'blank': 'True'}), + 'recorded_to_year': ('telemeta.models.core.IntegerField', [], {'default': '0', 'blank': 'True'}), + 'title': ('telemeta.models.core.CharField', [], {'max_length': '250'}) + }, + 'telemeta.mediacorpusrelated': { + 'Meta': {'object_name': 'MediaCorpusRelated', 'db_table': "'media_corpus_related'"}, + 'credits': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'date': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now': 'True', 'null': 'True', 'blank': 'True'}), + 'description': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'file': ('telemeta.models.core.FileField', [], {'default': "''", 'max_length': '255', 'db_column': "'filename'", 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'mime_type': ('telemeta.models.core.CharField', [], {'default': 'None', 'max_length': '250', 'null': 'True', 'blank': 'True'}), + 'resource': ('telemeta.models.core.ForeignKey', [], {'related_name': "'related'", 'to': "orm['telemeta.MediaCorpus']"}), + 'title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'url': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '500', 'blank': 'True'}) + }, + 'telemeta.mediafonds': { + 'Meta': {'object_name': 'MediaFonds', 'db_table': "'media_fonds'"}, + 'children': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'fonds'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['telemeta.MediaCorpus']"}), + 'code': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}), + 'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'descriptions': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'public_access': ('telemeta.models.core.CharField', [], {'default': "'metadata'", 'max_length': '16', 'blank': 'True'}), + 'title': ('telemeta.models.core.CharField', [], {'max_length': '250'}) + }, + 'telemeta.mediafondsrelated': { + 'Meta': {'object_name': 'MediaFondsRelated', 'db_table': "'media_fonds_related'"}, + 'credits': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'date': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now': 'True', 'null': 'True', 'blank': 'True'}), + 'description': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'file': ('telemeta.models.core.FileField', [], {'default': "''", 'max_length': '255', 'db_column': "'filename'", 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'mime_type': ('telemeta.models.core.CharField', [], {'default': 'None', 'max_length': '250', 'null': 'True', 'blank': 'True'}), + 'resource': ('telemeta.models.core.ForeignKey', [], {'related_name': "'related'", 'to': "orm['telemeta.MediaFonds']"}), + 'title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'url': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '500', 'blank': 'True'}) + }, + 'telemeta.mediaitem': { + 'Meta': {'object_name': 'MediaItem', 'db_table': "'media_items'"}, + 'alt_title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'approx_duration': ('telemeta.models.core.DurationField', [], {'default': "'0'", 'blank': 'True'}), + 'author': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'auto_period_access': ('telemeta.models.core.BooleanField', [], {'default': 'True'}), + 'code': ('telemeta.models.core.CharField', [], {'default': "''", 'unique': 'True', 'max_length': '250', 'blank': 'True'}), + 'collection': ('telemeta.models.core.ForeignKey', [], {'related_name': "'items'", 'to': "orm['telemeta.MediaCollection']"}), + 'collector': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'collector_from_collection': ('telemeta.models.core.BooleanField', [], {'default': 'False'}), + 'collector_selection': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'comment': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'context_comment': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'contributor': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'copied_from_item': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'copies'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.MediaItem']"}), + 'creator_reference': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'cultural_area': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'depositor': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'digitalist': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'digitization_date': ('telemeta.models.core.DateField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'ethnic_group': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'items'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.EthnicGroup']"}), + 'external_references': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'file': ('telemeta.models.core.FileField', [], {'default': "''", 'max_length': '1024', 'db_column': "'filename'", 'blank': 'True'}), + 'generic_style': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'items'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.GenericStyle']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'language': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'language_iso': ('telemeta.models.core.ForeignKey', [], {'related_name': "'items'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['telemeta.Language']", 'blank': 'True', 'null': 'True'}), + 'location': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'to': "orm['telemeta.Location']", 'null': 'True', 'blank': 'True'}), + 'location_comment': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'mimetype': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'moda_execut': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'old_code': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'organization': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'to': "orm['telemeta.Organization']", 'null': 'True', 'blank': 'True'}), + 'public_access': ('telemeta.models.core.CharField', [], {'default': "'metadata'", 'max_length': '16', 'blank': 'True'}), + 'publishing_date': ('telemeta.models.core.DateField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'recorded_from_date': ('telemeta.models.core.DateField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'recorded_to_date': ('telemeta.models.core.DateField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'recordist': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'rights': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'to': "orm['telemeta.Rights']", 'null': 'True', 'blank': 'True'}), + 'scientist': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'summary': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'topic': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'to': "orm['telemeta.Topic']", 'null': 'True', 'blank': 'True'}), + 'track': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'url': ('django.db.models.fields.URLField', [], {'max_length': '512', 'blank': 'True'}), + 'vernacular_style': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'items'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.VernacularStyle']"}) + }, + 'telemeta.mediaitemanalysis': { + 'Meta': {'ordering': "['name']", 'object_name': 'MediaItemAnalysis', 'db_table': "'media_analysis'"}, + 'analyzer_id': ('telemeta.models.core.CharField', [], {'max_length': '250'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'item': ('telemeta.models.core.ForeignKey', [], {'related_name': "'analysis'", 'to': "orm['telemeta.MediaItem']"}), + 'name': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'unit': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}) + }, + 'telemeta.mediaitemkeyword': { + 'Meta': {'unique_together': "(('item', 'keyword'),)", 'object_name': 'MediaItemKeyword', 'db_table': "'media_item_keywords'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'item': ('telemeta.models.core.ForeignKey', [], {'related_name': "'keyword_relations'", 'to': "orm['telemeta.MediaItem']"}), + 'keyword': ('telemeta.models.core.ForeignKey', [], {'related_name': "'item_relations'", 'to': "orm['telemeta.ContextKeyword']"}) + }, + 'telemeta.mediaitemmarker': { + 'Meta': {'ordering': "['time']", 'object_name': 'MediaItemMarker', 'db_table': "'media_markers'"}, + 'author': ('telemeta.models.core.ForeignKey', [], {'default': 'None', 'related_name': "'markers'", 'null': 'True', 'blank': 'True', 'to': "orm['auth.User']"}), + 'date': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now': 'True', 'null': 'True', 'blank': 'True'}), + 'description': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'item': ('telemeta.models.core.ForeignKey', [], {'related_name': "'markers'", 'to': "orm['telemeta.MediaItem']"}), + 'public_id': ('telemeta.models.core.CharField', [], {'max_length': '250'}), + 'time': ('telemeta.models.core.FloatField', [], {'default': '0', 'blank': 'True'}), + 'title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}) + }, + 'telemeta.mediaitemperformance': { + 'Meta': {'object_name': 'MediaItemPerformance', 'db_table': "'media_item_performances'"}, + 'alias': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'performances'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.InstrumentAlias']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'instrument': ('telemeta.models.core.WeakForeignKey', [], {'default': 'None', 'related_name': "'performances'", 'null': 'True', 'blank': 'True', 'to': "orm['telemeta.Instrument']"}), + 'instruments_num': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'media_item': ('telemeta.models.core.ForeignKey', [], {'related_name': "'performances'", 'to': "orm['telemeta.MediaItem']"}), + 'musicians': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}) + }, + 'telemeta.mediaitemrelated': { + 'Meta': {'object_name': 'MediaItemRelated', 'db_table': "'media_item_related'"}, + 'credits': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'date': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now': 'True', 'null': 'True', 'blank': 'True'}), + 'description': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'file': ('telemeta.models.core.FileField', [], {'default': "''", 'max_length': '255', 'db_column': "'filename'", 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'item': ('telemeta.models.core.ForeignKey', [], {'related_name': "'related'", 'to': "orm['telemeta.MediaItem']"}), + 'mime_type': ('telemeta.models.core.CharField', [], {'default': 'None', 'max_length': '250', 'null': 'True', 'blank': 'True'}), + 'title': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'url': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '500', 'blank': 'True'}) + }, + 'telemeta.mediaitemtranscoded': { + 'Meta': {'object_name': 'MediaItemTranscoded', 'db_table': "'telemeta_media_transcoded'"}, + 'date_added': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'file': ('django.db.models.fields.files.FileField', [], {'max_length': '1024', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'item': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'transcoded'", 'to': "orm['telemeta.MediaItem']"}), + 'mimetype': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'status': ('django.db.models.fields.IntegerField', [], {'default': '1'}) + }, + 'telemeta.mediaitemtranscodingflag': { + 'Meta': {'object_name': 'MediaItemTranscodingFlag', 'db_table': "'media_transcoding'"}, + 'date': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now': 'True', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'item': ('telemeta.models.core.ForeignKey', [], {'related_name': "'transcoding'", 'to': "orm['telemeta.MediaItem']"}), + 'mime_type': ('telemeta.models.core.CharField', [], {'max_length': '250'}), + 'value': ('telemeta.models.core.BooleanField', [], {'default': 'False'}) + }, + 'telemeta.mediapart': { + 'Meta': {'object_name': 'MediaPart', 'db_table': "'media_parts'"}, + 'end': ('telemeta.models.core.FloatField', [], {}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'item': ('telemeta.models.core.ForeignKey', [], {'related_name': "'parts'", 'to': "orm['telemeta.MediaItem']"}), + 'start': ('telemeta.models.core.FloatField', [], {}), + 'title': ('telemeta.models.core.CharField', [], {'max_length': '250'}) + }, + 'telemeta.metadataauthor': { + 'Meta': {'ordering': "['value']", 'object_name': 'MetadataAuthor', 'db_table': "'metadata_authors'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.metadatawriter': { + 'Meta': {'ordering': "['value']", 'object_name': 'MetadataWriter', 'db_table': "'metadata_writers'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.numberofchannels': { + 'Meta': {'ordering': "['value']", 'object_name': 'NumberOfChannels', 'db_table': "'original_channel_number'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.organization': { + 'Meta': {'ordering': "['value']", 'object_name': 'Organization', 'db_table': "'organization'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.physicalformat': { + 'Meta': {'ordering': "['value']", 'object_name': 'PhysicalFormat', 'db_table': "'physical_formats'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.playlist': { + 'Meta': {'object_name': 'Playlist', 'db_table': "'playlists'"}, + 'author': ('telemeta.models.core.ForeignKey', [], {'related_name': "'playlists'", 'db_column': "'author'", 'to': "orm['auth.User']"}), + 'description': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'public_id': ('telemeta.models.core.CharField', [], {'max_length': '250'}), + 'title': ('telemeta.models.core.CharField', [], {'max_length': '250'}) + }, + 'telemeta.playlistresource': { + 'Meta': {'object_name': 'PlaylistResource', 'db_table': "'playlist_resources'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'playlist': ('telemeta.models.core.ForeignKey', [], {'related_name': "'resources'", 'to': "orm['telemeta.Playlist']"}), + 'public_id': ('telemeta.models.core.CharField', [], {'max_length': '250'}), + 'resource_id': ('telemeta.models.core.CharField', [], {'max_length': '250'}), + 'resource_type': ('telemeta.models.core.CharField', [], {'max_length': '250'}) + }, + 'telemeta.publisher': { + 'Meta': {'ordering': "['value']", 'object_name': 'Publisher', 'db_table': "'publishers'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.publishercollection': { + 'Meta': {'ordering': "['value']", 'object_name': 'PublisherCollection', 'db_table': "'publisher_collections'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'publisher': ('telemeta.models.core.ForeignKey', [], {'related_name': "'publisher_collections'", 'to': "orm['telemeta.Publisher']"}), + 'value': ('telemeta.models.core.CharField', [], {'max_length': '250'}) + }, + 'telemeta.publishingstatus': { + 'Meta': {'ordering': "['value']", 'object_name': 'PublishingStatus', 'db_table': "'publishing_status'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.recordingcontext': { + 'Meta': {'ordering': "['value']", 'object_name': 'RecordingContext', 'db_table': "'recording_contexts'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.revision': { + 'Meta': {'object_name': 'Revision', 'db_table': "'revisions'"}, + 'change_type': ('telemeta.models.core.CharField', [], {'max_length': '16'}), + 'element_id': ('telemeta.models.core.IntegerField', [], {}), + 'element_type': ('telemeta.models.core.CharField', [], {'max_length': '16'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'time': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'user': ('telemeta.models.core.ForeignKey', [], {'related_name': "'revisions'", 'db_column': "'username'", 'to': "orm['auth.User']"}) + }, + 'telemeta.rights': { + 'Meta': {'ordering': "['value']", 'object_name': 'Rights', 'db_table': "'rights'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.search': { + 'Meta': {'ordering': "['-date']", 'object_name': 'Search', 'db_table': "'searches'"}, + 'criteria': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'search'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['telemeta.Criteria']"}), + 'date': ('telemeta.models.core.DateTimeField', [], {'default': 'None', 'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'description': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'username': ('telemeta.models.core.ForeignKey', [], {'related_name': "'searches'", 'db_column': "'username'", 'to': "orm['auth.User']"}) + }, + 'telemeta.tapelength': { + 'Meta': {'ordering': "['value']", 'object_name': 'TapeLength', 'db_table': "'tape_length'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.tapespeed': { + 'Meta': {'ordering': "['value']", 'object_name': 'TapeSpeed', 'db_table': "'tape_speed'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.tapevendor': { + 'Meta': {'ordering': "['value']", 'object_name': 'TapeVendor', 'db_table': "'tape_vendor'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.tapewheeldiameter': { + 'Meta': {'ordering': "['value']", 'object_name': 'TapeWheelDiameter', 'db_table': "'tape_wheel_diameter'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.tapewidth': { + 'Meta': {'ordering': "['value']", 'object_name': 'TapeWidth', 'db_table': "'tape_width'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.topic': { + 'Meta': {'ordering': "['value']", 'object_name': 'Topic', 'db_table': "'topic'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + }, + 'telemeta.userprofile': { + 'Meta': {'object_name': 'UserProfile', 'db_table': "'profiles'"}, + 'address': ('telemeta.models.core.TextField', [], {'default': "''", 'blank': 'True'}), + 'attachment': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'department': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'expiration_date': ('telemeta.models.core.DateField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'function': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'institution': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'telephone': ('telemeta.models.core.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'}), + 'user': ('telemeta.models.core.ForeignKey', [], {'to': "orm['auth.User']", 'unique': 'True'}) + }, + 'telemeta.vernacularstyle': { + 'Meta': {'ordering': "['value']", 'object_name': 'VernacularStyle', 'db_table': "'vernacular_styles'"}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'value': ('telemeta.models.core.CharField', [], {'unique': 'True', 'max_length': '250'}) + } + } + + complete_apps = ['telemeta'] \ No newline at end of file diff --git a/telemeta/models/media.py b/telemeta/models/media.py index 26451872..c1dc5852 100644 --- a/telemeta/models/media.py +++ b/telemeta/models/media.py @@ -52,6 +52,7 @@ from telemeta.models.language import * from telemeta.models.format import * from telemeta.util.kdenlive.session import * from django.db import models +from django.db.models import URLField from django.conf import settings @@ -409,6 +410,7 @@ class MediaItem(MediaResource): # Media file = FileField(_('file'), upload_to='items/%Y/%m/%d', db_column="filename", max_length=1024) + url = URLField(_('URL'), max_length=512, blank=True) # Technical data approx_duration = DurationField(_('approximative duration')) @@ -482,6 +484,14 @@ class MediaItem(MediaResource): title += ' ' + self.track return title + def get_source(self): + source = None + if self.file and os.path.exists(self.file.path): + source = self.file.path + elif self.url: + source = self.url + return source + @property def instruments(self): "Return the instruments of the item" diff --git a/telemeta/models/query.py b/telemeta/models/query.py index 690d8506..f44c1b12 100644 --- a/telemeta/models/query.py +++ b/telemeta/models/query.py @@ -198,10 +198,11 @@ class MediaItemQuerySet(CoreQuerySet): return self.filter(self.by_fuzzy_collector_q(pattern)) def sound(self): - return self.filter(file__contains='/') + return self.filter(Q(file__contains='/') | Q(url__contains='/')) def sound_public(self): - return self.filter(file__contains='/', public_access='full', collection__public_access='full') + return self.filter(Q(file__contains='/') | Q(url__contains='/'), + public_access='full', collection__public_access='full') def by_instrument(self, name): "Find items by instrument" @@ -351,7 +352,7 @@ class MediaCollectionQuerySet(CoreQuerySet): return self.filter(self.by_fuzzy_collector_q(pattern)) def sound(self): - return self.filter(items__file__contains='/').distinct() + return self.filter(Q(items__file__contains='/') | Q(items__url__contains='/')).distinct() def by_instrument(self, name): "Find collections by instrument" diff --git a/telemeta/templates/telemeta/mediaitem_detail.html b/telemeta/templates/telemeta/mediaitem_detail.html index a08aa8c4..1affc7be 100644 --- a/telemeta/templates/telemeta/mediaitem_detail.html +++ b/telemeta/templates/telemeta/mediaitem_detail.html @@ -16,7 +16,7 @@ -{% if item.file %} +{% if item.file or item.url %} {% if access == 'full' or perms.telemeta.can_play_all_items %} @@ -26,7 +26,7 @@ {% endif %}