diff options
-rw-r--r-- | mediagoblin/db/mixin.py | 32 | ||||
-rw-r--r-- | mediagoblin/static/css/base.css | 26 | ||||
-rw-r--r-- | mediagoblin/templates/mediagoblin/utils/exif.html | 52 |
3 files changed, 53 insertions, 57 deletions
diff --git a/mediagoblin/db/mixin.py b/mediagoblin/db/mixin.py index 027215aa..e7f66fa1 100644 --- a/mediagoblin/db/mixin.py +++ b/mediagoblin/db/mixin.py @@ -246,7 +246,8 @@ class MediaEntryMixin(GenerateSlugMixin): exif_all = self.media_data.get("exif_all") - taken = None + exif_short = {} + if 'Image DateTimeOriginal' in exif_all: # format date taken takendate = datetime.datetime.strptime( @@ -254,6 +255,8 @@ class MediaEntryMixin(GenerateSlugMixin): '%Y:%m:%d %H:%M:%S').date() taken = takendate.strftime('%B %d %Y') + exif_short.update({'Date Taken': taken}) + aperture = None if 'EXIF FNumber' in exif_all: fnum = str(exif_all['EXIF FNumber']['printable']).split('/') @@ -264,14 +267,25 @@ class MediaEntryMixin(GenerateSlugMixin): elif fnum[0] != 'None': aperture = "f/%s" % (fnum[0]) - return { - "Camera" : exif_all['Image Model']['printable'], - "Exposure" : '%s sec' % exif_all['EXIF ExposureTime']['printable'], - "Aperture" : aperture, - "ISO" : exif_all['EXIF ISOSpeedRatings']['printable'], - "Focal Length" : '%s mm' % exif_all['EXIF FocalLength']['printable'], - "Date Taken" : taken, - } + if aperture: + exif_short.update({'Aperture': aperture}) + + short_keys = [ + ('Camera', 'Image Model', None), + ('Exposure', 'EXIF ExposureTime', lambda x: '%s sec' % x), + ('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): @property diff --git a/mediagoblin/static/css/base.css b/mediagoblin/static/css/base.css index 096e2522..4645b2c5 100644 --- a/mediagoblin/static/css/base.css +++ b/mediagoblin/static/css/base.css @@ -717,3 +717,29 @@ pre { 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; +} diff --git a/mediagoblin/templates/mediagoblin/utils/exif.html b/mediagoblin/templates/mediagoblin/utils/exif.html index 746dccf5..b62208e1 100644 --- a/mediagoblin/templates/mediagoblin/utils/exif.html +++ b/mediagoblin/templates/mediagoblin/utils/exif.html @@ -17,32 +17,6 @@ #} {% 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> <style type="text/css"> #exif_additional_info { @@ -58,30 +32,12 @@ <h3>Camera Information</h3> <table id="exif_camera_information"> <tbody> + {% for label, value in media.exif_display_data_short().iteritems() %} <tr> - <td class="col1">Taken on</td> - <td>{{ media.exif_display_data_short()['Date Taken'] }}</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> + <td class="col1">{{ label }}</td> + <td>{{ value }}</td> </tr> + {% endfor %} </tbody> </table> <h3 id="exif_additional_info_button" class="button_action"> |