]> git.parisson.com Git - telemeta.git/commitdiff
fix compatibility with django 1.0
authorolivier <>
Mon, 29 Sep 2008 17:19:30 +0000 (17:19 +0000)
committerolivier <>
Mon, 29 Sep 2008 17:19:30 +0000 (17:19 +0000)
18 files changed:
telemeta/admin.py [new file with mode: 0644]
telemeta/analysis/core.py
telemeta/dublincore.py
telemeta/models/__init__.py
telemeta/models/enum.py
telemeta/models/media.py
telemeta/templates/inc/mediaitem_list.html
telemeta/templates/search_criteria.html
telemeta/templatetags/telemeta_utils.py
telemeta/urls.py
telemeta/visualization/octave_core.py
telemeta/visualization/snack_core.py
telemeta/visualization/spectrogram3.py
telemeta/visualization/spectrogram4.py
telemeta/visualization/waveform.py
telemeta/visualization/waveform3.py
telemeta/visualization/waveform4.py
telemeta/web/base.py

diff --git a/telemeta/admin.py b/telemeta/admin.py
new file mode 100644 (file)
index 0000000..ae8784a
--- /dev/null
@@ -0,0 +1,33 @@
+from django.contrib import admin
+from telemeta.models import MediaCollection, MediaItem, MediaPart, MediaCore 
+from django import forms
+
+class MediaCoreAdminForm(forms.ModelForm):
+    def clean(self):
+        data = forms.ModelForm.clean(self)
+        id = None
+        if data.has_key("id"):
+            id = data["id"] = data["id"].strip()
+        if not id:
+            raise forms.ValidationError(u"id field is required")
+        if not MediaCore.is_well_formed_id(id):
+            raise forms.ValidationError(u"'%s' is not a well-formed id" % id)
+        return data
+
+class MediaCollectionAdminForm(MediaCoreAdminForm):
+    class Meta:
+        model = MediaCollection
+  
+class MediaItemAdminForm(MediaCoreAdminForm):
+    class Meta:
+        model = MediaItem
+  
+class MediaCollectionAdmin(admin.ModelAdmin):
+    form = MediaCollectionAdminForm
+
+class MediaItemAdmin(admin.ModelAdmin):
+    form = MediaItemAdminForm
+
+admin.site.register(MediaCollection, MediaCollectionAdmin)
+admin.site.register(MediaItem, MediaItemAdmin)
+admin.site.register(MediaPart)
index fe76ed01c51116342afe1f7e1f5d5822c24881a8..2347bb3eb5462c666aac7e7ba9e6c58695d3e435 100644 (file)
@@ -36,7 +36,7 @@ class AudioProcessor(Component):
         self.clip = lambda val, low, high: min(high, max(low, val))
 
     def pre_process(self, media_item):
-        wav_file = settings.MEDIA_ROOT + '/' + media_item.file
+        wav_file = media_item.file.path
         self.audio_file = audiolab.sndfile(wav_file, 'read')
         self.frames = self.audio_file.get_nframes()
         self.samplerate = self.audio_file.get_samplerate()
@@ -194,4 +194,4 @@ class AudioProcessor(Component):
             return (max_value, min_value)
 
 
-        
\ No newline at end of file
+        
index f9d0489d0b47b934770462b013de44b8a5617a74..e3062d340c6a61d64f9b044875a0549bf36d96b6 100644 (file)
@@ -27,7 +27,7 @@ class Resource(object):
         result = {}
         for element in self.elements:
             if not result.has_key(element.name):
-                result[element.name] = str(element.value)
+                result[element.name] = unicode(element.value)
         return result
 
 class Element(object):
index e1e04a567b387ab2db03560074ddadd354445817..768c640e4bd5b0397ffc46fc6897795199f0fd69 100644 (file)
@@ -7,6 +7,6 @@
 #
 # Author: Olivier Guilyardi <olivier@samalyse.com>
 
-from telemeta.models.media import MediaCollection, MediaItem, MediaPart
+from telemeta.models.media import MediaCollection, MediaItem, MediaPart, MediaCore
 from telemeta.models.enum import PhysicalFormat, PublishingStatus
 
index 94b3b5d1d2bc9f63df4a588ff09a225c8f75c1c2..aa4c9f65f9972a2db266e034f54b1011c7b5f20f 100644 (file)
@@ -12,9 +12,9 @@ from django.db.models import Model, CharField
 class PhysicalFormat(Model):
     "Physical support of media items"
 
-    value = CharField(maxlength=250)
+    value = CharField(max_length=250)
     is_enumeration = True
-    def __str__(self):
+    def __unicode__(self):
         return self.value
     class Meta:
         app_label = 'telemeta'
@@ -23,9 +23,9 @@ class PhysicalFormat(Model):
         
 class PublishingStatus(Model):
     "Publishing status of media items"
-    value = CharField(maxlength=250)
+    value = CharField(max_length=250)
     is_enumeration = True
-    def __str__(self):
+    def __unicode__(self):
         return self.value
     class Meta:
         app_label = 'telemeta'
index 1aed1d36aa6e3c23e8cf0a39f38e958289b14490..3c41a27d8ddfce0e3cf893b890a82b4a368462c2 100644 (file)
@@ -10,9 +10,9 @@
 from django.db.models import Model, CharField, FileField, \
     TextField, DecimalField, ForeignKey, DateField
 from django.core.exceptions import ObjectDoesNotExist
-from django.core import validators
 from django.conf import settings
 from xml.dom.minidom import getDOMImplementation
+import re
 
 import telemeta
 from telemeta.core import *
@@ -21,7 +21,8 @@ from telemeta.models.query import MediaItemManager, MediaItemQuerySet, \
   MediaCollectionManager, MediaCollectionQuerySet
 
 # Regular (sub) expression for matching/validating media objects IDs
-media_id_regex = r'[0-9A-Za-z._-]+'
+# FIXME: need to use this in MediaCore.save()
+media_id_regex = r'[0-9A-Za-z._-]+' 
 
 class MediaModel(Component):
     "Represent the whole model as a component"
@@ -64,49 +65,57 @@ class MediaCore(object):
             element.appendChild(doc.createTextNode(value))
             top.appendChild(element)
         return doc
+    
+    def is_well_formed_id(cls, value):
+        regex = re.compile(r"^" + media_id_regex + r"$")
+        if regex.match(value):
+            return True 
+        else:
+            return False
+    is_well_formed_id = classmethod(is_well_formed_id)
+
 
 class MediaCollection(Model, MediaCore):
     "Group related media items"
 
     id_regex = media_id_regex
-    id_validator = validators.MatchesRegularExpression('^' + id_regex + '$')
-
-    publisher_reference = CharField(maxlength=250, blank=True)
-    physical_format     = CharField(maxlength=250, blank=True)
-    id                  = CharField(maxlength=250, primary_key=True,
-                        verbose_name='identifier', validator_list=[id_validator])
-    title               = CharField(maxlength=250)
-    native_title        = CharField(maxlength=250, blank=True)
-    physical_items_num  = CharField(maxlength=250, blank=True) 
-    publishing_status   = CharField(maxlength=250, blank=True)
-    is_original         = CharField(maxlength=250, blank=True)
-    is_full_copy        = CharField(maxlength=250, blank=True)
+
+    publisher_reference = CharField(max_length=250, blank=True)
+    physical_format     = CharField(max_length=250, blank=True)
+    id                  = CharField(max_length=250, primary_key=True,
+                          verbose_name='identifier')
+    title               = CharField(max_length=250)
+    native_title        = CharField(max_length=250, blank=True)
+    physical_items_num  = CharField(max_length=250, blank=True) 
+    publishing_status   = CharField(max_length=250, blank=True)
+    is_original         = CharField(max_length=250, blank=True)
+    is_full_copy        = CharField(max_length=250, blank=True)
     copied_from         = ForeignKey('self', null=True, blank=True)
-    creator             = CharField(maxlength=250)
-    booklet_writer      = CharField(maxlength=250, blank=True)
+    creator             = CharField(max_length=250)
+    booklet_writer      = CharField(max_length=250, blank=True)
     booklet_description = TextField(blank=True)
-    collector           = CharField(maxlength=250, blank=True)
-    publisher           = CharField(maxlength=250, blank=True)
-    date_published      = CharField(maxlength=250, blank=True)
-    publisher_collection= CharField(maxlength=250, blank=True)
-    publisher_serial_id = CharField(maxlength=250, blank=True)
+    collector           = CharField(max_length=250, blank=True)
+    publisher           = CharField(max_length=250, blank=True)
+    date_published      = CharField(max_length=250, blank=True)
+    publisher_collection= CharField(max_length=250, blank=True)
+    publisher_serial_id = CharField(max_length=250, blank=True)
     ref_biblio          = TextField(blank=True)
-    acquisition_mode    = CharField(maxlength=250, blank=True)
+    acquisition_mode    = CharField(max_length=250, blank=True)
     comment             = TextField(blank=True)
-    record_author       = CharField(maxlength=250, blank=True)
-    record_writer       = CharField(maxlength=250, blank=True)
-    rights              = CharField(maxlength=250, blank=True)
-    annee_enr           = CharField(maxlength=250, blank=True)
-    terrain_ou_autre    = CharField(maxlength=250, blank=True)
-    duree_approx        = CharField(maxlength=250, blank=True)
-    tri_dibm            = CharField(maxlength=250, blank=True)
-    travail             = CharField(maxlength=250, blank=True)
+    record_author       = CharField(max_length=250, blank=True)
+    record_writer       = CharField(max_length=250, blank=True)
+    rights              = CharField(max_length=250, blank=True)
+    annee_enr           = CharField(max_length=250, blank=True)
+    terrain_ou_autre    = CharField(max_length=250, blank=True)
+    duree_approx        = CharField(max_length=250, blank=True)
+    tri_dibm            = CharField(max_length=250, blank=True)
+    travail             = CharField(max_length=250, blank=True)
     compil_face_plage   = TextField(blank=True)
-    deposant_cnrs       = CharField(maxlength=250, blank=True)
-    fiches              = CharField(maxlength=250, blank=True)
-    a_informer          = CharField(maxlength=250, blank=True)
-    numerisation        = CharField(maxlength=250, blank=True)
-    champ36             = CharField(maxlength=250, blank=True)
+    deposant_cnrs       = CharField(max_length=250, blank=True)
+    fiches              = CharField(max_length=250, blank=True)
+    a_informer          = CharField(max_length=250, blank=True)
+    numerisation        = CharField(max_length=250, blank=True)
+    champ36             = CharField(max_length=250, blank=True)
      
     objects = MediaCollectionManager()
 
@@ -171,55 +180,56 @@ class MediaCollection(Model, MediaCore):
                 groups.append(item.ethnie_grsocial)
         return groups
 
-    def __str__(self):
+    def __unicode__(self):
         #return self.title
         return self.id
 
+    def save(self, force_insert=False, force_update=False):
+        if not MediaCore.is_well_formed_id(self.id):
+            raise MediaInvalidIdError()
+        return super(MediaCollection, self).save(force_insert, force_update)
+        
     class Meta:
         app_label = 'telemeta'
         ordering = ['title']
         db_table = 'telemeta_collection'
 
-    class Admin:
-        pass
-
 class MediaItem(Model, MediaCore):
     "Describe an item with metadata" 
 
     id_regex = media_id_regex
-    id_validator = validators.MatchesRegularExpression('^' + id_regex + '$')
 
-    ref             = CharField(maxlength=250, blank=True)
-    format          = CharField(maxlength=250, blank=True)
+    ref             = CharField(max_length=250, blank=True)
+    format          = CharField(max_length=250, blank=True)
     collection      = ForeignKey(MediaCollection, related_name="items")
-    face_plage      = CharField(maxlength=250, blank=True)
-    id              = CharField(maxlength=250, primary_key=True, 
-                    verbose_name='identifier', validator_list=[id_validator])
-    duree           = CharField(maxlength=250, blank=True)
-    dates_enregistr = CharField(maxlength=250, blank=True)
-    etat            = CharField(maxlength=250, blank=True)
-    region_village  = CharField(maxlength=250, blank=True)
-    ethnie_grsocial = CharField(maxlength=250, blank=True)
-    titre_support   = CharField(maxlength=250, blank=True)
-    _title          = CharField(maxlength=250, db_column='title', blank=True)
-    transcrip_trad  = CharField(maxlength=250, blank=True)
-    auteur          = CharField(maxlength=250, blank=True)
-    form_genr_style = CharField(maxlength=250, blank=True)
-    struct_modale   = CharField(maxlength=250, blank=True)
-    struct_rythm    = CharField(maxlength=250, blank=True)
+    face_plage      = CharField(max_length=250, blank=True)
+    id              = CharField(max_length=250, primary_key=True, 
+                      verbose_name='identifier')
+    duree           = CharField(max_length=250, blank=True)
+    dates_enregistr = CharField(max_length=250, blank=True)
+    etat            = CharField(max_length=250, blank=True)
+    region_village  = CharField(max_length=250, blank=True)
+    ethnie_grsocial = CharField(max_length=250, blank=True)
+    titre_support   = CharField(max_length=250, blank=True)
+    _title          = CharField(max_length=250, db_column='title', blank=True)
+    transcrip_trad  = CharField(max_length=250, blank=True)
+    auteur          = CharField(max_length=250, blank=True)
+    form_genr_style = CharField(max_length=250, blank=True)
+    struct_modale   = CharField(max_length=250, blank=True)
+    struct_rythm    = CharField(max_length=250, blank=True)
     comm_fonctusage = TextField(blank=True)
-    documentation   = TextField(maxlength=250, blank=True)
-    remarques       = TextField(maxlength=250, blank=True)
-    moda_execut     = CharField(maxlength=250, blank=True)
-    copie_de        = CharField(maxlength=250, blank=True)
-    enregistre_par  = CharField(maxlength=250, blank=True)
-    aire_geo_cult   = CharField(maxlength=250, blank=True)
-    annee_enreg     = CharField(maxlength=250, blank=True)
-    formstyl_generi = CharField(maxlength=250, blank=True)
-    choixcollecteur = CharField(maxlength=250, blank=True)
-    repere_bande    = CharField(maxlength=250, blank=True)
-    nroband_nropiec = CharField(maxlength=250, blank=True)
-    continent       = CharField(maxlength=250, blank=True)
+    documentation   = TextField(max_length=250, blank=True)
+    remarques       = TextField(max_length=250, blank=True)
+    moda_execut     = CharField(max_length=250, blank=True)
+    copie_de        = CharField(max_length=250, blank=True)
+    enregistre_par  = CharField(max_length=250, blank=True)
+    aire_geo_cult   = CharField(max_length=250, blank=True)
+    annee_enreg     = CharField(max_length=250, blank=True)
+    formstyl_generi = CharField(max_length=250, blank=True)
+    choixcollecteur = CharField(max_length=250, blank=True)
+    repere_bande    = CharField(max_length=250, blank=True)
+    nroband_nropiec = CharField(max_length=250, blank=True)
+    continent       = CharField(max_length=250, blank=True)
     file            = FileField(upload_to='items/%Y/%m/%d', blank=True)
 
     objects = MediaItemManager()
@@ -268,12 +278,14 @@ class MediaItem(Model, MediaCore):
 
         return duration
 
-    def __str__(self):
+    def __unicode__(self):
         return self.title
 
-    class Admin:
-        pass
-
+    def save(self, force_insert=False, force_update=False):
+        if not MediaCore.is_well_formed_id(self.id):
+            raise MediaInvalidIdError()
+        return super(MediaItem, self).save(force_insert, force_update)
+        
     class Meta:
         app_label = 'telemeta'
         ordering = ['_title']
@@ -283,19 +295,19 @@ class MediaItem(Model, MediaCore):
 class MediaPart(Model, MediaCore):
     "Describe the part of a media item"
 
-    contributor = CharField(maxlength=250, blank=True)
-    coverage    = CharField(maxlength=250, blank=True)
-    creator     = CharField(maxlength=250, blank=True)
+    contributor = CharField(max_length=250, blank=True)
+    coverage    = CharField(max_length=250, blank=True)
+    creator     = CharField(max_length=250, blank=True)
     date        = DateField()
-    description = CharField(maxlength=250, blank=True)
-    format      = CharField(maxlength=250, blank=True)
-    identifier  = CharField(maxlength=250, blank=True)
-    language    = CharField(maxlength=250, blank=True)
-    publisher   = CharField(maxlength=250, blank=True)
-    rights      = CharField(maxlength=250, blank=True)
-    source      = CharField(maxlength=250, blank=True)
-    subject     = CharField(maxlength=250, blank=True)
-    title       = CharField(maxlength=250, blank=True)
+    description = CharField(max_length=250, blank=True)
+    format      = CharField(max_length=250, blank=True)
+    identifier  = CharField(max_length=250, blank=True)
+    language    = CharField(max_length=250, blank=True)
+    publisher   = CharField(max_length=250, blank=True)
+    rights      = CharField(max_length=250, blank=True)
+    source      = CharField(max_length=250, blank=True)
+    subject     = CharField(max_length=250, blank=True)
+    title       = CharField(max_length=250, blank=True)
     media_item  = ForeignKey(MediaItem)
     #media_item.dublin_core = 'relation'
     parent      = ForeignKey('self', null=True, related_name='children')
@@ -304,7 +316,7 @@ class MediaPart(Model, MediaCore):
     end         = DecimalField(max_digits=11, decimal_places=3)
     #comment = TextField(blank=True)
 
-    def __str__(self):
+    def __unicode__(self):
         return self.title
 
     class Meta:
@@ -312,6 +324,5 @@ class MediaPart(Model, MediaCore):
         ordering = ['title']
         db_table = 'telemeta_part'
 
-    class Admin:
-        pass
-
+class MediaInvalidIdError(Exception):
+    pass
index b231f2ca042a632d563584984ba45e7a18fb630b..9ef69716da53b07569d124eb9ae0dafeb3be0a4f 100644 (file)
@@ -9,7 +9,7 @@
     {% endif %}
     <ul>
     {% for p in items %}
-        <li><a href="{% url telemeta-item-detail p.id|urlencode %}">{{ p.title }}</a></li>
+        <li><a href="{% url telemeta-item-detail p.id %}">{{ p.title }}</a></li>
     {% endfor %}
     {% if more_items %} <li>[...]</li> {% endif %}
     </ul>
index bfd32e05f163e8fd52e189a3324a745ee18d41cc..584feb5ecc70130034c03f1a968411015ece629b 100644 (file)
@@ -2,7 +2,7 @@
 {% load telemeta_utils %}
 
 {% block extra_javascript %}
-<script src="{% url telemeta-continents-js "swfobject.js" %}" type="text/javascript"></script>
+<script src="{% url telemeta-continents-js %}" type="text/javascript"></script>
 {% endblock %}
 
 {% block content %}
 </p>
 
 </form>
-<!--
-{% if continents %}
-<ul class="continents">
-{% for continent in continents %}
-  <li class="name"><b><a href="{% url telemeta-geo-countries continent.name|urlencode %}">{{ continent.name }}</a></b>
-    <ul>
-    {% for country in continent.countries|slice:":10" %}
-      <li class="country_name">
-        <a href="{% url telemeta-geo-country-collections continent.name,country.name|urlencode %}">
-          {{ country.name|lower|capfirst }}</a></li>
-    {% endfor %}
-    {% if continent.countries.10 %}
-    <li><a href="{% url telemeta-geo-countries continent.name|urlencode %}">More..</a></li>
-    {% endif %}
-    </ul>
-  </li>
-{% endfor %}
-</ul>
-{% else %}
-<p>No data</p>
-{% endif %}
--->
-{% endblock %}
\ No newline at end of file
+{% endblock %}
index b9d63daf669749ba3cd4bbb399d92b8e9c1eacac..39c5be2a37b7fad290913469f9a48a751e4e9838 100644 (file)
@@ -1,4 +1,5 @@
 from django import template
+from django.utils.http import urlquote
 
 register = template.Library()
 
@@ -62,8 +63,8 @@ def build_query_string(vars):
       args = []
       for k, v in vars.iteritems():
           if not isinstance(v, basestring):
-              v = str(v)
-          args.append(urllib.quote(k) + '=' + urllib.quote(v))
+              v = unicode(v)
+          args.append(urlquote(k) + '=' + urlquote(v))
 
       return "&amp;".join(args)
     return ''
index 2de399e1535813e1856f319a209e5c28ce48676a..b3ed6ec2d4206ff1af62baced1404827989742fb 100644 (file)
@@ -43,7 +43,7 @@ urlpatterns = patterns('',
     url(r'^items/(?P<item_id>' + i_ex + ')/dc/xml/$', web_view.item_detail, 
         {'format': 'dublin_core_xml'},
         name="telemeta-item-dublincore-xml"),
-    url(r'^items/download/(?P<item_id>' + i_ex + ').(?P<extension>' 
+    url(r'^items/download/(?P<item_id>' + i_ex + ')\.(?P<extension>' 
             + export_extensions + ')$', 
         web_view.item_export,
         name="telemeta-item-export"),
index 8b262b82b2dbc81181a6107a0ce3fc03050e0c22..9109d43d3152821b11ed7a31efe3052529cb9ea0 100644 (file)
@@ -32,7 +32,7 @@ class OctaveCoreVisualizer(Component):
         self.mFile = mFile
 
     def get_wav_path(self, media_item):
-        self.wavFile_path = settings.MEDIA_ROOT + '/' + media_item.file
+        self.wavFile_path = media_item.file.path
         
     def octave_to_png_stream(self, media_item):
         self.buffer_size = 0xFFFF
index 888ab998dac618f041ee4b39387d004554ac2f2a..1232d8800bcecc867cea28fc1fb6180ce28e173a 100644 (file)
@@ -22,7 +22,7 @@ class SnackCoreVisualizer(Component):
 
     def get_snack_sound(self, media_item):        
         self.snd = tkSnack.Sound()
-        self.snd.read(settings.MEDIA_ROOT + '/' + media_item.file)
+        self.snd.read(media_item.file.path)
         return self.snd
         
     def canvas_to_png_stream(self, canvas):
index 455cf99823859e5a84f8d2653e116bb6009ddc36..4317e0ccf1e54d88e8afb232e108742b9002869b 100644 (file)
@@ -27,7 +27,7 @@ class SpectrogramVisualizer3(Component):
     def render(self, media_item, options=None):
         """Generator that streams the spectrogram as a PNG image with a python method"""
 
-        wav_file = settings.MEDIA_ROOT + '/' + media_item.file
+        wav_file = media_item.file.path
         pngFile_w = NamedTemporaryFile(suffix='.png')
         pngFile_s = NamedTemporaryFile(suffix='.png')
         image_width = 305
index f92cd3388875dad118f6208872932e1539c37a56..fcbe7ac87ed9c5c6d09304fbd6ad549f412d6e92 100644 (file)
@@ -27,7 +27,7 @@ class SpectrogramVisualizer3(Component):
     def render(self, media_item, options=None):
         """Generator that streams the spectrogram as a PNG image with a python method"""
 
-        wav_file = settings.MEDIA_ROOT + '/' + media_item.file
+        wav_file = media_item.file.path
         pngFile_w = NamedTemporaryFile(suffix='.png')
         pngFile_s = NamedTemporaryFile(suffix='.png')
         image_width = 1800
index fc89c718b50539aee050c8a898410e90cd8f28f7..6959cc40ea3f412872dfe4c79bd2c8d22da8e9b7 100644 (file)
@@ -33,7 +33,7 @@ class WaveFormVisualizer(Component):
 
         pngFile = NamedTemporaryFile(suffix='.png')
         wav2png = os.path.dirname(__file__) + '/wav2png/wav2png'
-        args  = "-i " + settings.MEDIA_ROOT + '/' + media_item.file + " "
+        args  = "-i " + media_item.file.path + " "
         args += "-o " + pngFile.name + " "
         args += "-b ffffff "
         args += "-l 000088 "
index 3fbb7e092e40fae3789a82e69bd7b4d2886e69a3..85b5133f2ea7b31fa3cfde50d592470a14c86810 100644 (file)
@@ -27,7 +27,7 @@ class WaveFormVisualizer(Component):
     def render(self, media_item, options=None):
         """Generator that streams the waveform as a PNG image with a python method"""
 
-        wav_file = settings.MEDIA_ROOT + '/' + media_item.file
+        wav_file = media_item.file.path
         pngFile_w = NamedTemporaryFile(suffix='.png')
         pngFile_s = NamedTemporaryFile(suffix='.png')
         image_width = 305
index 07ff6deaeb85462e792d2617a0d6df7117846cb2..4586504829b2cfa8e64cfc6bbc9649c16b82b000 100644 (file)
@@ -27,7 +27,7 @@ class WaveFormVisualizer(Component):
     def render(self, media_item, options=None):
         """Generator that streams the waveform as a PNG image with a python method"""
 
-        wav_file = settings.MEDIA_ROOT + '/' + media_item.file
+        wav_file = media_item.file.path
         pngFile_w = NamedTemporaryFile(suffix='.png')
         pngFile_s = NamedTemporaryFile(suffix='.png')
         image_width = 1800
index ec84704e6d9c6d41102c14f31955716217f0b251..d303f5884dda8c80e3ed764a2aaba9716105c809 100644 (file)
@@ -114,7 +114,7 @@ class WebView(Component):
 
         item = MediaItem.objects.get(pk=item_id)
 
-        infile = settings.MEDIA_ROOT + "/" + item.file
+        infile = item.file.path
         metadata = item.to_dublincore().flatten()
         stream = exporter.process(item.id, infile, metadata)