Skip to content

Commit

Permalink
Remove components that no longer make sense and cleaned the tests acc…
Browse files Browse the repository at this point in the history
…ordingly
  • Loading branch information
trollfot committed Mar 16, 2011
1 parent 37e4e2b commit 717e666
Show file tree
Hide file tree
Showing 60 changed files with 29 additions and 1,570 deletions.
18 changes: 2 additions & 16 deletions setup.py
Expand Up @@ -15,38 +15,25 @@ def read(*rnames):
'grokcore.component >= 2.1',
'grokcore.security >= 1.5',
'martian >= 0.13',
'zope.browserresource >= 3.9.0',
'zope.component',
'zope.interface',
'zope.pagetemplate',
'zope.ptresource >= 3.9.0',
'zope.publisher',
'zope.security',
'zope.traversing',
]

tests_require = [
'zope.app.wsgi',
'zope.container',
'zope.securitypolicy',
'zope.site',
'zope.testing',
'zope.login',
'zope.configuration',
'zope.app.appsetup',
'zope.app.publication',
'zope.browserpage',
'zope.password',
'zope.principalregistry',
]

publication_require = [
'zope.app.publication'
]

setup(
name='grokcore.view',
version='2.5dev',
version='3.0dev',
author='Grok Team',
author_email='grok-dev@zope.org',
url='http://grok.zope.org',
Expand All @@ -68,6 +55,5 @@ def read(*rnames):
zip_safe=False,
install_requires=install_requires,
tests_require=tests_require,
extras_require={'test': tests_require,
'security_publication': publication_require},
extras_require={'test': tests_require},
)
6 changes: 1 addition & 5 deletions src/grokcore/view/__init__.py
Expand Up @@ -16,15 +16,11 @@
from grokcore.component import *
from grokcore.security import *

from zope.publisher.interfaces.browser import IBrowserRequest
from zope.publisher.interfaces.browser import IDefaultBrowserLayer

from grokcore.view.components import View, ViewSupport
from grokcore.view.components import PageTemplate, PageTemplateFile
from grokcore.view.interfaces import IGrokSecurityView
from grokcore.view.components import DirectoryResource
from grokcore.view.directive import (
layer, template, templatedir, skin, path, view)
layer, template, templatedir, path, view)
from grokcore.view.util import url, make_checker

# Import this module so that it's available as soon as you import the
Expand Down
74 changes: 10 additions & 64 deletions src/grokcore/view/components.py
Expand Up @@ -20,14 +20,9 @@

from zope import component
from zope import interface
from zope.browserresource import directory
from zope.browserresource.interfaces import IResourceFactoryFactory
from zope.location import Location
from zope.pagetemplate import pagetemplate, pagetemplatefile
from zope.pagetemplate.engine import TrustedAppPT
from zope.ptresource.ptresource import PageTemplateResourceFactory
from zope.publisher.browser import BrowserPage
from zope.publisher.interfaces import NotFound
from zope.publisher.publish import mapply

import martian.util
from grokcore.view import interfaces, util
Expand All @@ -45,13 +40,13 @@ def response(self):
This is also available as self.request.response, but the
response attribute is provided as a convenience.
"""
return self.request.response
return IResponse(self.request)

@property
def body(self):
"""The text of the request body.
"""
return self.request.bodyStream.getCacheStream().read()
return self.request.body

def redirect(self, url, status=None, trusted=False):
"""Redirect to `url`.
Expand All @@ -74,8 +69,7 @@ def redirect(self, url, status=None, trusted=False):
hosts than the one the request was sent to are forbidden and
will raise a :exc:`ValueError`.
"""
return self.request.response.redirect(
url, status=status, trusted=trusted)
return self.response.redirect(url, status=status, trusted=trusted)

def url(self, obj=None, name=None, data=None):
"""Return string for the URL based on the obj and name.
Expand Down Expand Up @@ -112,11 +106,13 @@ def url(self, obj=None, name=None, data=None):
return util.url(self.request, obj, name, data)


class View(ViewSupport, BrowserPage):
class View(Location, ViewSupport):
interface.implements(interfaces.IGrokView)

def __init__(self, context, request):
super(View, self).__init__(context, request)
self.context = context
self.request = request

self.__name__ = getattr(self, '__view_name__', None)

if getattr(self, 'module_info', None) is not None:
Expand All @@ -128,16 +124,11 @@ def __init__(self, context, request):
self.static = None

def __call__(self):
mapply(self.update, (), self.request)
if self.request.response.getStatus() in (302, 303):
# A redirect was triggered somewhere in update(). Don't
# continue rendering the template or doing anything else.
return

self.update()
template = getattr(self, 'template', None)
if template is not None:
return self._render_template()
return mapply(self.render, (), self.request)
return self.render()

def _render_template(self):
return self.template.render(self)
Expand Down Expand Up @@ -328,48 +319,3 @@ def __init__(self, filename, _prefix=None):


_marker = object()


class DirectoryResource(directory.DirectoryResource):
forbidden_names = ('.svn', )

def get(self, name, default=_marker):

for pat in self.forbidden_names:
if fnmatch.fnmatch(name, pat):
if default is _marker:
raise NotFound(None, name)
else:
return default

path = self.context.path
filename = os.path.join(path, name)
isfile = os.path.isfile(filename)
isdir = os.path.isdir(filename)

if not (isfile or isdir):
if default is _marker:
raise NotFound(None, name)
return default

if isfile:
ext = os.path.splitext(os.path.normcase(name))[1][1:]
factory = component.queryUtility(IResourceFactoryFactory, ext,
self.default_factory)
if factory is PageTemplateResourceFactory:
factory = self.default_factory
else:
factory = self.directory_factory

rname = self.__name__ + '/' + name
resource = factory(filename, self.context.checker, rname)(self.request)
resource.__parent__ = self
return resource


class DirectoryResourceFactory(directory.DirectoryResourceFactory):
# We need this to allow hooking up our own DirectoryResource class.
factoryClass = DirectoryResource


DirectoryResource.directory_factory = DirectoryResourceFactory
2 changes: 0 additions & 2 deletions src/grokcore/view/configure.zcml
Expand Up @@ -2,8 +2,6 @@
xmlns="http://namespaces.zope.org/zope"
xmlns:grok="http://namespaces.zope.org/grok">

<include package="zope.browserresource" />

<!-- ZPT support -->
<grok:grok package=".templatereg" />

Expand Down
13 changes: 3 additions & 10 deletions src/grokcore/view/directive.py
Expand Up @@ -19,8 +19,8 @@
import martian
from martian.error import GrokImportError
from martian.directive import StoreOnce
from zope.interface import Interface
from zope.interface.interface import TAGGED_DATA
from zope.publisher.interfaces.browser import IBrowserView


def validateLocalPath(directive, value):
Expand Down Expand Up @@ -88,18 +88,11 @@ def setattr(self, context, directive, value):
context.setTaggedValue(directive.dotted_name(), value)


class skin(martian.Directive):
# We cannot do any better than to check for a class scope. Ideally we
# would've checked whether the context is indeed an Interface class.
scope = martian.CLASS
store = TaggedValueStoreOnce()
validate = martian.validateText


class path(martian.Directive):
scope = martian.CLASS
store = martian.ONCE
validate = martian.validateText


class view(OneInterfaceOrClassOnClassOrModule):
default = IBrowserView
default = Interface
35 changes: 0 additions & 35 deletions src/grokcore/view/ftesting.zcml
Expand Up @@ -6,56 +6,21 @@
package="grokcore.view">

<include package="zope.component" file="meta.zcml" />
<include package="zope.security" file="meta.zcml" />
<include package="zope.securitypolicy" file="meta.zcml" />
<include package="zope.principalregistry" file="meta.zcml" />
<include package="zope.publisher" file="meta.zcml" />
<include package="zope.browserpage" file="meta.zcml" />
<include package="zope.app.publication" file="meta.zcml" />
<include package="grokcore.view" file="meta.zcml" />

<include package="zope.security" />
<include package="zope.principalregistry" />
<include package="zope.login" />
<include package="zope.password" />
<include package="zope.site" />
<include package="zope.container" />
<include package="zope.publisher" />
<include package="zope.traversing" />
<include package="zope.traversing.browser" />
<include package="zope.app.appsetup" />
<include package="zope.app.publication" />

<include package="grokcore.view" />
<grok:grok package="grokcore.view.ftests" />

<securityPolicy
component="zope.securitypolicy.zopepolicy.ZopeSecurityPolicy"
/>

<browser:defaultView
for="grokcore.component.interfaces.IContext"
name="index"
/>

<unauthenticatedPrincipal
id="zope.anybody"
title="Unauthenticated User"
/>
<grant
permission="zope.View"
principal="zope.anybody"
/>

<principal
id="zope.mgr"
title="Manager"
login="mgr"
password="mgrpw"
/>

<role id="zope.Manager" title="Site Manager" />
<grantAll role="zope.Manager" />
<grant role="zope.Manager" principal="zope.mgr" />

</configure>
1 change: 0 additions & 1 deletion src/grokcore/view/ftests/__init__.py

This file was deleted.

1 change: 0 additions & 1 deletion src/grokcore/view/ftests/directoryresource/__init__.py

This file was deleted.

67 changes: 0 additions & 67 deletions src/grokcore/view/ftests/directoryresource/dirresource.py

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

0 comments on commit 717e666

Please sign in to comment.