Пример #1
0
    def test_get_info(self):
        from pygall.lib.imageprocessing import get_info
        from datetime import datetime
        from contextlib import nested
        from mock import patch
        with nested(
                patch('pygall.lib.imageprocessing.get_exif'),
                patch('pygall.lib.imageprocessing.img_md5'),
                patch('pygall.lib.imageprocessing.get_size'),
                ) as (mock_get_exif, mock_img_md5, mock_get_size):
            mock_get_exif.return_value = {
                    'DateTimeOriginal': '2000:12:31 23:00:00'
                    }
            mock_img_md5.return_value = 'dummy_md5sum'
            mock_get_size.return_value = 'dummy_size'
            info = get_info('python.jpg')
            self.assertEqual(info, {
                'date': datetime(2000, 12, 31, 23, 0, 0),
                'ext': 'jpeg',
                'md5sum': 'dummy_md5sum',
                'size': 'dummy_size',
                })

            # test date:None if invalid date
            mock_get_exif.return_value = {
                    'DateTimeOriginal': 'ERROR'
                    }
            info = get_info('python.jpg')
            self.assertEqual(info['date'], None)

            # test that existing info param is given priority over calculation
            info = get_info('python.jpg', {
                'date': 'fake_date',
                'ext': 'fake_ext',
                'md5sum': 'fake_md5sum',
                'size': 'fake_size',
                })
            self.assertEqual(info, {
                'date': 'fake_date',
                'ext': 'fake_ext',
                'md5sum': 'fake_md5sum',
                'size': 'fake_size',
                })
Пример #2
0
def after_photo_sync(context, event):
    if context.time and context.md5sum:
        return
    uri = context.uri
    info = get_info(os.path.join(
        event.request.registry.settings['photos_dir'], ORIG, uri))
    if not context.time:
        context.time = info['date']
        log.debug("context.time = %s" % info['date'])
    if not context.md5sum:
        context.md5sum = info['md5sum']
        log.debug("context.md5sum = %s" % info['md5sum'])
Пример #3
0
 def test_get_info_fileobj(self):
     from pygall.lib.imageprocessing import get_info
     from datetime import datetime
     with open('python.jpg', 'rb') as src:
         loc = src.tell()
         info = get_info(src)
         self.assertEqual(info, {
             'date': datetime(2011, 11, 27, 15, 8, 47),
             'ext': 'jpeg',
             'md5sum': u'065c540533e7621f6fc37fb9ab297b3f',
             'size': 63205
             })
         self.assertEqual(src.tell(), loc)