Contentfeeds handler prevents adding image to Network News

Bug #633191 reported by Jim B. Glenn
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
KARL3
Fix Released
Medium
Tres Seaver

Bug Description

Reported by Nat and Error Monitor:

From Nat:
I just got a General KARL Error when I tried to attach a photo (Jpeg) to
a news item in Network News.

From Error Monitor:

ENTRY
Wed Sep 8 09:26:23 2010
Exception when processing https://karl.soros.org/offices/files/network-news/add_newsitem.html
Traceback (most recent call last):
  File "/opt/karl/osi/3.25-0/src/karl/karl/errorlog.py", line 15, in middleware
    return app(environ, start_response)
  File "/opt/karl/osi/3.25-0/eggs/repoze.zodbconn-0.11-py2.5.egg/repoze/zodbconn/connector.py", line 21, in __call__
    result = self.next_app(environ, start_response)
  File "/opt/karl/osi/3.25-0/eggs/repoze.retry-0.9.4-py2.5.egg/repoze/retry/__init__.py", line 88, in __call__
    app_iter = self.application(environ, replace_start_response)
  File "/opt/karl/osi/3.25-0/eggs/repoze.tm2-1.0a5-py2.5.egg/repoze/tm/__init__.py", line 23, in __call__
    result = self.application(environ, save_status_and_headers)
  File "/opt/karl/osi/3.25-0/eggs/Paste-1.7.2-py2.5.egg/paste/registry.py", line 350, in __call__
    app_iter = self.application(environ, start_response)
  File "/opt/karl/osi/3.25-0/eggs/repoze.who-1.0.15-py2.5.egg/repoze/who/middleware.py", line 107, in __call__
    app_iter = app(environ, wrapper.wrap_start_response)
  File "/opt/karl/osi/3.25-0/eggs/repoze.browserid-0.3-py2.5.egg/repoze/browserid/middleware.py", line 127, in __call__
    return self.app(environ, start_response)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/router.py", line 130, in __call__
    response = view_callable(context, request)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/configuration.py", line 1520, in __call__
    return view(context, request)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/configuration.py", line 1805, in attr_view
    return view(context, request)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/configuration.py", line 1738, in predicate_wrapper
    return view(context, request)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/configuration.py", line 1753, in _secured_view
    return view(context, request)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/configuration.py", line 1704, in _rendered_view
    response = view(context, request)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg.formish-0.3-py2.5.egg/repoze/bfg/formish/zcml.py", line 174, in __call__
    return submitted(request, form, controller, self.action, controller)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg.formish-0.3-py2.5.egg/repoze/bfg/formish/zcml.py", line 213, in submitted
    result = getattr(controller, handler)(converted)
  File "/opt/karl/osi/3.25-0/src/karl/karl/content/views/newsitem.py", line 164, in handle_submit
    handle_photo_upload(newsitem, converted)
  File "/opt/karl/osi/3.25-0/src/karl/karl/views/utils.py", line 297, in handle_photo_upload
    context['photo'] = photo
  File "/opt/karl/osi/3.25-0/eggs/repoze.folder-0.4-py2.5.egg/repoze/folder/__init__.py", line 141, in __setitem__
    return self.add(name, other)
  File "/opt/karl/osi/3.25-0/eggs/repoze.folder-0.4-py2.5.egg/repoze/folder/__init__.py", line 176, in add
    objectEventNotify(ObjectAddedEvent(other, self, name))
  File "/opt/karl/osi/3.25-0/eggs/zope.component-3.6.0-py2.5.egg/zope/component/event.py", line 33, in objectEventNotify
    adapters = zope.component.subscribers((event.object, event), None)
  File "/opt/karl/osi/3.25-0/eggs/zope.component-3.6.0-py2.5.egg/zope/component/_api.py", line 138, in subscribers
    return sitemanager.subscribers(objects, interface)
  File "/opt/karl/osi/3.25-0/eggs/zope.component-3.6.0-py2.5.egg/zope/component/registry.py", line 315, in subscribers
    return self.adapters.subscribers(objects, provided)
  File "/opt/karl/osi/3.25-0/eggs/zope.interface-3.5.1-py2.5-linux-x86_64.egg/zope/interface/adapter.py", line 535, in subscribers
    subscription(*objects)
  File "/opt/karl/osi/3.25-0/src/karl/karl/models/contentfeeds.py", line 205, in user_added_content
    profile = site['profiles'][profile_id]
  File "/opt/karl/osi/3.25-0/eggs/repoze.folder-0.4-py2.5.egg/repoze/folder/__init__.py", line 89, in __getitem__
    return self.data[name]
KeyError: u'commitment-of-100-million-over-ten-years-to-human-rights-watch'

ENTRY
Wed Sep 8 09:32:53 2010
Exception when processing https://karl.soros.org/offices/files/network-news/commitment-of-100-million-over-ten-years-to-human-rights-watch/edit.html
Traceback (most recent call last):
  File "/opt/karl/osi/3.25-0/src/karl/karl/errorlog.py", line 15, in middleware
    return app(environ, start_response)
  File "/opt/karl/osi/3.25-0/eggs/repoze.zodbconn-0.11-py2.5.egg/repoze/zodbconn/connector.py", line 21, in __call__
    result = self.next_app(environ, start_response)
  File "/opt/karl/osi/3.25-0/eggs/repoze.retry-0.9.4-py2.5.egg/repoze/retry/__init__.py", line 88, in __call__
    app_iter = self.application(environ, replace_start_response)
  File "/opt/karl/osi/3.25-0/eggs/repoze.tm2-1.0a5-py2.5.egg/repoze/tm/__init__.py", line 23, in __call__
    result = self.application(environ, save_status_and_headers)
  File "/opt/karl/osi/3.25-0/eggs/Paste-1.7.2-py2.5.egg/paste/registry.py", line 350, in __call__
    app_iter = self.application(environ, start_response)
  File "/opt/karl/osi/3.25-0/eggs/repoze.who-1.0.15-py2.5.egg/repoze/who/middleware.py", line 107, in __call__
    app_iter = app(environ, wrapper.wrap_start_response)
  File "/opt/karl/osi/3.25-0/eggs/repoze.browserid-0.3-py2.5.egg/repoze/browserid/middleware.py", line 127, in __call__
    return self.app(environ, start_response)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/router.py", line 130, in __call__
    response = view_callable(context, request)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/configuration.py", line 1520, in __call__
    return view(context, request)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/configuration.py", line 1805, in attr_view
    return view(context, request)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/configuration.py", line 1738, in predicate_wrapper
    return view(context, request)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/configuration.py", line 1753, in _secured_view
    return view(context, request)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/configuration.py", line 1704, in _rendered_view
    response = view(context, request)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg.formish-0.3-py2.5.egg/repoze/bfg/formish/zcml.py", line 174, in __call__
    return submitted(request, form, controller, self.action, controller)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg.formish-0.3-py2.5.egg/repoze/bfg/formish/zcml.py", line 213, in submitted
    result = getattr(controller, handler)(converted)
  File "/opt/karl/osi/3.25-0/src/karl/karl/content/views/newsitem.py", line 287, in handle_submit
    handle_photo_upload(context, converted)
  File "/opt/karl/osi/3.25-0/src/karl/karl/views/utils.py", line 297, in handle_photo_upload
    context['photo'] = photo
  File "/opt/karl/osi/3.25-0/eggs/repoze.folder-0.4-py2.5.egg/repoze/folder/__init__.py", line 141, in __setitem__
    return self.add(name, other)
  File "/opt/karl/osi/3.25-0/eggs/repoze.folder-0.4-py2.5.egg/repoze/folder/__init__.py", line 176, in add
    objectEventNotify(ObjectAddedEvent(other, self, name))
  File "/opt/karl/osi/3.25-0/eggs/zope.component-3.6.0-py2.5.egg/zope/component/event.py", line 33, in objectEventNotify
    adapters = zope.component.subscribers((event.object, event), None)
  File "/opt/karl/osi/3.25-0/eggs/zope.component-3.6.0-py2.5.egg/zope/component/_api.py", line 138, in subscribers
    return sitemanager.subscribers(objects, interface)
  File "/opt/karl/osi/3.25-0/eggs/zope.component-3.6.0-py2.5.egg/zope/component/registry.py", line 315, in subscribers
    return self.adapters.subscribers(objects, provided)
  File "/opt/karl/osi/3.25-0/eggs/zope.interface-3.5.1-py2.5-linux-x86_64.egg/zope/interface/adapter.py", line 535, in subscribers
    subscription(*objects)
  File "/opt/karl/osi/3.25-0/src/karl/karl/models/contentfeeds.py", line 205, in user_added_content
    profile = site['profiles'][profile_id]
  File "/opt/karl/osi/3.25-0/eggs/repoze.folder-0.4-py2.5.egg/repoze/folder/__init__.py", line 89, in __getitem__
    return self.data[name]
KeyError: u'commitment-of-100-million-over-ten-years-to-human-rights-watch'

ENTRY
Wed Sep 8 09:33:31 2010
Exception when processing https://karl.soros.org/offices/files/network-news/commitment-of-100-million-over-ten-years-to-human-rights-watch/edit.html
Traceback (most recent call last):
  File "/opt/karl/osi/3.25-0/src/karl/karl/errorlog.py", line 15, in middleware
    return app(environ, start_response)
  File "/opt/karl/osi/3.25-0/eggs/repoze.zodbconn-0.11-py2.5.egg/repoze/zodbconn/connector.py", line 21, in __call__
    result = self.next_app(environ, start_response)
  File "/opt/karl/osi/3.25-0/eggs/repoze.retry-0.9.4-py2.5.egg/repoze/retry/__init__.py", line 88, in __call__
    app_iter = self.application(environ, replace_start_response)
  File "/opt/karl/osi/3.25-0/eggs/repoze.tm2-1.0a5-py2.5.egg/repoze/tm/__init__.py", line 23, in __call__
    result = self.application(environ, save_status_and_headers)
  File "/opt/karl/osi/3.25-0/eggs/Paste-1.7.2-py2.5.egg/paste/registry.py", line 350, in __call__
    app_iter = self.application(environ, start_response)
  File "/opt/karl/osi/3.25-0/eggs/repoze.who-1.0.15-py2.5.egg/repoze/who/middleware.py", line 107, in __call__
    app_iter = app(environ, wrapper.wrap_start_response)
  File "/opt/karl/osi/3.25-0/eggs/repoze.browserid-0.3-py2.5.egg/repoze/browserid/middleware.py", line 127, in __call__
    return self.app(environ, start_response)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/router.py", line 130, in __call__
    response = view_callable(context, request)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/configuration.py", line 1520, in __call__
    return view(context, request)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/configuration.py", line 1805, in attr_view
    return view(context, request)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/configuration.py", line 1738, in predicate_wrapper
    return view(context, request)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/configuration.py", line 1753, in _secured_view
    return view(context, request)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/configuration.py", line 1704, in _rendered_view
    response = view(context, request)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg.formish-0.3-py2.5.egg/repoze/bfg/formish/zcml.py", line 174, in __call__
    return submitted(request, form, controller, self.action, controller)
  File "/opt/karl/osi/3.25-0/eggs/repoze.bfg.formish-0.3-py2.5.egg/repoze/bfg/formish/zcml.py", line 213, in submitted
    result = getattr(controller, handler)(converted)
  File "/opt/karl/osi/3.25-0/src/karl/karl/content/views/newsitem.py", line 287, in handle_submit
    handle_photo_upload(context, converted)
  File "/opt/karl/osi/3.25-0/src/karl/karl/views/utils.py", line 297, in handle_photo_upload
    context['photo'] = photo
  File "/opt/karl/osi/3.25-0/eggs/repoze.folder-0.4-py2.5.egg/repoze/folder/__init__.py", line 141, in __setitem__
    return self.add(name, other)
  File "/opt/karl/osi/3.25-0/eggs/repoze.folder-0.4-py2.5.egg/repoze/folder/__init__.py", line 176, in add
    objectEventNotify(ObjectAddedEvent(other, self, name))
  File "/opt/karl/osi/3.25-0/eggs/zope.component-3.6.0-py2.5.egg/zope/component/event.py", line 33, in objectEventNotify
    adapters = zope.component.subscribers((event.object, event), None)
  File "/opt/karl/osi/3.25-0/eggs/zope.component-3.6.0-py2.5.egg/zope/component/_api.py", line 138, in subscribers
    return sitemanager.subscribers(objects, interface)
  File "/opt/karl/osi/3.25-0/eggs/zope.component-3.6.0-py2.5.egg/zope/component/registry.py", line 315, in subscribers
    return self.adapters.subscribers(objects, provided)
  File "/opt/karl/osi/3.25-0/eggs/zope.interface-3.5.1-py2.5-linux-x86_64.egg/zope/interface/adapter.py", line 535, in subscribers
    subscription(*objects)
  File "/opt/karl/osi/3.25-0/src/karl/karl/models/contentfeeds.py", line 205, in user_added_content
    profile = site['profiles'][profile_id]
  File "/opt/karl/osi/3.25-0/eggs/repoze.folder-0.4-py2.5.egg/repoze/folder/__init__.py", line 89, in __getitem__
    return self.data[name]
KeyError: u'commitment-of-100-million-over-ten-years-to-human-rights-watch'

Revision history for this message
Paul Everitt (paul-agendaless) wrote :

Probably one we need to fix before Friday's update.

Changed in karl3:
assignee: nobody → Tres Seaver (tseaver)
importance: Undecided → Medium
milestone: none → m47
summary: - (OSI) Cant add image to network news
+ Contentfeeds handler prevents adding image to Network News
Revision history for this message
Tres Seaver (tseaver) wrote : Re: [Bug 633191] [NEW] (OSI) Cant add image to network news

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Launchpad Bug Tracker wrote:
> You have been assigned a bug task for a public bug by Paul Everitt (paul-agendaless):
>
> Reported by Nat and Error Monitor:
>
>>From Nat:
> I just got a General KARL Error when I tried to attach a photo (Jpeg) to
> a news item in Network News.

> File "/opt/karl/osi/3.25-0/src/karl/karl/models/contentfeeds.py", line 205, in user_added_content
> profile = site['profiles'][profile_id]
> File "/opt/karl/osi/3.25-0/eggs/repoze.folder-0.4-py2.5.egg/repoze/folder/__init__.py", line 89, in __getitem__
> return self.data[name]
> KeyError: u'commitment-of-100-million-over-ten-years-to-human-rights-watch'

  status inprogress

The 'profile_id' is computed in 'user_added_content' as the 'creator'
attribute of the thing being added. That photo gets the bizarrely-wrong
value set via the following code::

        photo = create_content(
            ICommunityFile,
            title='Photo of ' + context.title,
            stream=upload_file,
            mimetype=upload_type,
            filename=basename_of_filepath(upload.filename),
            creator=context.__name__
        )

which stupidly assumes that photos are only ever attached to profiles.

Tres.
- --
===================================================================
Tres Seaver +1 540-429-0999 <email address hidden>
Palladion Software "Excellence by Design" http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkyHp0MACgkQ+gerLs4ltQ4C6ACfatWd21VElJILPXR2gfBqgN5n
9m0AniEd0gxUGNwVQ6uSlGspVlMJAm89
=ija/
-----END PGP SIGNATURE-----

Changed in karl3:
status: New → In Progress
Revision history for this message
Tres Seaver (tseaver) wrote :

Fix committed on the karl trunk.

Changed in karl3:
status: In Progress → Fix Committed
Revision history for this message
JimPGlenn (jpglenn09) wrote :

Fixed

Changed in karl3:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.