def setUp(self): self.portal = self.layer['portal'] self.request = self.layer['request'] setRoles(self.portal, TEST_USER_ID, ['Manager']) self.browser = Browser(self.portal) # login as siteowner self.browser.open(self.portal.absolute_url() + '/login_form') self.browser.getControl(name='__ac_name').value = SITE_OWNER_NAME self.browser.getControl(name='__ac_password').value = SITE_OWNER_PASSWORD self.browser.getControl(name='submit').click() # create testdata dirname, filename = os.path.split(os.path.abspath(__file__)) self.portal.invokeFactory('Folder', 'folder', title="Test Title") self.folder = self.portal['folder'] # image with exif/iptc path = os.path.join(dirname, "test_images", "metadata-test-image-L.jpg") self.folder.invokeFactory('Image', 'testimage', image=image_by_path(path)) self.exif_image = self.folder['testimage'] # image with xmp path = os.path.join(dirname, "test_images", "small_IMG_5097.jpg") self.folder.invokeFactory('Image', 'testimage2', image=image_by_path(path)) self.xmp_image = self.folder['testimage2'] transaction.commit()
def test_meta_tags(self): self.config.add_exif_tag('Image Copyright') self.config.add_iptc_tag('5') self.config.add_iptc_tag('25') self.portal.invokeFactory('Folder', 'test-folder', title="Test Title") folder = self.portal['test-folder'] dirname, filename = os.path.split(os.path.abspath(__file__)) path = os.path.join(dirname, "test_images", "metadata-test-image-L.jpg") folder.invokeFactory('Image', 'testimage', image=image_by_path(path)) image = folder['testimage'] meta = image_to_meta(image) exif = meta['exif'] iptc = meta['iptc'].data subjects = image.Subject() self.assertTrue(exif['Image Copyright'].printable in subjects) self.assertFalse(exif['EXIF FlashPixVersion'].printable in subjects) self.assertTrue(iptc[5] in subjects) # iptc[25 is a list self.assertTrue(iptc[25][0] in subjects)
def test_get_image(self): view = view = getMultiAdapter( (self.folder, self.request), name='folder_contents' ) result = view.image_html() self.assertFalse('img' in result) dirname, filename = os.path.split(os.path.abspath(__file__)) path = os.path.join(dirname, "test_images", "small_IMG_5097.jpg") self.folder.invokeFactory('Image', 'testimage', image=image_by_path(path)) image = self.folder['testimage'] self.request.form.update({'uid': image.UID()}) view = view = getMultiAdapter( (self.folder, self.request), name='folder_contents' ) result = view.image_html() self.assertTrue('img' in result)
def test_xmp_and_ignored_list(self): self.config.xmp_fields = [{ 'regex': '', 'field': u'{http://purl.org/dc/elements/1.1/}subject', 'format': '' }] self.config.ignored_tags = [{'tag': 'Garde'}] self.portal.invokeFactory('Folder', 'test-folder', title="Test Title") folder = self.portal['test-folder'] dirname, filename = os.path.split(os.path.abspath(__file__)) path = os.path.join(dirname, "test_images", "small_IMG_5097.jpg") folder.invokeFactory('Image', 'testimage', image=image_by_path(path)) image = folder['testimage'] subjects = image.Subject() self.assertTrue('Inthronisation' in subjects) self.assertTrue('Hohenfurch' in subjects) self.assertFalse('Garde' in subjects)
def test_regex_no_match(self): self.config.exif_fields = [{ 'regex': '(\w+) (\w+)', 'field': u'Image Copyright', 'format': 'hello_{1}_{0}' }] self.portal.invokeFactory('Folder', 'test-folder', title="Test Title") folder = self.portal['test-folder'] dirname, filename = os.path.split(os.path.abspath(__file__)) path = os.path.join(dirname, "test_images", "small_IMG_5097.jpg") folder.invokeFactory('Image', 'testimage', image=image_by_path(path)) image = folder['testimage'] meta = image_to_meta(image) exif = meta['exif'] subjects = image.Subject() self.assertFalse(exif['Image Copyright'].printable in subjects) self.assertTrue(subjects)
def test_meta_tags_with_only_format(self): self.config.exif_fields = [{ 'regex': None, 'field': u'Image Copyright', 'format': 'hello_{0}' }] self.portal.invokeFactory('Folder', 'test-folder', title="Test Title") folder = self.portal['test-folder'] dirname, filename = os.path.split(os.path.abspath(__file__)) path = os.path.join(dirname, "test_images", "metadata-test-image-L.jpg") folder.invokeFactory('Image', 'testimage', image=image_by_path(path)) image = folder['testimage'] meta = image_to_meta(image) exif = meta['exif'] subjects = image.Subject() self.assertFalse(exif['Image Copyright'].printable in subjects) self.assertTrue('hello_' + exif['Image Copyright'].printable in subjects)
def test_rotation_pillow(self): self.portal.invokeFactory('Folder', 'test-folder', title="Test Title") folder = self.portal['test-folder'] dirname, filename = os.path.split(os.path.abspath(__file__)) path = os.path.join(dirname, "test_images", "Landscape_5.jpg") folder.invokeFactory('Image', 'testimage') image = folder['testimage'] image.image = image_by_path(path) rotate_with_pillow(image) self.assertTrue(image.image._height < image.image._width)
def test_rotation_and_filename_tags(self): self.portal.invokeFactory('Folder', 'test-folder', title="Test Title") folder = self.portal['test-folder'] dirname, filename = os.path.split(os.path.abspath(__file__)) path = os.path.join(dirname, "test_images", "Landscape_5.jpg") folder.invokeFactory('Image', 'testimage', image=image_by_path(path), title="Different Title") image = folder['testimage'] self.assertTrue(image.image._height < image.image._width) subjects = image.Subject() self.assertTrue('Different' in subjects) self.assertTrue('Title' in subjects) self.assertFalse('Landscape_5' in subjects)