Найти - Пользователи
Полная версия: Django + WYSIWIG
Начало » Django » Django + WYSIWIG
1 2 3
serzh
установил 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
Наконец-то я вернулся к изучению джанги и сразу же наступил на те же грабли что и 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
Сам спросил - сам и ответил.
Если сделать всё как написано сдесьФайлбраузер в связке с тини-мце начинает исправно загружать и обрабатывать изображения складывая их в /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
Kostilo
документ в формате MS office загружается в каталог uploads/, а вот вставить его как ссылку на скачивание в окне редактора, файлбраузер мне не даёт.
Выделяем кусок текста в редакторе, жмём кнопку “вставить/редактировать ссылку”. Появляется файлбраузер и делает всё что нужно.
Kostilo
После долгих танцев с бубном вставил в конфиг 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 за подсказки:)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB