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:
parent
9fc5fe84f3
commit
4be6866608
6 changed files with 54 additions and 13 deletions
|
@ -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"
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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')
|
||||
|
||||
|
|
14
resource.py
14
resource.py
|
@ -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
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue