Use distinct class/interface for appendixes
This commit is contained in:
parent
25a2cd9b2a
commit
7ee319a0c2
|
@ -23,7 +23,7 @@ class BaseTable(Table):
|
|||
def values(self):
|
||||
portal_catalog = getToolByName(self, 'portal_catalog')
|
||||
folder_path = '/'.join(self.context.getPhysicalPath())
|
||||
query = {'path': {'query' : folder_path},
|
||||
query = {'path': {'query': folder_path},
|
||||
'sort_on': 'getObjPositionInParent',
|
||||
'sort_order': 'ascending'}
|
||||
query.update(self.viewlet.contentFilter())
|
||||
|
@ -35,6 +35,13 @@ class VersionsTable(BaseTable):
|
|||
pass
|
||||
|
||||
|
||||
class DmsAppendixTable(VersionsTable):
|
||||
|
||||
def setUpColumns(self):
|
||||
columns = super(DmsAppendixTable, self).setUpColumns()
|
||||
return [column for column in columns if column.__name__ != 'dms.state']
|
||||
|
||||
|
||||
class TasksTable(BaseTable):
|
||||
pass
|
||||
|
||||
|
|
|
@ -2,7 +2,10 @@ from five import grok
|
|||
|
||||
from collective.dms.basecontent.dmsdocument import IDmsDocument
|
||||
from collective.dms.basecontent import _
|
||||
from collective.dms.basecontent.browser.listing import VersionsTable, TasksTable, InformationsTable
|
||||
from collective.dms.basecontent.browser.listing import (VersionsTable,
|
||||
TasksTable,
|
||||
InformationsTable,
|
||||
DmsAppendixTable)
|
||||
|
||||
from collective.dms.basecontent.browser.table import TableViewlet
|
||||
|
||||
|
@ -38,6 +41,7 @@ class VersionsViewlet(BaseViewlet):
|
|||
portal_type = 'dmsmainfile'
|
||||
label = _(u"Versions")
|
||||
noresult_message = _(u"There is no version note for this document.")
|
||||
|
||||
def contentFilter(self):
|
||||
return {'portal_type': self.portal_type,
|
||||
'sort_on': 'getObjPositionInParent',
|
||||
|
@ -50,6 +54,8 @@ class AppendixViewlet(BaseViewlet):
|
|||
portal_type = 'dmsappendixfile'
|
||||
label = _(u"Appendix")
|
||||
noresult_message = _(u"There is no appendix for this document.")
|
||||
__table__ = DmsAppendixTable
|
||||
|
||||
def contentFilter(self):
|
||||
return {'portal_type': self.portal_type,
|
||||
'sort_on': 'getObjPositionInParent',
|
||||
|
|
|
@ -51,6 +51,11 @@
|
|||
name="schema_policy_dmsfile"
|
||||
/>
|
||||
|
||||
<utility
|
||||
factory=".dmsfile.DmsAppendixFileSchemaPolicy"
|
||||
name="schema_policy_dmsappendixfile"
|
||||
/>
|
||||
|
||||
<adapter
|
||||
for=".dmsfile.IDmsFile"
|
||||
provides="zope.filerepresentation.interfaces.IRawReadFile"
|
||||
|
|
|
@ -7,6 +7,7 @@ from five import grok
|
|||
from zope import schema
|
||||
from zope.annotation.interfaces import IAnnotations
|
||||
from zope.interface import implements
|
||||
from zope.lifecycleevent.interfaces import IObjectAddedEvent
|
||||
|
||||
from plone.autoform import directives as form
|
||||
from plone.dexterity.content import Item
|
||||
|
@ -17,7 +18,6 @@ from plone.supermodel import model
|
|||
from plone.app.contenttypes.interfaces import IFile
|
||||
|
||||
from . import _
|
||||
from zope.lifecycleevent.interfaces import IObjectAddedEvent
|
||||
|
||||
|
||||
class IDmsFile(model.Schema, IFile):
|
||||
|
@ -34,6 +34,7 @@ class IDmsFile(model.Schema, IFile):
|
|||
required=True,
|
||||
)
|
||||
|
||||
|
||||
class DmsFile(Item):
|
||||
"""DmsFile"""
|
||||
implements(IDmsFile)
|
||||
|
@ -57,6 +58,28 @@ class DmsFileSchemaPolicy(DexteritySchemaPolicy):
|
|||
return (IDmsFile, )
|
||||
|
||||
|
||||
class IDmsAppendixFile(model.Schema, IFile):
|
||||
"""Schema for DmsAppendixFile"""
|
||||
model.primary('file')
|
||||
file = NamedBlobFile(
|
||||
title=_(u"File"),
|
||||
required=True,
|
||||
)
|
||||
|
||||
|
||||
class DmsAppendixFile(Item):
|
||||
"""DmsAppendixFile"""
|
||||
implements(IDmsAppendixFile)
|
||||
__ac_local_roles_block__ = True
|
||||
|
||||
|
||||
class DmsAppendixFileSchemaPolicy(DexteritySchemaPolicy):
|
||||
"""Schema Policy for DmsAppendixFile"""
|
||||
|
||||
def bases(self, schemaName, tree):
|
||||
return (IDmsAppendixFile, )
|
||||
|
||||
|
||||
@default_value(field=IDmsFile['title'])
|
||||
def titleDefaultValue(data):
|
||||
container = data.context
|
||||
|
@ -80,11 +103,11 @@ def update_higher_version(context, event):
|
|||
from plone.dexterity.filerepresentation import ReadFileBase, DefaultWriteFile
|
||||
|
||||
from zope.component import adapts
|
||||
from ZPublisher.Iterators import IStreamIterator
|
||||
from zope.filerepresentation.interfaces import IRawWriteFile
|
||||
|
||||
from plone.memoize.instance import memoize
|
||||
|
||||
|
||||
class DmsFileReadFile(ReadFileBase):
|
||||
adapts(IDmsFile)
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
</property>
|
||||
<property name="default_view_fallback">False</property>
|
||||
<property name="add_permission">cmf.AddPortalContent</property>
|
||||
<property name="klass">collective.dms.basecontent.dmsfile.DmsFile</property>
|
||||
<property name="klass">collective.dms.basecontent.dmsfile.DmsAppendixFile</property>
|
||||
<property name="behaviors">
|
||||
<element value="plone.app.content.interfaces.INameFromTitle"/>
|
||||
<element value="plone.app.dexterity.behaviors.metadata.IBasic"/>
|
||||
|
@ -25,7 +25,7 @@
|
|||
<property name="schema" />
|
||||
<!-- DO NOT use a model_source or it removes manually added fields while reapplying the profile -->
|
||||
<!--property name="model_source" /-->
|
||||
<property name="schema_policy">schema_policy_dmsfile</property>
|
||||
<property name="schema_policy">schema_policy_dmsappendixfile</property>
|
||||
<alias from="(Default)" to="@@display-file"/>
|
||||
<alias from="edit" to="@@edit"/>
|
||||
<alias from="sharing" to="@@sharing"/>
|
||||
|
|
Reference in New Issue