add field for selecting view for ServiceManager

git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@1980 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2007-08-31 07:31:41 +00:00
parent b652508e46
commit 163e6dedd7
3 changed files with 31 additions and 3 deletions

View file

@ -70,6 +70,13 @@ class BaseView(object):
class ServiceManagerView(BaseView):
def getCustomView(self):
viewName = self.context.viewName
if viewName:
return component.getMultiAdapter((self.context, self.request),
name=viewName)
return None
def findRegistrationTemplate(self, service):
""" Find a registration template that provides the registration
for the service given.
@ -80,7 +87,7 @@ class ServiceManagerView(BaseView):
return tpl
return None
def overview(self):
def overview(self, includeCategories=None):
result = []
classific = []
category = None
@ -88,9 +95,12 @@ class ServiceManagerView(BaseView):
svcs = sorted((svc.getCategory(), idx, svc)
for idx, svc in enumerate(self.context.getServices()))
for cat, idx, svc in svcs:
if includeCategories and cat not in includeCategories:
continue
if cat != category:
term = serviceCategories.getTermByToken(cat)
result.append(dict(isHeadline=True, level=0, title=term.title,
name=cat,
object=None))
category = cat
classific = []
@ -100,17 +110,22 @@ class ServiceManagerView(BaseView):
if (len(classific) <= idx or
classific[idx].name != element.name):
result.append(dict(isHeadline=True, level=level,
name=element.name,
title=element.title,
object=element.object))
classific = clsf
if level > maxLevel:
maxLevel = level
result.append(dict(isHeadline=False, level=maxLevel+1,
name=svc.getName(),
title=svc.title or svc.getName(),
fromTo=self.getFromTo(svc),
object=svc))
return result
def eventsOverview(self):
return self.overview(includeCategories=('event',))
class ServiceView(BaseView):

View file

@ -125,6 +125,11 @@ class ITask(Interface):
# services
serviceManagerViews = SimpleVocabulary((
SimpleTerm('', '', u'Default view'),
SimpleTerm('events_overview.html', 'events_overview.html', u'Events overview'),
))
class IServiceManager(Interface):
""" A manager or container for a set of services.
"""
@ -137,6 +142,13 @@ class IServiceManager(Interface):
title=_(u'End date/time'),
description=_(u'The end date/time for providing services.'),
required=False,)
viewName = schema.Choice(
title=_(u'View name'),
description=_(u'Select the name of a specialized view to be used '
'for presenting this object.'),
vocabulary=serviceManagerViews,
default='',
required=False,)
services = Attribute('A collection of services managed by this object.')

View file

@ -26,7 +26,9 @@ from time import time
from BTrees.OOBTree import OOBTree
from zope.cachedescriptors.property import Lazy
from zope.component import adapts
from zope.interface import implements
from zope import component
from zope.interface import implements, Interface
from cybertools.composer.interfaces import IInstance
from cybertools.composer.schema.interfaces import IClientManager, IClient
from cybertools.stateful.definition import registerStatesDefinition
@ -34,7 +36,6 @@ from cybertools.stateful.definition import StatesDefinition
from cybertools.stateful.definition import State, Transition
from cybertools.util.jeep import Jeep
from cybertools.util.randomname import generateName
from cybertools.organize.interfaces import IServiceManager
from cybertools.organize.interfaces import IService, IScheduledService
from cybertools.organize.interfaces import IRegistration, IRegistrationTemplate