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 %} -