def test_create_persona_preview_image(self, pngcrush_image_mock): addon = addon_factory() addon.modified = self.days_ago(41) # Given an image, a 680x100 and a 32x32 thumbnails need to be generated # and processed with pngcrush. expected_dst1 = tempfile.NamedTemporaryFile(mode='r+w+b', suffix=".png", delete=False, dir=settings.TMP_PATH) expected_dst2 = tempfile.NamedTemporaryFile(mode='r+w+b', suffix=".png", delete=False, dir=settings.TMP_PATH) create_persona_preview_images( src=get_image_path('persona-header.jpg'), full_dst=[expected_dst1.name, expected_dst2.name], set_modified_on=addon.serializable_reference(), ) # pngcrush_image should have been called twice, once for each # destination thumbnail. assert pngcrush_image_mock.call_count == 2 assert pngcrush_image_mock.call_args_list[0][0][0] == ( expected_dst1.name) assert pngcrush_image_mock.call_args_list[1][0][0] == ( expected_dst2.name) assert image_size(expected_dst1.name) == (680, 100) assert image_size(expected_dst2.name) == (32, 32) addon.reload() self.assertCloseToNow(addon.modified)
def test_create_persona_preview_image(self, pngcrush_image_mock): addon = addon_factory() addon.modified = self.days_ago(41) # Given an image, a 680x100 and a 32x32 thumbnails need to be generated # and processed with pngcrush. expected_dst1 = tempfile.NamedTemporaryFile( mode='wb', suffix=".png", delete=False, dir=settings.TMP_PATH) expected_dst2 = tempfile.NamedTemporaryFile( mode='wb', suffix=".png", delete=False, dir=settings.TMP_PATH) create_persona_preview_images( src=get_image_path('persona-header.jpg'), full_dst=[expected_dst1.name, expected_dst2.name], set_modified_on=addon.serializable_reference(), ) # pngcrush_image should have been called twice, once for each # destination thumbnail. assert pngcrush_image_mock.call_count == 2 assert pngcrush_image_mock.call_args_list[0][0][0] == ( expected_dst1.name) assert pngcrush_image_mock.call_args_list[1][0][0] == ( expected_dst2.name) assert image_size(expected_dst1.name) == (680, 100) assert image_size(expected_dst2.name) == (32, 32) addon.reload() self.assertCloseToNow(addon.modified)
def approve_rereview(theme): """Replace original theme with pending theme on filesystem.""" # If reuploaded theme, replace old theme design. storage = LocalFileStorage() rereview = theme.rereviewqueuetheme_set.all() reupload = rereview[0] if reupload.header_path != reupload.theme.header_path: create_persona_preview_images( src=reupload.header_path, full_dst=[reupload.theme.thumb_path, reupload.theme.icon_path], set_modified_on=reupload.theme.addon.serializable_reference()) if not reupload.theme.is_new(): # Legacy themes also need a preview_large.jpg. # Modern themes use preview.png for both thumb and preview so there # is no problem there. copy_stored_file(reupload.theme.thumb_path, reupload.theme.preview_path, storage=storage) move_stored_file(reupload.header_path, reupload.theme.header_path, storage=storage) theme = reupload.theme rereview.delete() theme_checksum(theme) theme.addon.increment_theme_version_number()
def approve_rereview(theme): """Replace original theme with pending theme on filesystem.""" # If reuploaded theme, replace old theme design. storage = LocalFileStorage() rereview = theme.rereviewqueuetheme_set.all() reupload = rereview[0] if reupload.header_path != reupload.theme.header_path: create_persona_preview_images( src=reupload.header_path, full_dst=[ reupload.theme.thumb_path, reupload.theme.icon_path], set_modified_on=reupload.theme.addon.serializable_reference()) if not reupload.theme.is_new(): # Legacy themes also need a preview_large.jpg. # Modern themes use preview.png for both thumb and preview so there # is no problem there. copy_stored_file(reupload.theme.thumb_path, reupload.theme.preview_path, storage=storage) move_stored_file( reupload.header_path, reupload.theme.header_path, storage=storage) theme = reupload.theme rereview.delete() theme_checksum(theme) theme.addon.increment_theme_version_number()
def approve_rereview(theme): """Replace original theme with pending theme on filesystem.""" # If reuploaded theme, replace old theme design. storage = LocalFileStorage() rereview = theme.rereviewqueuetheme_set.all() reupload = rereview[0] if reupload.header_path != reupload.theme.header_path: create_persona_preview_images( src=reupload.header_path, full_dst=[ reupload.theme.thumb_path, reupload.theme.icon_path], set_modified_on=[reupload.theme.addon]) if not reupload.theme.is_new(): # Legacy themes also need a preview_large.jpg. # Modern themes use preview.png for both thumb and preview so there # is no problem there. copy_stored_file(reupload.theme.thumb_path, reupload.theme.preview_path, storage=storage) move_stored_file( reupload.header_path, reupload.theme.header_path, storage=storage) theme = reupload.theme footer_path = theme.footer_path if reupload.footer_path != footer_path: if not footer_path: dst_root = os.path.join(user_media_path('addons'), str(theme.addon.id)) footer_path = os.path.join(dst_root, 'footer.png') theme.footer = 'footer.png' theme.save() move_stored_file( reupload.footer_path, footer_path, storage=storage) rereview.delete() theme.addon.increment_theme_version_number()
def approve_rereview(theme): """Replace original theme with pending theme on filesystem.""" # If reuploaded theme, replace old theme design. storage = LocalFileStorage() rereview = theme.rereviewqueuetheme_set.all() reupload = rereview[0] if reupload.header_path != reupload.theme.header_path: create_persona_preview_images( src=reupload.header_path, full_dst=[ reupload.theme.thumb_path, reupload.theme.icon_path], set_modified_on=[reupload.theme.addon]) if not reupload.theme.is_new(): # Legacy themes also need a preview_large.jpg. # Modern themes use preview.png for both thumb and preview so there # is no problem there. copy_stored_file(reupload.theme.thumb_path, reupload.theme.preview_path, storage=storage) move_stored_file( reupload.header_path, reupload.theme.header_path, storage=storage) theme = reupload.theme footer_path = theme.footer_path if reupload.footer_path != footer_path: if not footer_path: dst_root = os.path.join(user_media_path('addons'), str(theme.addon.id)) footer_path = os.path.join(dst_root, 'footer.png') theme.footer = 'footer.png' theme.save() move_stored_file( reupload.footer_path, footer_path, storage=storage) rereview.delete() theme.addon.increment_theme_version_number()