Skip to content

Commit

Permalink
Merge pull request #55 from collective/issue-34
Browse files Browse the repository at this point in the history
Also render the portlet when viewing a default page.
  • Loading branch information
frisi committed Nov 11, 2015
2 parents 1319e23 + bdf9e0e commit f08520f
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 13 deletions.
23 changes: 14 additions & 9 deletions collective/quickupload/portlet/quickuploadportlet.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
## Copyright (C)2010 Alter Way Solutions
# Copyright (C)2010 Alter Way Solutions
from Acquisition import aq_base
from Acquisition import aq_inner
from Acquisition import aq_parent
Expand All @@ -18,6 +18,7 @@
from plone.memoize.compress import xhtml_compress
from plone.portlets.interfaces import IPortletDataProvider
from zope import schema
from zope.component import getMultiAdapter
from zope.formlib import form
from zope.i18nmessageid import MessageFactory
from zope.interface import implements
Expand Down Expand Up @@ -161,9 +162,9 @@ def _clean_session(self):
# since the portlet don't use it, but another app could
if session:
# session does not implement dict API. it's a TransientObject
if session.has_key('typeupload'):
if session.has_key('typeupload'): # noqa
session.delete('typeupload')
if session.has_key('mediaupload'):
if session.has_key('mediaupload'): # noqa
session.delete('mediaupload')

def render(self):
Expand All @@ -176,21 +177,25 @@ def available(self):
or IFolderContentsView.providedBy(self.view)):
return False

# Context could be a default page. We want the canonical object
# instead.
context = aq_inner(self.context)

if not IQuickUploadCapable.providedBy(context):
pcs = getMultiAdapter(
(context, self.request), name='plone_context_state')
canonical = pcs.canonical_object()
if not IQuickUploadCapable.providedBy(canonical):
return False
elif IQuickUploadNotCapable.providedBy(context):
elif IQuickUploadNotCapable.providedBy(canonical):
return False
elif not self.pm.checkPermission('Add portal content', context):
elif not self.pm.checkPermission('Add portal content', canonical):
return False
elif isTemporary(context):
elif isTemporary(canonical):
return False

upload_portal_type = self.data.upload_portal_type
if (upload_portal_type and upload_portal_type != 'auto'
and upload_portal_type not in [
t.id for t in self.context.getAllowedTypes()
t.id for t in canonical.getAllowedTypes()
]):
return False
else:
Expand Down
3 changes: 3 additions & 0 deletions collective/quickupload/testing.py
Expand Up @@ -32,6 +32,9 @@ def setUpPloneSite(self, portal):
setRoles(portal, TEST_USER_ID, ['Manager'])
login(portal, TEST_USER_NAME)
portal.invokeFactory('Folder', 'test-folder', title=u"Test Folder")
folder = portal['test-folder']
folder.invokeFactory('Document', 'test-doc', title=u"Test Document")
folder.setDefaultPage('test-doc')
setRoles(portal, TEST_USER_ID, ['Member'])


Expand Down
9 changes: 5 additions & 4 deletions collective/quickupload/tests/portlet.txt
Expand Up @@ -16,6 +16,7 @@ Plone Quick Upload Portlet
>>> from collective.quickupload.portlet import quickuploadportlet
>>> portal = layer['portal']
>>> folder = portal['test-folder']
>>> doc = folder['test-doc']
>>> setRoles(portal, TEST_USER_ID, ['Manager'])
>>> login(portal, TEST_USER_NAME)

Expand Down Expand Up @@ -55,7 +56,7 @@ Test portlet Edit View
----------------------

>>> mapping = PortletAssignmentMapping()
>>> request = folder.REQUEST
>>> request = doc.REQUEST
>>> mapping['foo'] = quickuploadportlet.Assignment(header=u"", upload_portal_type=u"Image", upload_media_type=u"image")
>>> editview = getMultiAdapter((mapping['foo'], request), name='edit')
>>> isinstance(editview, quickuploadportlet.EditForm)
Expand All @@ -64,11 +65,11 @@ Test portlet Edit View
Test portlet Rendering
----------------------

>>> request = folder.REQUEST
>>> view = folder.restrictedTraverse('@@folder_contents')
>>> request = doc.REQUEST
>>> view = doc.restrictedTraverse('@@folder_contents')
>>> manager = getUtility(IPortletManager, name='plone.rightcolumn', context=portal)
>>> assignment = quickuploadportlet.Assignment(header=u"", upload_portal_type=u"Image", upload_media_type=u"image")
>>> renderer = getMultiAdapter((folder, request, view, manager, assignment), IPortletRenderer)
>>> renderer = getMultiAdapter((doc, request, view, manager, assignment), IPortletRenderer)
>>> isinstance(renderer, quickuploadportlet.Renderer)
True
>>> renderer.available
Expand Down
4 changes: 4 additions & 0 deletions docs/HISTORY.rst
Expand Up @@ -4,6 +4,10 @@ Changelog
1.8.1 (unreleased)
------------------

- Also render the portlet when viewing a default page.
Fixes #34.
[maurits]

- Updated Dutch translations.
[maurits]

Expand Down

0 comments on commit f08520f

Please sign in to comment.