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):
|
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):
|
||||||
|
|
||||||
|
|
|
@ -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.')
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Reference in a new issue