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

View file

@ -125,6 +125,11 @@ class ITask(Interface):
# services # services
serviceManagerViews = SimpleVocabulary((
SimpleTerm('', '', u'Default view'),
SimpleTerm('events_overview.html', 'events_overview.html', u'Events overview'),
))
class IServiceManager(Interface): class IServiceManager(Interface):
""" A manager or container for a set of services. """ A manager or container for a set of services.
""" """
@ -137,6 +142,13 @@ class IServiceManager(Interface):
title=_(u'End date/time'), title=_(u'End date/time'),
description=_(u'The end date/time for providing services.'), description=_(u'The end date/time for providing services.'),
required=False,) 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.') 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 BTrees.OOBTree import OOBTree
from zope.cachedescriptors.property import Lazy from zope.cachedescriptors.property import Lazy
from zope.component import adapts 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.interfaces import IInstance
from cybertools.composer.schema.interfaces import IClientManager, IClient from cybertools.composer.schema.interfaces import IClientManager, IClient
from cybertools.stateful.definition import registerStatesDefinition 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.stateful.definition import State, Transition
from cybertools.util.jeep import Jeep from cybertools.util.jeep import Jeep
from cybertools.util.randomname import generateName from cybertools.util.randomname import generateName
from cybertools.organize.interfaces import IServiceManager from cybertools.organize.interfaces import IServiceManager
from cybertools.organize.interfaces import IService, IScheduledService from cybertools.organize.interfaces import IService, IScheduledService
from cybertools.organize.interfaces import IRegistration, IRegistrationTemplate from cybertools.organize.interfaces import IRegistration, IRegistrationTemplate