def reject_rereview(theme): """Delete pending theme from filesystem.""" storage = LocalFileStorage() rereview = theme.rereviewqueuetheme_set.all() reupload = rereview[0] storage.delete(reupload.header_path) storage.delete(reupload.footer_path) rereview.delete()
def reject_rereview(theme): """Replace original theme with pending theme on filesystem.""" storage = LocalFileStorage() rereview = theme.rereviewqueuetheme_set.all() reupload = rereview[0] storage.delete(reupload.header_path) storage.delete(reupload.footer_path) rereview.delete()
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) if reupload.footer_path != reupload.theme.footer_path: move_stored_file(reupload.footer_path, reupload.theme.footer_path, storage=storage) rereview.delete() theme.addon.increment_version()
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: move_stored_file(reupload.header_path, reupload.theme.header_path, storage=storage) if reupload.footer_path != reupload.theme.footer_path: move_stored_file(reupload.footer_path, reupload.theme.footer_path, storage=storage) create_persona_preview_images( src=reupload.theme.header_path, full_dst=[ reupload.theme.header_path.replace('header', 'preview'), reupload.theme.header_path.replace('header', 'icon') ], set_modified_on=[reupload.theme.addon]) rereview.delete() theme.addon.increment_version()
def calc_checksum(theme_id, **kw): """For migration 596.""" lfs = LocalFileStorage() theme = Persona.objects.get(id=theme_id) header = theme.header_path footer = theme.footer_path # Delete invalid themes that are not images (e.g. PDF, EXE). try: Image.open(header) Image.open(footer) except IOError: log.info('Deleting invalid theme [%s] (header: %s) (footer: %s)' % (theme.addon.id, header, footer)) theme.addon.delete() theme.delete() rm_stored_dir(header.replace('header.png', ''), storage=lfs) return # Calculate checksum and save. try: theme.checksum = make_checksum(header, footer) theme.save() except IOError as e: log.error(str(e))
def setUp(self): super(TestLocalFileStorage, self).setUp() self.tmp = tempfile.mkdtemp() self.stor = LocalFileStorage()
def setUp(self): self.tmp = tempfile.mkdtemp() self.stor = LocalFileStorage()
class TestLocalFileStorage(unittest.TestCase): def setUp(self): self.tmp = tempfile.mkdtemp() self.stor = LocalFileStorage() def tearDown(self): shutil.rmtree(self.tmp) def test_read_write(self): fn = os.path.join(self.tmp, 'somefile.txt') with self.stor.open(fn, 'w') as fd: fd.write('stuff') with self.stor.open(fn, 'r') as fd: eq_(fd.read(), 'stuff') def test_non_ascii_filename(self): fn = os.path.join(self.tmp, u'Ivan Krsti\u0107.txt') with self.stor.open(fn, 'w') as fd: fd.write('stuff') with self.stor.open(fn, 'r') as fd: eq_(fd.read(), 'stuff') def test_non_ascii_content(self): fn = os.path.join(self.tmp, 'somefile.txt') with self.stor.open(fn, 'w') as fd: fd.write(u'Ivan Krsti\u0107.txt'.encode('utf8')) with self.stor.open(fn, 'r') as fd: eq_(fd.read().decode('utf8'), u'Ivan Krsti\u0107.txt') def test_make_file_dirs(self): dp = os.path.join(self.tmp, 'path', 'to') self.stor.open(os.path.join(dp, 'file.txt'), 'w').close() assert os.path.exists(self.stor.path(dp)), ( 'Directory not created: %r' % dp) def test_do_not_make_file_dirs_when_reading(self): fpath = os.path.join(self.tmp, 'file.txt') with open(fpath, 'w') as fp: fp.write('content') # Make sure this doesn't raise an exception. self.stor.open(fpath, 'r').close() def test_make_dirs_only_once(self): dp = os.path.join(self.tmp, 'path', 'to') with self.stor.open(os.path.join(dp, 'file.txt'), 'w') as fd: fd.write('stuff') # Make sure it doesn't try to make the dir twice with self.stor.open(os.path.join(dp, 'file.txt'), 'w') as fd: fd.write('stuff') with self.stor.open(os.path.join(dp, 'file.txt'), 'r') as fd: eq_(fd.read(), 'stuff')
class TestLocalFileStorage(unittest.TestCase): def setUp(self): self.tmp = tempfile.mkdtemp() self.stor = LocalFileStorage() def tearDown(self): rm_local_tmp_dir(self.tmp) def test_read_write(self): fn = os.path.join(self.tmp, 'somefile.txt') with self.stor.open(fn, 'w') as fd: fd.write('stuff') with self.stor.open(fn, 'r') as fd: eq_(fd.read(), 'stuff') def test_non_ascii_filename(self): fn = os.path.join(self.tmp, u'Ivan Krsti\u0107.txt') with self.stor.open(fn, 'w') as fd: fd.write('stuff') with self.stor.open(fn, 'r') as fd: eq_(fd.read(), 'stuff') def test_non_ascii_content(self): fn = os.path.join(self.tmp, 'somefile.txt') with self.stor.open(fn, 'w') as fd: fd.write(u'Ivan Krsti\u0107.txt'.encode('utf8')) with self.stor.open(fn, 'r') as fd: eq_(fd.read().decode('utf8'), u'Ivan Krsti\u0107.txt') def test_make_file_dirs(self): dp = os.path.join(self.tmp, 'path', 'to') self.stor.open(os.path.join(dp, 'file.txt'), 'w').close() assert os.path.exists( self.stor.path(dp)), ('Directory not created: %r' % dp) def test_do_not_make_file_dirs_when_reading(self): fpath = os.path.join(self.tmp, 'file.txt') with open(fpath, 'w') as fp: fp.write('content') # Make sure this doesn't raise an exception. self.stor.open(fpath, 'r').close() def test_make_dirs_only_once(self): dp = os.path.join(self.tmp, 'path', 'to') with self.stor.open(os.path.join(dp, 'file.txt'), 'w') as fd: fd.write('stuff') # Make sure it doesn't try to make the dir twice with self.stor.open(os.path.join(dp, 'file.txt'), 'w') as fd: fd.write('stuff') with self.stor.open(os.path.join(dp, 'file.txt'), 'r') as fd: eq_(fd.read(), 'stuff') def test_delete_empty_dir(self): dp = os.path.join(self.tmp, 'path') os.mkdir(dp) self.stor.delete(dp) eq_(os.path.exists(dp), False) @raises(OSError) def test_cannot_delete_non_empty_dir(self): dp = os.path.join(self.tmp, 'path') with self.stor.open(os.path.join(dp, 'file.txt'), 'w') as fp: fp.write('stuff') self.stor.delete(dp) def test_delete_file(self): dp = os.path.join(self.tmp, 'path') fn = os.path.join(dp, 'file.txt') with self.stor.open(fn, 'w') as fp: fp.write('stuff') self.stor.delete(fn) eq_(os.path.exists(fn), False) eq_(os.path.exists(dp), True)
class TestLocalFileStorage(unittest.TestCase): def setUp(self): self.tmp = tempfile.mkdtemp() self.stor = LocalFileStorage() def tearDown(self): rm_local_tmp_dir(self.tmp) def test_read_write(self): fn = os.path.join(self.tmp, "somefile.txt") with self.stor.open(fn, "w") as fd: fd.write("stuff") with self.stor.open(fn, "r") as fd: eq_(fd.read(), "stuff") def test_non_ascii_filename(self): fn = os.path.join(self.tmp, u"Ivan Krsti\u0107.txt") with self.stor.open(fn, "w") as fd: fd.write("stuff") with self.stor.open(fn, "r") as fd: eq_(fd.read(), "stuff") def test_non_ascii_content(self): fn = os.path.join(self.tmp, "somefile.txt") with self.stor.open(fn, "w") as fd: fd.write(u"Ivan Krsti\u0107.txt".encode("utf8")) with self.stor.open(fn, "r") as fd: eq_(fd.read().decode("utf8"), u"Ivan Krsti\u0107.txt") def test_make_file_dirs(self): dp = os.path.join(self.tmp, "path", "to") self.stor.open(os.path.join(dp, "file.txt"), "w").close() assert os.path.exists(self.stor.path(dp)), "Directory not created: %r" % dp def test_do_not_make_file_dirs_when_reading(self): fpath = os.path.join(self.tmp, "file.txt") with open(fpath, "w") as fp: fp.write("content") # Make sure this doesn't raise an exception. self.stor.open(fpath, "r").close() def test_make_dirs_only_once(self): dp = os.path.join(self.tmp, "path", "to") with self.stor.open(os.path.join(dp, "file.txt"), "w") as fd: fd.write("stuff") # Make sure it doesn't try to make the dir twice with self.stor.open(os.path.join(dp, "file.txt"), "w") as fd: fd.write("stuff") with self.stor.open(os.path.join(dp, "file.txt"), "r") as fd: eq_(fd.read(), "stuff") def test_delete_empty_dir(self): dp = os.path.join(self.tmp, "path") os.mkdir(dp) self.stor.delete(dp) eq_(os.path.exists(dp), False) @raises(OSError) def test_cannot_delete_non_empty_dir(self): dp = os.path.join(self.tmp, "path") with self.stor.open(os.path.join(dp, "file.txt"), "w") as fp: fp.write("stuff") self.stor.delete(dp) def test_delete_file(self): dp = os.path.join(self.tmp, "path") fn = os.path.join(dp, "file.txt") with self.stor.open(fn, "w") as fp: fp.write("stuff") self.stor.delete(fn) eq_(os.path.exists(fn), False) eq_(os.path.exists(dp), True)
def make_checksum(header_path, footer_path): ls = LocalFileStorage() raw_checksum = ls._open(header_path).read() + ls._open(footer_path).read() return hashlib.sha224(raw_checksum).hexdigest()
class TestLocalFileStorage(BaseTestCase): def setUp(self): super(TestLocalFileStorage, self).setUp() self.tmp = tempfile.mkdtemp() self.stor = LocalFileStorage() def tearDown(self): rm_local_tmp_dir(self.tmp) super(TestLocalFileStorage, self).tearDown() def test_read_write(self): fn = os.path.join(self.tmp, 'somefile.txt') with self.stor.open(fn, 'w') as fd: fd.write('stuff') with self.stor.open(fn, 'r') as fd: eq_(fd.read(), 'stuff') def test_non_ascii_filename(self): fn = os.path.join(self.tmp, u'Ivan Krsti\u0107.txt') with self.stor.open(fn, 'w') as fd: fd.write('stuff') with self.stor.open(fn, 'r') as fd: eq_(fd.read(), 'stuff') def test_non_ascii_content(self): fn = os.path.join(self.tmp, 'somefile.txt') with self.stor.open(fn, 'w') as fd: fd.write(u'Ivan Krsti\u0107.txt'.encode('utf8')) with self.stor.open(fn, 'r') as fd: eq_(fd.read().decode('utf8'), u'Ivan Krsti\u0107.txt') def test_make_file_dirs(self): dp = os.path.join(self.tmp, 'path', 'to') self.stor.open(os.path.join(dp, 'file.txt'), 'w').close() assert os.path.exists(self.stor.path(dp)), ( 'Directory not created: %r' % dp) def test_do_not_make_file_dirs_when_reading(self): fpath = os.path.join(self.tmp, 'file.txt') with open(fpath, 'w') as fp: fp.write('content') # Make sure this doesn't raise an exception. self.stor.open(fpath, 'r').close() def test_make_dirs_only_once(self): dp = os.path.join(self.tmp, 'path', 'to') with self.stor.open(os.path.join(dp, 'file.txt'), 'w') as fd: fd.write('stuff') # Make sure it doesn't try to make the dir twice with self.stor.open(os.path.join(dp, 'file.txt'), 'w') as fd: fd.write('stuff') with self.stor.open(os.path.join(dp, 'file.txt'), 'r') as fd: eq_(fd.read(), 'stuff') def test_delete_empty_dir(self): dp = os.path.join(self.tmp, 'path') os.mkdir(dp) self.stor.delete(dp) eq_(os.path.exists(dp), False) @raises(OSError) def test_cannot_delete_non_empty_dir(self): dp = os.path.join(self.tmp, 'path') with self.stor.open(os.path.join(dp, 'file.txt'), 'w') as fp: fp.write('stuff') self.stor.delete(dp) def test_delete_file(self): dp = os.path.join(self.tmp, 'path') fn = os.path.join(dp, 'file.txt') with self.stor.open(fn, 'w') as fp: fp.write('stuff') self.stor.delete(fn) eq_(os.path.exists(fn), False) eq_(os.path.exists(dp), True)
def make_checksum(header_path, footer_path): ls = LocalFileStorage() footer = footer_path and ls._open(footer_path).read() or '' raw_checksum = ls._open(header_path).read() + footer return hashlib.sha224(raw_checksum).hexdigest()