Wtower / django-ninecms

Nine CMS is a simple Django app to manage content. Users can create content and publish it to various paths.
BSD 3-Clause "New" or "Revised" License
42 stars 6 forks source link

Error when editing a node. #60

Closed sonus21 closed 2 years ago

sonus21 commented 8 years ago

Error when editing a node containing media file.

Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/ninecms/node/4/change/

Django Version: 1.9.7
Python Version: 3.4.3
Installed Applications:
['django_admin_bootstrapped',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'mptt',
 'guardian',
 'ninecms']
Installed Middleware:
['django.middleware.cache.UpdateCacheMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.locale.LocaleMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.cache.FetchFromCacheMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.security.SecurityMiddleware']

Template error:
In template /home/sonus/projects/freelancer-python/arhal2016_supreme/templates/admin/ninecms/node/change_form.html, error at line 0
   2   1 : {% extends "admin/change_form.html" %}
   2 : {% load i18n admin_urls admin_static admin_modify %}
   3 : 
   4 : {% comment %}
   5 : Template for Node edit form: add CKEditor
   6 : Author: George Karakostas
   7 : Copyright: Copyright 2015, George Karakostas
   8 : Licence: BSD-3
   9 : Email: gkarak@9-dev.com
   10 : {% endcomment %}

Traceback:

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response
  174.                     response = self.process_exception_by_middleware(e, request)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response
  172.                     response = response.render()

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/response.py" in render
  160.             self.content = self.rendered_content

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/response.py" in rendered_content
  137.         content = template.render(context, self._request)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/backends/django.py" in render
  95.             return self.template.render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in render
  206.                     return self._render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in _render
  197.         return self.nodelist.render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in render
  992.                 bit = node.render_annotated(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in render_annotated
  959.             return self.render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/loader_tags.py" in render
  173.         return compiled_parent._render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in _render
  197.         return self.nodelist.render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in render
  992.                 bit = node.render_annotated(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in render_annotated
  959.             return self.render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/loader_tags.py" in render
  173.         return compiled_parent._render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in _render
  197.         return self.nodelist.render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in render
  992.                 bit = node.render_annotated(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in render_annotated
  959.             return self.render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/loader_tags.py" in render
  173.         return compiled_parent._render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in _render
  197.         return self.nodelist.render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in render
  992.                 bit = node.render_annotated(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in render_annotated
  959.             return self.render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/loader_tags.py" in render
  69.                 result = block.nodelist.render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in render
  992.                 bit = node.render_annotated(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in render_annotated
  959.             return self.render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/loader_tags.py" in render
  69.                 result = block.nodelist.render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in render
  992.                 bit = node.render_annotated(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in render_annotated
  959.             return self.render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/defaulttags.py" in render
  220.                     nodelist.append(node.render_annotated(context))

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in render_annotated
  959.             return self.render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/loader_tags.py" in render
  209.                 return template.render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in render
  208.                 return self._render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in _render
  197.         return self.nodelist.render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in render
  992.                 bit = node.render_annotated(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in render_annotated
  959.             return self.render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/defaulttags.py" in render
  220.                     nodelist.append(node.render_annotated(context))

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in render_annotated
  959.             return self.render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/defaulttags.py" in render
  326.                 return nodelist.render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in render
  992.                 bit = node.render_annotated(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in render_annotated
  959.             return self.render(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in render
  1043.             output = self.filter_expression.resolve(context)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/django/template/base.py" in resolve
  736.                 new_obj = func(obj, *arg_vals)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/ninecms/templatetags/ninecms_extras.py" in image_style
  26.     return util_image(image, style)

File "/home/sonus/projects/envs/3.4-1/lib/python3.4/site-packages/ninecms/utils/media.py" in image_style
  157.             source_size_str = check_output(['identify', img_path_file_name]).decode()

File "/usr/lib/python3.4/subprocess.py" in check_output
  607.     with Popen(*popenargs, stdout=PIPE, **kwargs) as process:

File "/usr/lib/python3.4/subprocess.py" in __init__
  859.                                 restore_signals, start_new_session)

File "/usr/lib/python3.4/subprocess.py" in _execute_child
  1457.                     raise child_exception_type(errno_num, err_msg)

Exception Type: FileNotFoundError at /admin/ninecms/node/4/change/
Exception Value: [Errno 2] No such file or directory: 'identify'
Wtower commented 8 years ago

Thank you for the reported issue. Ninecms uses the imagemagick library for manipulating image styles. This is supposed to be optional, but apparently it is not properly checked.

A quick workaround is to install the library. For Ubuntu, it is sudo apt-get install imagemagick, although I suspect that you are using some other distribution because the exception thrown is different.

Could you let me know which OS you are using? Can you try installing imagemagick?

More specifically, on https://github.com/Wtower/django-ninecms/blob/v0.6.0/ninecms/utils/media.py#L157 the subprocess call is checked for CalledProcessError but it should be clearly checked for FileNotFoundError too.

sonus21 commented 8 years ago

Thank you Wtower, After installing imagemagick error has been fixed.

I am having following configurations, Ubuntu 14.04 LTS Python 3.4.3 Django 1.9.7 Django-nine-cms 0.6.1