Cleaned up EXIF view

The last update made the assumption that EXIF metadata is in some way
consistent between camera models, images, manufacturers. This update
takes into account that nothing is certain whenever EXIF is involved.
This commit is contained in:
Joar Wandborg 2013-05-23 22:21:02 +02:00
parent 24ede04415
commit 14aa2eaa19
3 changed files with 53 additions and 57 deletions

View File

@ -246,7 +246,8 @@ class MediaEntryMixin(GenerateSlugMixin):
exif_all = self.media_data.get("exif_all") exif_all = self.media_data.get("exif_all")
taken = None exif_short = {}
if 'Image DateTimeOriginal' in exif_all: if 'Image DateTimeOriginal' in exif_all:
# format date taken # format date taken
takendate = datetime.datetime.strptime( takendate = datetime.datetime.strptime(
@ -254,6 +255,8 @@ class MediaEntryMixin(GenerateSlugMixin):
'%Y:%m:%d %H:%M:%S').date() '%Y:%m:%d %H:%M:%S').date()
taken = takendate.strftime('%B %d %Y') taken = takendate.strftime('%B %d %Y')
exif_short.update({'Date Taken': taken})
aperture = None aperture = None
if 'EXIF FNumber' in exif_all: if 'EXIF FNumber' in exif_all:
fnum = str(exif_all['EXIF FNumber']['printable']).split('/') fnum = str(exif_all['EXIF FNumber']['printable']).split('/')
@ -264,14 +267,25 @@ class MediaEntryMixin(GenerateSlugMixin):
elif fnum[0] != 'None': elif fnum[0] != 'None':
aperture = "f/%s" % (fnum[0]) aperture = "f/%s" % (fnum[0])
return { if aperture:
"Camera" : exif_all['Image Model']['printable'], exif_short.update({'Aperture': aperture})
"Exposure" : '%s sec' % exif_all['EXIF ExposureTime']['printable'],
"Aperture" : aperture, short_keys = [
"ISO" : exif_all['EXIF ISOSpeedRatings']['printable'], ('Camera', 'Image Model', None),
"Focal Length" : '%s mm' % exif_all['EXIF FocalLength']['printable'], ('Exposure', 'EXIF ExposureTime', lambda x: '%s sec' % x),
"Date Taken" : taken, ('ISO Speed', 'EXIF ISOSpeedRatings', None),
} ('Focal Length', 'EXIF FocalLength', lambda x: '%s mm' % x)]
for label, key, fmt_func in short_keys:
try:
val = fmt_func(exif_all[key]['printable']) if fmt_func \
else exif_all[key]['printable']
exif_short.update({label: val})
except KeyError:
pass
return exif_short
class MediaCommentMixin(object): class MediaCommentMixin(object):
@property @property

View File

@ -717,3 +717,29 @@ pre {
width: 46%; width: 46%;
} }
} }
/* Exif display */
#exif_content h3 {
border-bottom: 1px solid #333;
}
#exif_camera_information {
margin-bottom: 20px;
}
#exif_additional_info {
display: none;
}
#exif_additional_info table {
font-size: 11px;
margin-top: 10px;
}
#exif_additional_info td {
vertical-align: top;
padding-bottom: 5px;
}
#exif_content .col1 {
padding-right: 20px;
}
#exif_additional_info table tr {
margin-bottom: 10px;
}

View File

@ -17,32 +17,6 @@
#} #}
{% block exif_content %} {% block exif_content %}
<style type="text/css">
#exif_content h3 {
border-bottom: 1px solid #333;
}
#exif_camera_information {
margin-bottom: 20px;
}
#exif_additional_info {
display: none;
}
#exif_additional_info table {
font-size: 11px;
margin-top: 10px;
}
#exif_additional_info td {
vertical-align: top;
padding-bottom: 5px;
}
#exif_content .col1 {
padding-right: 20px;
}
#exif_additional_info table tr {
margin-bottom: 10px;
}
</style>
<noscript> <noscript>
<style type="text/css"> <style type="text/css">
#exif_additional_info { #exif_additional_info {
@ -58,30 +32,12 @@
<h3>Camera Information</h3> <h3>Camera Information</h3>
<table id="exif_camera_information"> <table id="exif_camera_information">
<tbody> <tbody>
{% for label, value in media.exif_display_data_short().iteritems() %}
<tr> <tr>
<td class="col1">Taken on</td> <td class="col1">{{ label }}</td>
<td>{{ media.exif_display_data_short()['Date Taken'] }}</td> <td>{{ value }}</td>
</tr>
<tr>
<td class="col1">Camera</td>
<td>{{ media.exif_display_data_short()['Camera'] }}</td>
</tr>
<tr>
<td class="col1">Exposure</td>
<td>{{ media.exif_display_data_short()['Exposure'] }}</td>
</tr>
<tr>
<td class="col1">Aperture</td>
<td>{{ media.exif_display_data_short()['Aperture'] }}</td>
</tr>
<tr>
<td class="col1">ISO</td>
<td>{{ media.exif_display_data_short()['ISO'] }}</td>
</tr>
<tr>
<td class="col1">Focal Length</td>
<td>{{ media.exif_display_data_short()['Focal Length'] }}</td>
</tr> </tr>
{% endfor %}
</tbody> </tbody>
</table> </table>
<h3 id="exif_additional_info_button" class="button_action"> <h3 id="exif_additional_info_button" class="button_action">