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:
parent
b652508e46
commit
163e6dedd7
3 changed files with 31 additions and 3 deletions
|
@ -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):
|
||||
|
||||
|
|
|
@ -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.')
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue