def browse(request, viewer, key=None, type='file'): form = forms.FileCompareForm(request.POST or None, addon=viewer.addon, initial={'left': viewer.file}, request=request) response = check_compare_form(request, form) if response: return response data = setup_viewer(request, viewer.file) data['viewer'] = viewer data['poll_url'] = reverse('files.poll', args=[viewer.file.id]) data['form'] = form if not viewer.is_extracted(): extract_file(viewer) if viewer.is_extracted(): data.update({'status': True, 'files': viewer.get_files()}) key = viewer.get_default(key) if key not in data['files']: raise http.Http404 viewer.select(key) data['key'] = key if (not viewer.is_directory() and not viewer.is_binary()): data['content'] = viewer.read_file() tmpl = 'files/content.html' if type == 'fragment' else 'files/viewer.html' return render(request, tmpl, data)
def compare(request, diff, key=None, type='file'): form = forms.FileCompareForm(request.POST or None, addon=diff.addon, initial={'left': diff.left.file, 'right': diff.right.file}, request=request) response = check_compare_form(request, form) if response: return response data = setup_viewer(request, diff.left.file) data['diff'] = diff data['poll_url'] = reverse('files.compare.poll', args=[diff.left.file.id, diff.right.file.id]) data['form'] = form if not diff.is_extracted(): extract_file(diff.left) extract_file(diff.right) if diff.is_extracted(): data.update({'status': True, 'files': diff.get_files(), 'files_deleted': diff.get_deleted_files()}) key = diff.left.get_default(key) if key not in data['files'] and key not in data['files_deleted']: raise http.Http404 diff.select(key) data['key'] = key if diff.is_diffable(): data['left'], data['right'] = diff.read_file() tmpl = 'files/content.html' if type == 'fragment' else 'files/viewer.html' return render(request, tmpl, data)
def test_extract_file_locked_message(self): self.viewer.src = get_file('dictionary-test.xpi') assert not self.viewer.is_extracted() lock_name = f'file-viewer-{self.viewer.file.pk}' with _run_lock_holding_process(lock_name, sleep=3): msg = extract_file(self.viewer) assert str(msg.get()).startswith(u'File viewer is locked') msg.delete()
def test_extract_file_locked_message(self): self.viewer.src = get_file('dictionary-test.xpi') assert not self.viewer.is_extracted() lock = flufl.lock.Lock( os.path.join(settings.TMP_PATH, 'file-viewer-%s.lock' % self.viewer.file.pk)) assert not lock.is_locked lock.lock() assert lock.is_locked msg = extract_file(self.viewer) assert str(msg.get()).startswith(u'File viewer is locked') msg.delete()
def test_extract_file_locked_message(self): self.viewer.src = get_file('dictionary-test.xpi') assert not self.viewer.is_extracted() lock = flufl.lock.Lock(os.path.join( settings.TMP_PATH, 'file-viewer-%s.lock' % self.viewer.file.pk )) assert not lock.is_locked lock.lock() assert lock.is_locked msg = extract_file(self.viewer) assert str(msg.get()).startswith(u'File viewer is locked') msg.delete()