From: Guillaume Pellerin Date: Wed, 12 Mar 2014 08:40:24 +0000 (+0100) Subject: pick item views from dev X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=c1aeda050251b0e8d165d0481720fefd46e7bccf;p=telemeta.git pick item views from dev --- diff --git a/telemeta/views/core.py b/telemeta/views/core.py index da6375d6..21d637b5 100644 --- a/telemeta/views/core.py +++ b/telemeta/views/core.py @@ -242,26 +242,15 @@ def check_related_media(medias): media.title = title.replace('\n', '').strip() media.save() -def auto_code(collection): - items = collection.items.all() - suffixes = [] - - if items: - for item in items: - if '_' in item.public_id: - try: - split = item.public_id.split('_') - suffix = int(split[-1]) - prefix = split[:-1] - except: - suffix = 999 - - suffixes.append(suffix) - - if suffixes: - return collection.code + '_' + str(max(suffixes)+1) - else: - return collection.code + '_' +def auto_code(resources, base_code): + index = 1 + while True: + code = base_code + '_' + str(index) + r = resources.filter(code=code) + if not r: + break + index += 1 + return code def get_room(content_type=None, id=None, name=None): diff --git a/telemeta/views/item.py b/telemeta/views/item.py index 39b6bc38..99329d60 100644 --- a/telemeta/views/item.py +++ b/telemeta/views/item.py @@ -135,10 +135,11 @@ class ItemView(object): previous, next = self.item_previous_next(item) - mime_type = item.mime_type - if mime_type and mime_type != 'none' : - if 'quicktime' in mime_type: - mime_type = 'video/mp4' + mime_type = self.item_analyze(item) + + #FIXME: use mimetypes.guess_type + if 'quicktime' in mime_type: + mime_type = 'video/mp4' playlists = get_playlists(request) related_media = MediaItemRelated.objects.filter(item=item) @@ -171,10 +172,11 @@ class ItemView(object): previous, next = self.item_previous_next(item) - mime_type = item.mime_type - if mime_type: - if 'quicktime' in mime_type: - mime_type = 'video/mp4' + mime_type = self.item_analyze(item) + + #FIXME: use mimetypes.guess_type + if 'quicktime' in mime_type: + mime_type = 'video/mp4' format, created = Format.objects.get_or_create(item=item) @@ -243,7 +245,7 @@ class ItemView(object): if public_id: collection = MediaCollection.objects.get(public_id=public_id) items = MediaItem.objects.filter(collection=collection) - code = auto_code(collection) + code = auto_code(items, collection.code) item = MediaItem(collection=collection, code=code) format, created = Format.objects.get_or_create(item=item) access = get_item_access(item, request.user) @@ -316,12 +318,11 @@ class ItemView(object): keyword.save() item.set_revision(request.user) - return redirect('telemeta-item-detail', code) else: item = MediaItem.objects.get(public_id=public_id) items = MediaItem.objects.filter(collection=item.collection) - item.code = auto_code(item.collection) + item.code = auto_code(items, item.collection.code) item.approx_duration = '' item_form = MediaItemForm(instance=item, prefix='item') format, created = Format.objects.get_or_create(item=item) @@ -347,7 +348,7 @@ class ItemView(object): def item_analyze(self, item): analyses = item.analysis.all() mime_type = '' - + if analyses: for analysis in analyses: if not item.approx_duration and analysis.analyzer_id == 'duration': @@ -357,9 +358,8 @@ class ItemView(object): time = ':'.join(time) item.approx_duration = time item.save() - elif not analysis.value and analysis.analyzer_id == 'mime_type' : - analysis.value = item.mime_type - analysis.save() + if analysis.analyzer_id == 'mime_type': + mime_type = analysis.value else: analyzers = [] analyzers_sub = [] @@ -374,7 +374,7 @@ class ItemView(object): subpipe = analyzer() analyzers_sub.append(subpipe) pipe = pipe | subpipe - + default_grapher = self.get_grapher(self.default_grapher_id) for size in self.default_grapher_sizes: width = size.split('x')[0] @@ -394,9 +394,8 @@ class ItemView(object): f.close() mime_type = mimetypes.guess_type(source)[0] - analysis = MediaItemAnalysis(item=item, name='MIME type', - analyzer_id='mime_type', unit='', value=item.mime_type) + analyzer_id='mime_type', unit='', value=mime_type) analysis.save() analysis = MediaItemAnalysis(item=item, name='Channels', analyzer_id='channels', @@ -425,12 +424,10 @@ class ItemView(object): analyzer_id=result.id, unit=result.unit, value = unicode(value)) analysis.save() - analyses = MediaItemAnalysis.objects.filter(item=item) - -# TODO: parse tags on first load +# FIXME: parse tags on first load # tags = decoder.tags - return analyses + return mime_type def item_analyze_xml(self, request, public_id): item = MediaItem.objects.get(public_id=public_id) @@ -531,7 +528,7 @@ class ItemView(object): else: flag = flag[0] - format = item.mime_type + format = self.item_analyze(item) dc_metadata = dublincore.express_item(item).to_list() mapping = DublinCoreToFormatMetadata(extension) metadata = mapping.get_metadata(dc_metadata)