minor improvements; start to extend Resource with filesystem storage

git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@1243 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2006-06-05 20:31:41 +00:00
parent 9fc5fe84f3
commit 4be6866608
6 changed files with 54 additions and 13 deletions

View file

@ -275,7 +275,7 @@
view="AddLoopsDocument.html"
/>
<editform
<!-- <editform
label="Edit Document"
name="edit.html"
schema="loops.interfaces.IDocumentSchema"
@ -283,15 +283,15 @@
for="loops.interfaces.IDocument"
template="edit.pt"
permission="zope.ManageContent"
menu="zmi_views" title="Edit" />
menu="zmi_views" title="Edit" />-->
<!--<page
<page
name="edit.html"
for="loops.interfaces.IDocument"
class="loops.browser.resource.DocumentEditForm"
permission="zope.ManageContent"
menu="zmi_views" title="Edit"
/>-->
/>
<page
for="loops.interfaces.IDocument"

View file

@ -28,11 +28,13 @@ from zope.app.catalog.interfaces import ICatalog
from zope.app.dublincore.interfaces import ICMFDublinCore
from zope.app.pagetemplate import ViewPageTemplateFile
from zope.formlib.form import FormFields
from zope.formlib.interfaces import DISPLAY_UNWRITEABLE
from zope.proxy import removeAllProxies
from zope.security import canAccess, canWrite
from zope.security.proxy import removeSecurityProxy
from loops.interfaces import IDocument, IMediaAsset
from loops.interfaces import IFileSystemResource, IControlledResource
from loops.browser.common import EditForm, BaseView
from loops.browser.concept import ConceptRelationView, ConceptConfigureView
from loops.browser.node import NodeView
@ -47,7 +49,10 @@ renderingFactories = {
class DocumentEditForm(EditForm):
form_fields = FormFields(IDocument)
form_fields = FormFields(IDocument, IFileSystemResource, IControlledResource
)
for f in form_fields:
f.render_context |= DISPLAY_UNWRITEABLE
class MediaAssetEditForm(EditForm):
form_fields = FormFields(IMediaAsset)

View file

@ -140,16 +140,20 @@
<require
permission="zope.View"
interface=".interfaces.IDocument" />
<require
permission="zope.View"
interface="zope.app.size.interfaces.ISized" />
interface=".interfaces.IDocument
.interfaces.IFileSystemResource
.interfaces.IControlledResource
zope.app.size.interfaces.ISized" />
<require
permission="zope.ManageContent"
set_schema=".interfaces.IDocument" />
<require
permission="zope.ManageApplication"
set_schema=".interfaces.IFileSystemResource
.interfaces.IControlledResource" />
</content>
<interface

View file

@ -202,6 +202,27 @@ class IResourceSchema(Interface):
required=False)
class IFileSystemResource(Interface):
fsPath = schema.BytesLine(
title=_(u'Filesystem Path'),
description=_(u'Optional path to a file in the filesystem '
'to be used for storing the resource'),
default='',
missing_value='',
required=False)
class IControlledResource(Interface):
readOnly = schema.Bool(
title=_(u'Read only'),
description=_(u'Check this if resource may not be modified '
'after being first filled with non-empty content'),
default=False,
required=False)
class IResource(ILoopsObject, IPotentialTarget):
""" A resource is an atomic information element that is made
available via a view or a concept.
@ -235,7 +256,6 @@ class IResource(ILoopsObject, IPotentialTarget):
"""
class IDocumentSchema(IResourceSchema):
data = schema.Text(

View file

@ -78,7 +78,7 @@ class PasswordWidget(BasePasswordWidget):
class MemberRegistration(Form, NodeView):
form_fields = FormFields(IMemberRegistration)
form_fields = FormFields(IMemberRegistration).omit('age')
template = NamedTemplate('loops.dataform')
label = _(u'Member Registration')

View file

@ -43,6 +43,7 @@ from cybertools.relation.interfaces import IRelatable
from interfaces import IResource
from interfaces import IDocument, IDocumentSchema, IDocumentView
from interfaces import IMediaAsset, IMediaAssetSchema, IMediaAssetView
from interfaces import IFileSystemResource, IControlledResource
from interfaces import IResourceManager, IResourceManagerContained
from interfaces import ILoopsContained
from interfaces import IIndexAttributes
@ -54,7 +55,8 @@ _ = MessageFactory('loops')
class Resource(Contained, Persistent):
implements(IResource, IResourceManagerContained, IRelatable)
implements(IResource, IFileSystemResource, IControlledResource,
IResourceManagerContained, IRelatable)
_size = _width = _height = 0
@ -70,6 +72,16 @@ class Resource(Contained, Persistent):
def getContentType(self): return self._contentType
contentType = property(getContentType, setContentType)
_fsPath = ''
def setFsPath(self, fsPath): self._fsPath = fsPath
def getFsPath(self): return self._fsPath
fsPath = property(getFsPath, setFsPath)
_readOnly = ''
def setReadOnly(self, readOnly): self._readOnly = readOnly
def getReadOnly(self): return self._readOnly
readOnly = property(getReadOnly, setReadOnly)
def __init__(self, title=u''):
self.title = title