minor fixes
- URL field for reports - set reStructuredText renderer in DocTests - import type and predicate interfaces correctly (backport from bbmaster branch)
This commit is contained in:
parent
f01df3662c
commit
2c7e2f0e5b
3 changed files with 18 additions and 4 deletions
|
@ -21,6 +21,7 @@ Field definitions for reports.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from cybertools.composer.report.field import Field
|
from cybertools.composer.report.field import Field
|
||||||
|
from loops.common import baseObject
|
||||||
from loops import util
|
from loops import util
|
||||||
|
|
||||||
|
|
||||||
|
@ -39,7 +40,8 @@ class UrlField(Field):
|
||||||
|
|
||||||
def getDisplayValue(self, row):
|
def getDisplayValue(self, row):
|
||||||
nv = row.parent.context.view.nodeView
|
nv = row.parent.context.view.nodeView
|
||||||
return dict(title=self.getValue(row), url=nv.getUrlForTarget(row.context))
|
return dict(title=self.getValue(row),
|
||||||
|
url=nv.getUrlForTarget(baseObject(row.context)))
|
||||||
|
|
||||||
|
|
||||||
class TargetField(Field):
|
class TargetField(Field):
|
||||||
|
|
9
external/element.py
vendored
9
external/element.py
vendored
|
@ -90,10 +90,12 @@ class ConceptElement(Element):
|
||||||
type = loader.concepts[self['type']]
|
type = loader.concepts[self['type']]
|
||||||
kw = dict((k, v) for k, v in self.items()
|
kw = dict((k, v) for k, v in self.items()
|
||||||
if k not in self.posArgs)
|
if k not in self.posArgs)
|
||||||
# use IInstance adapter (name='editor') for unmarshalling values
|
|
||||||
#self.object = loader.addConcept(self['name'], self['title'], type, **kw)
|
|
||||||
self.object = loader.addConcept(self['name'], self['title'], type)
|
self.object = loader.addConcept(self['name'], self['title'], type)
|
||||||
formState = self.getInstance().applyTemplate(data=kw, ignoreValidation=True)
|
formState = self.getInstance().applyTemplate(data=kw, ignoreValidation=True)
|
||||||
|
# simple hack for resolving interface definition:
|
||||||
|
pi = self.get('predicateInterface')
|
||||||
|
if pi is not None:
|
||||||
|
adapted(self.object).predicateInterface = resolve(pi)
|
||||||
|
|
||||||
def getInstance(self, omit=['title']):
|
def getInstance(self, omit=['title']):
|
||||||
adObject = adapted(self.object)
|
adObject = adapted(self.object)
|
||||||
|
@ -126,6 +128,9 @@ class TypeElement(ConceptElement):
|
||||||
loader.typeConcept, **kw)
|
loader.typeConcept, **kw)
|
||||||
instance = self.getInstance(omit=['title', 'typeInterface'])
|
instance = self.getInstance(omit=['title', 'typeInterface'])
|
||||||
formState = instance.applyTemplate(data=kw, ignoreValidation=True)
|
formState = instance.applyTemplate(data=kw, ignoreValidation=True)
|
||||||
|
if ti:
|
||||||
|
# overwrite type interface, might have been ignored in addConcept
|
||||||
|
adapted(self.object).typeInterface = kw['typeInterface']
|
||||||
|
|
||||||
|
|
||||||
class ChildElement(Element):
|
class ChildElement(Element):
|
||||||
|
|
|
@ -14,6 +14,8 @@ from zope.app.catalog.text import TextIndex
|
||||||
from zope.app.container.interfaces import IObjectRemovedEvent
|
from zope.app.container.interfaces import IObjectRemovedEvent
|
||||||
from zope.app.principalannotation import PrincipalAnnotationUtility
|
from zope.app.principalannotation import PrincipalAnnotationUtility
|
||||||
from zope.app.principalannotation.interfaces import IPrincipalAnnotationUtility
|
from zope.app.principalannotation.interfaces import IPrincipalAnnotationUtility
|
||||||
|
from zope.app.renderer.rest import IReStructuredTextSource,\
|
||||||
|
ReStructuredTextToHTMLRenderer, ReStructuredTextSourceFactory
|
||||||
from zope.app.security.principalregistry import principalRegistry
|
from zope.app.security.principalregistry import principalRegistry
|
||||||
from zope.app.security.interfaces import IAuthentication
|
from zope.app.security.interfaces import IAuthentication
|
||||||
from zope.app.securitypolicy.zopepolicy import ZopeSecurityPolicy
|
from zope.app.securitypolicy.zopepolicy import ZopeSecurityPolicy
|
||||||
|
@ -122,8 +124,13 @@ class TestSite(object):
|
||||||
component.provideUtility(principalRegistry, IAuthentication)
|
component.provideUtility(principalRegistry, IAuthentication)
|
||||||
component.provideAdapter(session.ClientId)
|
component.provideAdapter(session.ClientId)
|
||||||
component.provideAdapter(session.Session)
|
component.provideAdapter(session.Session)
|
||||||
component.provideUtility(session.RAMSessionDataContainer(), ISessionDataContainer)
|
component.provideUtility(session.RAMSessionDataContainer(),
|
||||||
|
ISessionDataContainer)
|
||||||
component.provideUtility(ClientIdManager())
|
component.provideUtility(ClientIdManager())
|
||||||
|
component.provideUtility(ReStructuredTextSourceFactory,
|
||||||
|
name='zope.source.rest')
|
||||||
|
component.provideAdapter(ReStructuredTextToHTMLRenderer,
|
||||||
|
(IReStructuredTextSource, IBrowserRequest), Interface)
|
||||||
|
|
||||||
component.provideAdapter(LoopsType)
|
component.provideAdapter(LoopsType)
|
||||||
component.provideAdapter(ConceptType)
|
component.provideAdapter(ConceptType)
|
||||||
|
|
Loading…
Add table
Reference in a new issue