This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
collective.task/src/collective/task/browser/guards.py

34 lines
872 B
Python

from five import grok
from plone import api
from collective.task.content.task import ITask
class BaseSubtaskGuard(grok.View):
"""Base class for 'subtask' guards views"""
grok.context(ITask)
grok.baseclass()
grok.require("zope2.View")
def update(self):
"""Create subtasks states list"""
subtasks = self.context.listFolderContents()
self.subtasks_states = [api.content.get_state(subtask) for subtask in subtasks]
class SubtaskDoneGuard(BaseSubtaskGuard):
"""Returns True if the subtask is done"""
grok.name("subtask_done")
def render(self):
return 'done' in self.subtasks_states
class SubtasksAbandonedGuard(BaseSubtaskGuard):
"""Returns True is the subtask is abandoned"""
grok.name("subtasks_abandoned")
def render(self):
return set(['abandoned']) == set(self.subtasks_states)