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" view="AddLoopsDocument.html"
/> />
<editform <!-- <editform
label="Edit Document" label="Edit Document"
name="edit.html" name="edit.html"
schema="loops.interfaces.IDocumentSchema" schema="loops.interfaces.IDocumentSchema"
@ -283,15 +283,15 @@
for="loops.interfaces.IDocument" for="loops.interfaces.IDocument"
template="edit.pt" template="edit.pt"
permission="zope.ManageContent" permission="zope.ManageContent"
menu="zmi_views" title="Edit" /> menu="zmi_views" title="Edit" />-->
<!--<page <page
name="edit.html" name="edit.html"
for="loops.interfaces.IDocument" for="loops.interfaces.IDocument"
class="loops.browser.resource.DocumentEditForm" class="loops.browser.resource.DocumentEditForm"
permission="zope.ManageContent" permission="zope.ManageContent"
menu="zmi_views" title="Edit" menu="zmi_views" title="Edit"
/>--> />
<page <page
for="loops.interfaces.IDocument" 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.dublincore.interfaces import ICMFDublinCore
from zope.app.pagetemplate import ViewPageTemplateFile from zope.app.pagetemplate import ViewPageTemplateFile
from zope.formlib.form import FormFields from zope.formlib.form import FormFields
from zope.formlib.interfaces import DISPLAY_UNWRITEABLE
from zope.proxy import removeAllProxies from zope.proxy import removeAllProxies
from zope.security import canAccess, canWrite from zope.security import canAccess, canWrite
from zope.security.proxy import removeSecurityProxy from zope.security.proxy import removeSecurityProxy
from loops.interfaces import IDocument, IMediaAsset from loops.interfaces import IDocument, IMediaAsset
from loops.interfaces import IFileSystemResource, IControlledResource
from loops.browser.common import EditForm, BaseView from loops.browser.common import EditForm, BaseView
from loops.browser.concept import ConceptRelationView, ConceptConfigureView from loops.browser.concept import ConceptRelationView, ConceptConfigureView
from loops.browser.node import NodeView from loops.browser.node import NodeView
@ -47,7 +49,10 @@ renderingFactories = {
class DocumentEditForm(EditForm): 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): class MediaAssetEditForm(EditForm):
form_fields = FormFields(IMediaAsset) form_fields = FormFields(IMediaAsset)

View file

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

View file

@ -202,6 +202,27 @@ class IResourceSchema(Interface):
required=False) 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): class IResource(ILoopsObject, IPotentialTarget):
""" A resource is an atomic information element that is made """ A resource is an atomic information element that is made
available via a view or a concept. available via a view or a concept.
@ -235,7 +256,6 @@ class IResource(ILoopsObject, IPotentialTarget):
""" """
class IDocumentSchema(IResourceSchema): class IDocumentSchema(IResourceSchema):
data = schema.Text( data = schema.Text(

View file

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

View file

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