serzh
Май 27, 2014 12:07:14
установил tinymce, Grappelli, Pillow, FileBrowser.
все везде прописал
кнопки “загрузить изображения” нет
и при запуске python manage.py test filebrowser выдает:
Сорри, не знаю где соль, скопировал все:
ERROR: filebrowser.tests.test_base (unittest.loader.ModuleImportFailure)
Traceback (most recent call last): File “C:\Python33\lib\unittest\case.py”, line 384, in _executeTestPart function() File “C:\Python33\lib\unittest\loader.py”, line 32, in testFailure raise exception ImportError: Failed to import test module: filebrowser.tests.test_base Traceback (most recent call last): File “C:\Python33\lib\unittest\loader.py”, line 261, in _find_tests module = self._get_module_from_name(name) File “C:\Python33\lib\unittest\loader.py”, line 239, in _get_module_from_name import(name) File “C:\Python33\lib\site-packages\filebrowser\tests__init__.py”, line 3, in <module> from filebrowser.tests.test_sites import * File “C:\Python33\lib\site-packages\filebrowser\tests\test_sites.py”, line 425, in <module> all_sites = get_resolver(get_urlconf()).app_dict KeyError: ‘filebrowser’
====================================================================== ERROR: filebrowser.tests.test_commands (unittest.loader.ModuleImportFailure)
Traceback (most recent call last): File “C:\Python33\lib\unittest\case.py”, line 384, in _executeTestPart function() File “C:\Python33\lib\unittest\loader.py”, line 32, in testFailure raise exception ImportError: Failed to import test module: filebrowser.tests.test_commands Traceback (most recent call last): File “C:\Python33\lib\unittest\loader.py”, line 261, in _find_tests module = self._get_module_from_name(name) File “C:\Python33\lib\unittest\loader.py”, line 239, in _get_module_from_name import(name) File “C:\Python33\lib\site-packages\filebrowser\tests__init__.py”, line 3, in <module> from filebrowser.tests.test_sites import * File “C:\Python33\lib\site-packages\filebrowser\tests\test_sites.py”, line 425, in <module> all_sites = get_resolver(get_urlconf()).app_dict KeyError: ‘filebrowser’
====================================================================== ERROR: filebrowser.tests.test_forms (unittest.loader.ModuleImportFailure)
Traceback (most recent call last): File “C:\Python33\lib\unittest\case.py”, line 384, in _executeTestPart function() File “C:\Python33\lib\unittest\loader.py”, line 32, in testFailure raise exception ImportError: Failed to import test module: filebrowser.tests.test_forms Traceback (most recent call last): File “C:\Python33\lib\unittest\loader.py”, line 261, in _find_tests module = self._get_module_from_name(name) File “C:\Python33\lib\unittest\loader.py”, line 239, in _get_module_from_name import(name) File “C:\Python33\lib\site-packages\filebrowser\tests__init__.py”, line 3, in <module> from filebrowser.tests.test_sites import * File “C:\Python33\lib\site-packages\filebrowser\tests\test_sites.py”, line 425, in <module> all_sites = get_resolver(get_urlconf()).app_dict KeyError: ‘filebrowser’
====================================================================== ERROR: filebrowser.tests.test_sites (unittest.loader.ModuleImportFailure)
Traceback (most recent call last): File “C:\Python33\lib\unittest\case.py”, line 384, in _executeTestPart function() File “C:\Python33\lib\unittest\loader.py”, line 32, in testFailure raise exception ImportError: Failed to import test module: filebrowser.tests.test_sites Traceback (most recent call last): File “C:\Python33\lib\unittest\loader.py”, line 261, in _find_tests module = self._get_module_from_name(name) File “C:\Python33\lib\unittest\loader.py”, line 239, in _get_module_from_name import(name) File “C:\Python33\lib\site-packages\filebrowser\tests__init__.py”, line 3, in <module> from filebrowser.tests.test_sites import * File “C:\Python33\lib\site-packages\filebrowser\tests\test_sites.py”, line 425, in <module> all_sites = get_resolver(get_urlconf()).app_dict KeyError: ‘filebrowser’
====================================================================== ERROR: filebrowser.tests.test_templatetags (unittest.loader.ModuleImportFailure)
Traceback (most recent call last): File “C:\Python33\lib\unittest\case.py”, line 384, in _executeTestPart function() File “C:\Python33\lib\unittest\loader.py”, line 32, in testFailure raise exception ImportError: Failed to import test module: filebrowser.tests.test_templatetags Traceback (most recent call last): File “C:\Python33\lib\unittest\loader.py”, line 261, in _find_tests module = self._get_module_from_name(name) File “C:\Python33\lib\unittest\loader.py”, line 239, in _get_module_from_name import(name) File “C:\Python33\lib\site-packages\filebrowser\tests__init__.py”, line 3, in <module> from filebrowser.tests.test_sites import * File “C:\Python33\lib\site-packages\filebrowser\tests\test_sites.py”, line 425, in <module> all_sites = get_resolver(get_urlconf()).app_dict KeyError: ‘filebrowser’
====================================================================== ERROR: filebrowser.tests.test_versions (unittest.loader.ModuleImportFailure)
Traceback (most recent call last): File “C:\Python33\lib\unittest\case.py”, line 384, in _executeTestPart function() File “C:\Python33\lib\unittest\loader.py”, line 32, in testFailure raise exception ImportError: Failed to import test module: filebrowser.tests.test_versions Traceback (most recent call last): File “C:\Python33\lib\unittest\loader.py”, line 261, in _find_tests module = self._get_module_from_name(name) File “C:\Python33\lib\unittest\loader.py”, line 239, in _get_module_from_name import(name) File “C:\Python33\lib\site-packages\filebrowser\tests__init__.py”, line 3, in <module> from filebrowser.tests.test_sites import * File “C:\Python33\lib\site-packages\filebrowser\tests\test_sites.py”, line 425, in <module> all_sites = get_resolver(get_urlconf()).app_dict KeyError: ‘filebrowser’
====================================================================== FAIL: test_directory (filebrowser.tests.test_settings.SettingsTests)
Traceback (most recent call last): File “C:\Python33\lib\site-packages\filebrowser\tests\test_settings.py”, line 29, in test_directory self.assertEqual(os.path.exists(os.path.join(MEDIA_ROOT, DIRECTORY)), 1) AssertionError: False != 1
Ran 21 tests in 0.055s
FAILED (failures=1, errors=6)
Kostilo
Июнь 3, 2014 07:09:45
Наконец-то я вернулся к изучению джанги и сразу же наступил на те же грабли что и
serzhВ админке нажимаем кнопку “новая статья”. При нажатии на кнопку “всавить изображение” в появившемся редакторе получаем в консоли:
[03/Jun/2014 02:23:39] "GET /admin/blog/entry/add/lists/image_list.js/ HTTP/1.1" 404 1730
...
error: [Errno 32] Broken pipe
в появившемся окошке insert/edit image нажимаем кнопку “image URL” получаем в консоле:
[03/Jun/2014 02:27:04] "GET /admin/filebrowser/browse/media/uploads/3_admin_thumbnail.jpg HTTP/1.1" 404 5892
[03/Jun/2014 02:27:04] "GET /admin/filebrowser/browse/media/uploads/1c-1_admin_thumbnail.png HTTP/1.1" 404 5901
[03/Jun/2014 02:27:04] "GET /admin/filebrowser/browse/media/uploads/img_0067_admin_thumbnail.jpg HTTP/1.1" 404 5913
при этом загрузка и обработка файлов происходит нормально. В каталоге media/uploads/ появляется полный набор image/big/large/medium/small/thumbnail. Но в окне файлброузера вместо иконок пустые прямоугольники.
Выбираем картинку и пытаемся вставить в редактор. В консоле получаем:
[03/Jun/2014 02:28:08] "GET /admin/blog/entry/add/media/uploads/img_0067.jpg/ HTTP/1.1" 404 1751
появляется прямоугольник изображения, с его описанием, при наведении мыши - название(title), тоесть есть всё кроме изображения
При переходе на страницу просмотра консоль пишет
[03/Jun/2014 02:32:33] "GET /admin/blog/entry/add/media/uploads/img_0067.jpg/ HTTP/1.1" 404 1751
Запускаю в консоле команду
$ python manage.py test filebrowser
получаю результат:
self.assertEqual(os.path.exists(os.path.join(MEDIA_ROOT, DIRECTORY)), 1)
AssertionError: False != 1
Мне уже и без этого было понятно что проблемы с настройкой путей.Сначала ошибок было много, но после упорного камлания в гугл осталась только эта.
тщательно читал тут:
https://django-filebrowser.readthedocs.org/en/3.5.2/settings.html#filebrowser-media-tinymce-mediaи сдесь:
https://github.com/sehmaschine/django-filebrowser/blob/master/filebrowser/ плюс куча разных блогов в которых авторы описывают свои варианты настроек. Ни один готовый вариант не подошёл, в результате мои настройки стали такими:
STATIC_ROOT = '/static/'
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = STATIC_URL + "grappelli/"
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'media'),
os.path.join(BASE_DIR, 'static'),
)
TINYMCE_JS_URL = STATIC_URL + "tiny_mce/tiny_mce.js"
TINYMCE_JS_ROOT = STATIC_URL + "tiny_mce"
TINYMCE_SPELLCHECKER=False
TINYMCE_FILEBROWSER = True
FILEBROWSER_DIRECTORY = 'media/uploads/'
FILEBROWSER_DEBUG = True
FILEBROWSER_MEDIA_ROOT = FILEBROWSER_DIRECTORY
Уважаемые знатоки, объясните пожалуйста какими должны быть настройки на самом деле?
Почему два разных действия обращаются за изображениями в два разных адреса
/admin/filebrowser/browse/media/uploads/
/admin/blog/entry/add/media/uploads/
в то время как реально они загружаются в каталог ./media/uploads/
Kostilo
Июнь 6, 2014 06:50:34
Сам спросил - сам и ответил.
Если сделать всё как написано
сдесьФайлбраузер в связке с тини-мце начинает исправно загружать и обрабатывать изображения складывая их в /media/uploads/, но выводить их в редакторе и на странице просмотра он их отказался наотрез по причине неправильно настроенной статики.
Вот мой вариант почти правильной настройки:
MEDIA_ROOT = ''
MEDIA_URL = '/media/'
STATIC_ROOT = '/static/'
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = STATIC_URL + "grappelli/admin"
TINYMCE_JS_URL = STATIC_URL + "tiny_mce/tiny_mce.js"
TINYMCE_JS_ROOT = STATIC_URL + "tiny_mce/"
TINYMCE_SPELLCHECKER=False
TINYMCE_FILEBROWSER = True
FILEBROWSER_MEDIA_ROOT = 'media/'
FILEBROWSER_MEDIA_URL = MEDIA_URL
FILEBROWSER_STATIC_ROOT = STATIC_ROOT
FILEBROWSER_STATIC_URL = STATIC_URL
FILEBROWSER_DIRECTORY = FILEBROWSER_MEDIA_ROOT + 'uploads/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'media'),
os.path.join(BASE_DIR, 'static'),
)
Почему настройки почти правильные? Потому что была решена проблема с изображениями, но осталась точно такая же с другими типами данных.Например документ в формате MS office загружается в каталог uploads/, а вот вставить его как ссылку на скачивание в окне редактора, файлбраузер мне не даёт. Или это как то по другому делается?
И ещё один прокол. Файлы в формате .odt, ods, .zip и многие другие очень актуальные для меня файлбраузер вообще игнорирует выдавая мне такое:
скриншот сдесьПри запуске команды
$ python manage.py test filebrowser
получаю ту же самую ошибку
self.assertEqual(os.path.exists(os.path.join(MEDIA_ROOT, DIRECTORY)), 1)
AssertionError: False != 1
Может быть ктонибудь подскажет в какую сторону нужно копать для решения этой проблем?.Очень много времени уходит в пустую.
Kostilo
Июнь 6, 2014 08:33:45
Kostilo
документ в формате MS office загружается в каталог uploads/, а вот вставить его как ссылку на скачивание в окне редактора, файлбраузер мне не даёт.
Выделяем кусок текста в редакторе, жмём кнопку “вставить/редактировать ссылку”. Появляется файлбраузер и делает всё что нужно.
Kostilo
Июнь 9, 2014 13:00:22
После долгих танцев с бубном вставил в конфиг tiny-mce
'template_external_list_url': TINYMCE_JS_ROOT + 'lists/template_list.js',
'external_link_list_url': TINYMCE_JS_ROOT + 'lists/link_list.js',
'external_image_list_url': TINYMCE_JS_ROOT + 'lists/image_list.js',
'media_external_list_url': TINYMCE_JS_ROOT + 'lists/media_list.js',
Консоль перестала ругаться, всё работает.
И только тест файлбраузера по прежнему бредит
FAIL: test_directory (filebrowser.tests.test_settings.SettingsTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/admin06/virtualka/filebrouser/lib/python2.6/site-packages/filebrowser/tests/test_settings.py", line 29, in test_directory
self.assertEqual(os.path.exists(os.path.join(MEDIA_ROOT, DIRECTORY)), 1)
AssertionError: False != 1
======================================================================
FAIL: test_get_file_extensions (filebrowser.tests.test_templatetags.TemplateTagsTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/admin06/virtualka/filebrouser/lib/python2.6/site-packages/filebrowser/tests/test_templatetags.py", line 16, in test_get_file_extensions
'.tif', '.tiff', '.mp3', '.mp4', '.wav', '.aiff', '.midi', '.m4p']))
AssertionError: Lists differ: ['.aiff', '.avi', '.css', '.cs... != ['.aiff', '.avi', '.csv', '.do...
First differing element 2:
.css
.csv
First list contains 9 additional elements.
First extra element 25:
.rm
['.aiff',
'.avi',
- '.css',
'.csv',
'.doc',
'.docx',
'.gif',
- '.html',
'.jpeg',
'.jpg',
- '.js',
'.m4p',
'.midi',
'.mov',
'.mp3',
'.mp4',
'.mpeg',
'.mpg',
- '.odg',
- '.ods',
- '.odt',
'.pdf',
'.png',
- '.py',
- '.rar',
'.rm',
'.rtf',
'.tif',
'.tiff',
'.txt',
'.wav',
'.wmv',
- '.xls',
? ^
+ '.xls']
? ^
- '.zip']
----------------------------------------------------------------------
Ran 39 tests in 3.744s
FAILED (failures=2)
Чуть не забыл:
Чтобы добавить недостающие типы файлов, заходим в site-packages/filebrowser/settings.py.
ищем секцию
XTENSIONS = getattr(settings, "FILEBROWSER_EXTENSIONS", {
'Folder': [''],
'Image': ['.jpg', '.jpeg', '.gif', '.png', '.tif', '.tiff'],
'Document': ['.pdf', '.doc', '.rtf', '.txt', '.xls', '.csv', '.docx', '.zip', '.rar', '.odt', '.ods', '.odg', '.html','.py','.js','.css'],
'Video': ['.mov', '.wmv', '.mpeg', '.mpg', '.avi', '.rm'],
'Audio': ['.mp3', '.mp4', '.wav', '.aiff', '.midi', '.m4p'],
})
и добавляем всё что нужно.
Спасибо
ilnur за подсказки:)