src/pyams_scheduler/zmi/scheduler.py
changeset 36 42761bc38f66
parent 29 a456add728e3
child 37 1eb0c2098d47
equal deleted inserted replaced
35:d7024f05f72d 36:42761bc38f66
    24 from pyams_scheduler.interfaces import IScheduler, SCHEDULER_HANDLER_KEY
    24 from pyams_scheduler.interfaces import IScheduler, SCHEDULER_HANDLER_KEY
    25 from pyams_scheduler.zmi.interfaces import ISchedulerMenu
    25 from pyams_scheduler.zmi.interfaces import ISchedulerMenu
    26 from pyams_skin.interfaces import IInnerPage, IPageHeader
    26 from pyams_skin.interfaces import IInnerPage, IPageHeader
    27 from pyams_skin.interfaces.container import ITableElementEditor
    27 from pyams_skin.interfaces.container import ITableElementEditor
    28 from pyams_skin.layer import IPyAMSLayer
    28 from pyams_skin.layer import IPyAMSLayer
    29 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION, MANAGE_SYSTEM_PERMISSION
    29 from pyams_utils.interfaces import MANAGE_SYSTEM_PERMISSION
    30 from pyams_zmi.interfaces.menu import IControlPanelMenu
    30 from pyams_zmi.interfaces.menu import IControlPanelMenu
    31 from pyams_zmi.layer import IAdminLayer
    31 from pyams_zmi.layer import IAdminLayer
    32 from z3c.table.interfaces import IColumn, IValues
    32 from z3c.table.interfaces import IColumn, IValues
    33 from zope.component.interfaces import ISite
    33 from zope.component.interfaces import ISite
    34 
    34 
    71         site = get_parent(self.context, ISite)
    71         site = get_parent(self.context, ISite)
    72         return resource_url(site, self.request, 'admin#{0}'.format(self.view_name))
    72         return resource_url(site, self.request, 'admin#{0}'.format(self.view_name))
    73 
    73 
    74 
    74 
    75 @viewlet_config(name='scheduler.menu', context=ISite, layer=IAdminLayer, manager=IControlPanelMenu,
    75 @viewlet_config(name='scheduler.menu', context=ISite, layer=IAdminLayer, manager=IControlPanelMenu,
    76                 permission=VIEW_SYSTEM_PERMISSION, weight=10)
    76                 permission=MANAGE_SYSTEM_PERMISSION, weight=10)
    77 @viewletmanager_config(name='scheduler.menu', context=ISite, layer=IAdminLayer)
    77 @viewletmanager_config(name='scheduler.menu', context=ISite, layer=IAdminLayer)
    78 @implementer(ISchedulerMenu)
    78 @implementer(ISchedulerMenu)
    79 class SchedulerMenuItem(MenuItem):
    79 class SchedulerMenuItem(MenuItem):
    80     """Scheduler menu"""
    80     """Scheduler menu"""
    81 
    81 
   119     icon_hint = _("Task settings")
   119     icon_hint = _("Task settings")
   120     url = 'settings.html'
   120     url = 'settings.html'
   121     target = None
   121     target = None
   122     modal_target = True
   122     modal_target = True
   123 
   123 
   124     permission = VIEW_SYSTEM_PERMISSION
   124     permission = MANAGE_SYSTEM_PERMISSION
   125     weight = 1
   125     weight = 1
   126 
   126 
   127 
   127 
   128 @adapter_config(name='scheduler', context=(Interface, IAdminLayer, SchedulerTasksTable), provides=IColumn)
   128 @adapter_config(name='scheduler', context=(Interface, IAdminLayer, SchedulerTasksTable), provides=IColumn)
   129 class SchedulerTasksScheduleColumn(ActionColumn):
   129 class SchedulerTasksScheduleColumn(ActionColumn):
   133     icon_hint = _("Schedule task")
   133     icon_hint = _("Schedule task")
   134     url = 'schedule.html'
   134     url = 'schedule.html'
   135     target = None
   135     target = None
   136     modal_target = True
   136     modal_target = True
   137 
   137 
   138     permission = VIEW_SYSTEM_PERMISSION
   138     permission = MANAGE_SYSTEM_PERMISSION
   139     weight = 2
   139     weight = 2
   140 
   140 
   141 
   141 
   142 @adapter_config(name='name', context=(Interface, IAdminLayer, SchedulerTasksTable), provides=IColumn)
   142 @adapter_config(name='name', context=(Interface, IAdminLayer, SchedulerTasksTable), provides=IColumn)
   143 class SchedulerTasksNameColumn(I18nColumn, GetAttrColumn):
   143 class SchedulerTasksNameColumn(I18nColumn, GetAttrColumn):
   170     icon_hint = _("Task run history")
   170     icon_hint = _("Task run history")
   171     url = 'history.html'
   171     url = 'history.html'
   172     target = None
   172     target = None
   173     modal_target = True
   173     modal_target = True
   174 
   174 
   175     permission = VIEW_SYSTEM_PERMISSION
   175     permission = MANAGE_SYSTEM_PERMISSION
   176     weight = 30
   176     weight = 30
   177 
   177 
   178 
   178 
   179 @adapter_config(name='trash', context=(Interface, IAdminLayer, SchedulerTasksTable), provides=IColumn)
   179 @adapter_config(name='trash', context=(Interface, IAdminLayer, SchedulerTasksTable), provides=IColumn)
   180 class SchedulerTasksTrashColumn(TrashColumn):
   180 class SchedulerTasksTrashColumn(TrashColumn):
   212         if manager is not None:
   212         if manager is not None:
   213             return list(manager.values())
   213             return list(manager.values())
   214         return ()
   214         return ()
   215 
   215 
   216 
   216 
   217 @pagelet_config(name='scheduler-tasks.html', context=ISite, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
   217 @pagelet_config(name='scheduler-tasks.html', context=ISite, layer=IPyAMSLayer, permission=MANAGE_SYSTEM_PERMISSION)
   218 @implementer(IInnerPage)
   218 @implementer(IInnerPage)
   219 class SchedulerTasksView(AdminView, ContainerView):
   219 class SchedulerTasksView(AdminView, ContainerView):
   220     """Scheduler tasks view"""
   220     """Scheduler tasks view"""
   221 
   221 
   222     table_class = SchedulerTasksTable
   222     table_class = SchedulerTasksTable
   233     title = _("Control panel")
   233     title = _("Control panel")
   234     subtitle = _("Tasks scheduler")
   234     subtitle = _("Tasks scheduler")
   235 
   235 
   236 
   236 
   237 @viewlet_config(name='scheduler.properties.menu', context=ISite, layer=IAdminLayer,
   237 @viewlet_config(name='scheduler.properties.menu', context=ISite, layer=IAdminLayer,
   238                 manager=ISchedulerMenu, permission=VIEW_SYSTEM_PERMISSION, weight=1)
   238                 manager=ISchedulerMenu, permission=MANAGE_SYSTEM_PERMISSION, weight=1)
   239 class SchedulerPropertiesMenuItem(MenuItem):
   239 class SchedulerPropertiesMenuItem(MenuItem):
   240     """Scheduler properties menu"""
   240     """Scheduler properties menu"""
   241 
   241 
   242     label = _("Properties...")
   242     label = _("Properties...")
   243     url = 'properties.html'
   243     url = 'properties.html'
   246     def get_url(self):
   246     def get_url(self):
   247         manager = query_utility(IScheduler)
   247         manager = query_utility(IScheduler)
   248         return resource_url(manager, self.request, self.url)
   248         return resource_url(manager, self.request, self.url)
   249 
   249 
   250 
   250 
   251 @pagelet_config(name='properties.html', context=IScheduler, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
   251 @pagelet_config(name='properties.html', context=IScheduler, layer=IPyAMSLayer, permission=MANAGE_SYSTEM_PERMISSION)
   252 class SchedulerPropertiesEditForm(AdminDialogEditForm):
   252 class SchedulerPropertiesEditForm(AdminDialogEditForm):
   253     """Scheduler properties edit form"""
   253     """Scheduler properties edit form"""
   254 
   254 
   255     @property
   255     @property
   256     def title(self):
   256     def title(self):
   268 class SchedulerPropertiesAJAXEditForm(AJAXEditForm, SchedulerPropertiesEditForm):
   268 class SchedulerPropertiesAJAXEditForm(AJAXEditForm, SchedulerPropertiesEditForm):
   269     """Scheduler properties edit form, AJAX view"""
   269     """Scheduler properties edit form, AJAX view"""
   270 
   270 
   271 
   271 
   272 @viewlet_config(name='scheduler.jobs.menu', context=ISite, layer=IAdminLayer,
   272 @viewlet_config(name='scheduler.jobs.menu', context=ISite, layer=IAdminLayer,
   273                 manager=ISchedulerMenu, permission=VIEW_SYSTEM_PERMISSION, weight=5)
   273                 manager=ISchedulerMenu, permission=MANAGE_SYSTEM_PERMISSION, weight=5)
   274 class SchedulerJobsMenuItem(MenuItem):
   274 class SchedulerJobsMenuItem(MenuItem):
   275     """Scheduler jobs menu"""
   275     """Scheduler jobs menu"""
   276 
   276 
   277     label = _("Active jobs...")
   277     label = _("Active jobs...")
   278     url = 'jobs.html'
   278     url = 'jobs.html'
   281     def get_url(self):
   281     def get_url(self):
   282         manager = query_utility(IScheduler)
   282         manager = query_utility(IScheduler)
   283         return resource_url(manager, self.request, self.url)
   283         return resource_url(manager, self.request, self.url)
   284 
   284 
   285 
   285 
   286 @pagelet_config(name='jobs.html', context=IScheduler, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
   286 @pagelet_config(name='jobs.html', context=IScheduler, layer=IPyAMSLayer, permission=MANAGE_SYSTEM_PERMISSION)
   287 class SchedulerJobsDisplayForm(AdminDialogDisplayForm):
   287 class SchedulerJobsDisplayForm(AdminDialogDisplayForm):
   288     """Scheduler jobs display form"""
   288     """Scheduler jobs display form"""
   289 
   289 
   290     @property
   290     @property
   291     def title(self):
   291     def title(self):