From dd46083e7fc32abcd62b31a23586fc4859cc899d Mon Sep 17 00:00:00 2001 From: yomguy Date: Fri, 4 Nov 2011 11:26:58 +0100 Subject: [PATCH] add url related files, youtube detection, url img preview, prepare sound filtering in search criteria --- telemeta/htdocs/js/application.js | 2 +- telemeta/models/media.py | 12 +++- .../telemeta_default/mediaitem_detail.html | 56 +++++++++++++++---- .../mediaitem_related_edit.html | 1 + .../telemeta_default/search_criteria.html | 6 +- telemeta/templatetags/telemeta_utils.py | 13 ++++- 6 files changed, 74 insertions(+), 16 deletions(-) diff --git a/telemeta/htdocs/js/application.js b/telemeta/htdocs/js/application.js index d9b6b357..7d3e07d9 100644 --- a/telemeta/htdocs/js/application.js +++ b/telemeta/htdocs/js/application.js @@ -50,7 +50,7 @@ function foldInfoBlocks() { var $J = jQuery; var extra = $J('.extraInfos'); extra.find('.folded dl, .folded table').css('display', 'none'); - extra.find('a').click(function() { + extra.find('h4').click(function() { $J(this).parents('.extraInfos').children().toggleClass('folded').find('dl, table').toggle(100); //toggle toggles the visibility of elements return false; diff --git a/telemeta/models/media.py b/telemeta/models/media.py index ba12483d..fb68b8db 100644 --- a/telemeta/models/media.py +++ b/telemeta/models/media.py @@ -49,6 +49,7 @@ from telemeta.models.query import * from telemeta.models.instrument import * from telemeta.models.enum import * from django.forms import ModelForm +from django.db.models.fields import URLField class MediaResource(ModelCore): @@ -342,7 +343,8 @@ class MediaItemRelatedFile(MediaResource): date = DateTimeField(_('date'), auto_now=True) description = TextField(_('description')) author = ForeignKey(User, related_name="related", verbose_name=_('author')) - mime_type = CharField(_('mime_type'), blank=True) + mime_type = CharField(_('mime_type')) + url = CharField(_('url'), max_length=500) file = FileField(_('file'), upload_to='items/%Y/%m/%d', db_column="filename") @property @@ -352,7 +354,13 @@ class MediaItemRelatedFile(MediaResource): return self.id def is_image(self): - return 'image' in self.mime_type + is_url_image = False + if self.url: + url_types = ['.png', '.jpg', '.gif', '.jpeg'] + for type in url_types: + if type in self.url: + is_url_image = True + return 'image' in self.mime_type or is_url_image def save(self, force_insert=False, force_update=False): super(MediaItemRelatedFile, self).save(force_insert, force_update) diff --git a/telemeta/templates/telemeta_default/mediaitem_detail.html b/telemeta/templates/telemeta_default/mediaitem_detail.html index e5b6c10d..65005d19 100644 --- a/telemeta/templates/telemeta_default/mediaitem_detail.html +++ b/telemeta/templates/telemeta_default/mediaitem_detail.html @@ -272,39 +272,75 @@ {% endblock infos %} -
+
{% block related_files %}

{% trans "Related files" %}

{% if related_files %}
- +
- - + {% for file in related_files %} - - + + - {% endfor %}
{% field_label "MediaItemRelatedFile" "file" %} {% field_label "MediaItemRelatedFile" "title" %} {% field_label "MediaItemRelatedFile" "mime type" %}{% field_label "MediaItemRelatedFile" "author" %} {% field_label "MediaItemRelatedFile" "preview" %}{% field_label "MediaItemRelatedFile" "author" %}
{% if file.file %}{{ file.file|get_filename }}{% endif %}{{ file.title }} + {% if file.url %} + + {% if file.title %} + {{ file.title }} + {% else %} + {{ file.url|get_filename }} + {% endif %} + + {% endif %} + {% if file.file %} + + {% if file.title %} + {{ file.title }} + {% else %} + {{ file.file|get_filename }} + {% endif %} + + {% endif %} + {{ file.mime_type }}{% if file.is_image %} + {% if file.url %} + + + {% else %} + + + {% endif %} + {% else %} + {% if file.url %} + {% if "youtube" in file.url %} + + {% else %} + link + {% endif %} + {% endif %} + {% if file.file %} + link + {% endif %} + {% endif %} {{ file.author }}{% if file.is_image %}{% else %}link{% endif %}
- {% if user.is_authenticated and perms.telemeta.change_mediaitem %} - {% trans "Edit"%} {% trans "related"%} - {% endif %}
{% endif %} + {% if user.is_authenticated and perms.telemeta.change_mediaitem %} +
{% trans "Edit"%} {% trans "related"%} + {% endif %}
{% endblock related_files %}
diff --git a/telemeta/templates/telemeta_default/mediaitem_related_edit.html b/telemeta/templates/telemeta_default/mediaitem_related_edit.html index 8a08f801..2739d074 100644 --- a/telemeta/templates/telemeta_default/mediaitem_related_edit.html +++ b/telemeta/templates/telemeta_default/mediaitem_related_edit.html @@ -22,6 +22,7 @@ {% for field in form %} + {% if not "media_item" in field.html_name %} {% if "id" in field.html_name or "item" in field.html_name %} diff --git a/telemeta/templates/telemeta_default/search_criteria.html b/telemeta/templates/telemeta_default/search_criteria.html index fcc36b0f..6979aaf0 100644 --- a/telemeta/templates/telemeta_default/search_criteria.html +++ b/telemeta/templates/telemeta_default/search_criteria.html @@ -126,7 +126,11 @@ $(document).ready(function () {

{% endif %} - +

diff --git a/telemeta/templatetags/telemeta_utils.py b/telemeta/templatetags/telemeta_utils.py index 30ffe65f..ddc7329f 100644 --- a/telemeta/templatetags/telemeta_utils.py +++ b/telemeta/templatetags/telemeta_utils.py @@ -322,5 +322,14 @@ def to_string(list): return '' @register.filter -def get_filename(file): - return file.path.split(os.sep)[-1] +def get_filename(object): + if isinstance(object, unicode): + return object.split('/')[-1] + else: + return object.path.split(os.sep)[-1] + +@register.filter +def get_youtube(link): + link = link.split('&') + ref = link[0].split('=')[1] + return 'http://www.youtube.com/embed/'+ref -- 2.39.5

{% trans "File" %} :
{{ field.errors }}