Skip to content

Commit

Permalink
Remove Grok
Browse files Browse the repository at this point in the history
  • Loading branch information
rodfersou committed Jun 7, 2016
1 parent a23e735 commit 6118f70
Show file tree
Hide file tree
Showing 8 changed files with 116 additions and 77 deletions.
1 change: 0 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
zip_safe=False,
install_requires=[
'Acquisition',
'five.grok',
'plone.api',
'plone.app.content',
'plone.app.contentmenu',
Expand Down
3 changes: 0 additions & 3 deletions src/collective/upload/behaviors.zcml
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:plone="http://namespaces.plone.org/plone"
xmlns:grok="http://namespaces.zope.org/grok"
i18n_domain="collective.upload">

<include package="plone.behavior" file="meta.zcml" />

<grok:grok package=".behaviors" />

<plone:behavior
title="Multiple file and image upload"
description="Add a new action in the add new menu, allowing the multiple upload of files or images"
Expand Down
51 changes: 16 additions & 35 deletions src/collective/upload/browser.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,22 @@
from Acquisition import aq_inner
from collective.upload import _
from collective.upload.config import IMAGE_MIMETYPES
from collective.upload.interfaces import IUploadBrowserLayer
from collective.upload.interfaces import IUploadSettings
from collective.upload.logger import logger
from five import grok
from PIL import Image
from plone.app.content.browser.foldercontents import FolderContentsView
from plone.namedfile.file import NamedBlobFile
from plone.namedfile.file import NamedBlobImage
from plone.registry.interfaces import IRegistry
from Products.ATContentTypes.interfaces import IATFile
from Products.ATContentTypes.interfaces import IATImage
from Products.CMFPlone.utils import safe_hasattr
from Products.CMFPlone.utils import safe_unicode
from Products.Five.browser import BrowserView
from zope.component import getUtility
from zope.component import queryMultiAdapter
from zope.container.interfaces import INameChooser
from zope.event import notify
from zope.i18n import translate
from zope.interface import Interface
from zope.lifecycleevent import ObjectModifiedEvent

import base64
Expand All @@ -29,23 +26,11 @@
import urllib2


grok.templatedir('templates')


# TODO: implement drag&drop here
class Folder_Contents(grok.View, FolderContentsView):
grok.context(Interface)
grok.layer(IUploadBrowserLayer)
grok.require('cmf.ListFolderContents')


# TODO: convert into a folder action: Upload files and images
class Media_Uploader(grok.View):
class MediaUploader(BrowserView):
""" Handler for the upload process, creation of files, can set a title or
description, the place to touch if you need extra data saved.
"""
grok.context(Interface) # XXX: what's the interface of folderish objects?
grok.require('collective.upload.UploadFiles')

files = []

Expand All @@ -68,7 +53,7 @@ def __call__(self, *args, **kwargs):
upped.append(json_view.getContextInfo(item))
return json_view.dumps(upped)
return json_view()
return super(Media_Uploader, self).__call__(*args, **kwargs)
return super(MediaUploader, self).__call__(*args, **kwargs)

def upload(self, files, title='', description='', rights=''):
loaded = []
Expand Down Expand Up @@ -121,14 +106,10 @@ def upload(self, files, title='', description='', rights=''):
return False


class JSON_View(grok.View):
class JSONView(BrowserView):
""" JSON converter; the jQuery plugin requires this kind of response,
represent the metadata info of the file.
"""
grok.context(Interface)
grok.name('api')
grok.require('cmf.AddPortalContent')
grok.layer(IUploadBrowserLayer)

json_var = {'name': 'File-Name.jpg',
'title': '',
Expand All @@ -143,7 +124,7 @@ class JSON_View(grok.View):

def __call__(self):
self.response.setHeader('Content-Type', 'text/plain')
return super(JSON_View, self).__call__()
return super(JSONView, self).__call__()

def dumps(self, json_var=None):
""" """
Expand Down Expand Up @@ -206,13 +187,13 @@ def render(self):
}


class JSVariables(grok.View):
class JSVariables(BrowserView):
""" This method generates global JavaScript variables, for i18n and plugin
configuration.
"""
grok.context(Interface)
grok.name('jsvariables')
grok.layer(IUploadBrowserLayer)

def __call__(self):
return self.render()

def render(self):
response = self.request.response
Expand Down Expand Up @@ -240,18 +221,19 @@ def registry_config(self):
return str(config)


class JSONImageConverter(grok.View):
class JSONImageConverter(BrowserView):
""" Serialize an image into a base64 arg.
"""
grok.context(Interface)
grok.name('jsonimageserializer')
grok.layer(IUploadBrowserLayer)

def __call__(self):
return self.render()

def render(self):
# Surround everything in a try/except
try:
# Get the parameters from the URL
query = self.request
response = self.request.response

# If the user has specified a URL
if 'url' in query:
Expand Down Expand Up @@ -296,7 +278,6 @@ def render(self):
data = callback + '(' + data + ');'

# Return the JSON
response = self.request.response
response.setHeader('content-type', 'application/json;;charset=utf-8')

return data
Expand All @@ -314,9 +295,9 @@ def render(self):
# If urllib errors
except urllib2.HTTPError, e:
if e.code == 404:
self.response.setStatus(self, 404, lock=None)
response.setStatus(self, 404, lock=None)
else:
self.response.setStatus(self, 500, lock=None)
response.setStatus(self, 500, lock=None)
except urllib2.URLError, e:
logger.error('URLError', e)

Expand Down
77 changes: 77 additions & 0 deletions src/collective/upload/browser.zcml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser"
xmlns:five="http://namespaces.zope.org/five"
xmlns:i18n="http://namespaces.zope.org/i18n"
i18n_domain="collective.upload">

<browser:page
name="upload-settings"
for="Products.CMFPlone.interfaces.IPloneSiteRoot"
class=".controlpanel.UploadSettingsControlPanel"
permission="collective.upload.Setup"
layer=".interfaces.IUploadBrowserLayer"
/>

<browser:page
for="*"
name="media_uploader"
class=".browser.MediaUploader"
permission="collective.upload.UploadFiles"
template="templates/media_uploader.pt"
layer=".interfaces.IUploadBrowserLayer"
/>

<browser:page
for="*"
name="api"
class=".browser.JSONView"
permission="cmf.AddPortalContent"
layer=".interfaces.IUploadBrowserLayer"
/>

<browser:page
for="*"
name="jsvariables"
class=".browser.JSVariables"
permission="zope.Public"
layer=".interfaces.IUploadBrowserLayer"
/>

<browser:page
for="*"
name="jsonimageserializer"
class=".browser.JSONImageConverter"
permission="zope.Public"
layer=".interfaces.IUploadBrowserLayer"
/>

<browser:page
for="*"
class="plone.app.content.browser.foldercontents.FolderContentsView"
name="folder_contents"
template="templates/folder_contents.pt"
permission="cmf.ListFolderContents"
layer="collective.upload.interfaces.IUploadBrowserLayer"
/>

<!-- Menu item -->
<adapter
for="* collective.upload.interfaces.IUploadBrowserLayer"
name="plone.contentmenu.factories"
factory="collective.upload.menu.FactoriesSubMenuItem"
provides="plone.app.contentmenu.interfaces.IContentMenuItem"
/>

<browser:menu
id="upload_contentmenu_factory"
title="The 'add' menu - allows the user to add new content items in the context"
class=".menu.FactoriesMenu"
/>

<browser:resourceDirectory
name="collective.upload"
directory="static"
/>

</configure>
27 changes: 2 additions & 25 deletions src/collective/upload/configure.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@
xmlns="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser"
xmlns:five="http://namespaces.zope.org/five"
xmlns:grok="http://namespaces.zope.org/grok"
xmlns:i18n="http://namespaces.zope.org/i18n"
i18n_domain="collective.upload">

<five:registerPackage package="." />
<i18n:registerTranslations directory="locales" />
<include package="five.grok" />
<include package="Products.CMFCore" file="permissions.zcml" />

<permission id="collective.upload.Setup" title="collective.upload: Setup" />
Expand All @@ -18,30 +16,9 @@
title="collective.upload: Upload Files"
/>

<grok:grok package="." />
<include file="browser.zcml" />
<include file="viewlets.zcml" />
<include file="behaviors.zcml" />
<include file="profiles.zcml" />

<browser:page
name="upload-settings"
for="Products.CMFPlone.interfaces.IPloneSiteRoot"
class="collective.upload.controlpanel.UploadSettingsControlPanel"
permission="collective.upload.Setup"
/>

<!-- Menu item -->
<adapter
for="* collective.upload.interfaces.IUploadBrowserLayer"
name="plone.contentmenu.factories"
factory="collective.upload.menu.FactoriesSubMenuItem"
provides="plone.app.contentmenu.interfaces.IContentMenuItem" />

<browser:menu
id="upload_contentmenu_factory"
title="The 'add' menu - allows the user to add new content items in the context"
class=".menu.FactoriesMenu"
/>

<browser:resourceDirectory name="collective.upload" directory="static" />

</configure>
14 changes: 2 additions & 12 deletions src/collective/upload/viewlets.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,10 @@
# -*- coding: utf-8 -*-
from five import grok
from plone.app.layout.viewlets.interfaces import IHtmlHead
from plone.app.layout.viewlets.common import ViewletBase
from Products.CMFCore.interfaces import IFolderish
from zope.component import getMultiAdapter
from zope.interface import Interface


grok.templatedir('viewlets')


class Tmpls(grok.Viewlet):
grok.context(Interface)
grok.name(u'collective.upload.tmpls')
grok.require('cmf.AddPortalContent')
grok.template('tmpls')
grok.viewletmanager(IHtmlHead)
class Tmpls(ViewletBase):

def enabled(self):
"""
Expand Down
18 changes: 18 additions & 0 deletions src/collective/upload/viewlets.zcml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser"
xmlns:five="http://namespaces.zope.org/five"
xmlns:i18n="http://namespaces.zope.org/i18n"
i18n_domain="collective.upload">

<browser:viewlet
for="*"
name="collective.upload.tmpls"
manager="plone.app.layout.viewlets.interfaces.IHtmlHead"
class=".viewlets.Tmpls"
permission="cmf.AddPortalContent"
template="viewlets/tmpls.pt"
layer=".interfaces.IUploadBrowserLayer"
/>

</configure>
2 changes: 1 addition & 1 deletion src/collective/upload/viewlets/tmpls.pt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<tal:x-tmpl condition="viewlet/enabled">
<tal:x-tmpl condition="view/enabled">
<!-- The template to display files available for upload -->
<script id="template-upload" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
Expand Down

0 comments on commit 6118f70

Please sign in to comment.