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 test_rm_stored_dir(): tmp = tempfile.mkdtemp() jn = partial(os.path.join, tmp) try: storage.save(jn('file1.txt'), ContentFile('<stuff>')) storage.save(jn('one/file1.txt'), ContentFile('')) storage.save(jn('one/two/file1.txt'), ContentFile('moar stuff')) storage.save(jn(u'one/kristi\u0107/kristi\u0107.txt'), ContentFile('')) rm_stored_dir(jn('one')) yield (eq_, storage.exists(jn('one')), False) yield (eq_, storage.exists(jn('one/file1.txt')), False) yield (eq_, storage.exists(jn('one/two')), False) yield (eq_, storage.exists(jn('one/two/file1.txt')), False) yield (eq_, storage.exists(jn(u'one/kristi\u0107/kristi\u0107.txt')), False) yield (eq_, storage.exists(jn('file1.txt')), True) finally: rm_local_tmp_dir(tmp)