creation of follow-up meeting with copying of tasks OK
This commit is contained in:
parent
719bd165aa
commit
2e8618b375
4 changed files with 63 additions and 6 deletions
|
@ -390,6 +390,11 @@ Events listing
|
|||
>>> list(listing.events())
|
||||
[<loops.browser.concept.ConceptRelationView ...>]
|
||||
|
||||
Creation of follow-up event
|
||||
---------------------------
|
||||
|
||||
>>> from loops.organize.browser.event import CreateFollowUpEvent
|
||||
|
||||
|
||||
Send Email to Members
|
||||
=====================
|
||||
|
|
|
@ -23,9 +23,11 @@ Definition of view classes and other browser related stuff for tasks.
|
|||
import calendar
|
||||
from datetime import date, datetime, timedelta
|
||||
from urllib import urlencode
|
||||
from zope import interface, component
|
||||
from zope.app.container.interfaces import INameChooser
|
||||
from zope.app.pagetemplate import ViewPageTemplateFile
|
||||
from zope.cachedescriptors.property import Lazy
|
||||
from zope import interface, component
|
||||
from zope.traversing.api import getName
|
||||
|
||||
from cybertools.browser.action import actions
|
||||
from cybertools.meta.interfaces import IOptions
|
||||
|
@ -34,8 +36,10 @@ from loops.browser.concept import ConceptView
|
|||
from loops.browser.form import CreateConceptPage, CreateConcept
|
||||
from loops.browser.form import EditConceptPage, EditConcept
|
||||
from loops.browser.node import NodeView
|
||||
from loops.common import adapted
|
||||
from loops.common import adapted, baseObject
|
||||
from loops.concept import Concept
|
||||
from loops.organize.work.meeting import MeetingMinutes
|
||||
from loops.setup import addAndConfigureObject
|
||||
from loops.util import _
|
||||
from loops import util
|
||||
|
||||
|
@ -300,6 +304,55 @@ class CreateFollowUpEvent(CreateConcept, BaseFollowUpController):
|
|||
|
||||
defaultTypeToken = '.loops/concepts/event'
|
||||
|
||||
@Lazy
|
||||
def followsPredicate(self):
|
||||
return self.view.conceptManager['follows']
|
||||
|
||||
@Lazy
|
||||
def baseEvent(self):
|
||||
return adapted(self.view.virtualTargetObject)
|
||||
|
||||
def update(self):
|
||||
result = super(CreateFollowUpEvent, self).update()
|
||||
form = self.request.form
|
||||
toBeAssigned = form.get('cb_select_tasks') or []
|
||||
print '***', toBeAssigned
|
||||
for uid in toBeAssigned:
|
||||
task = util.getObjectForUid(uid)
|
||||
self.createFollowUpTask(adapted(task))
|
||||
return result
|
||||
|
||||
def createFollowUpTask(self, source):
|
||||
cm = self.view.conceptManager
|
||||
stask = baseObject(source)
|
||||
bevt = baseObject(self.baseEvent)
|
||||
taskType = stask.conceptType
|
||||
taskName = getName(stask)
|
||||
name = INameChooser(cm).chooseName(taskName, stask)
|
||||
newTask = addAndConfigureObject(cm, Concept, name,
|
||||
conceptType=taskType,
|
||||
title=source.title,
|
||||
description=source.description,
|
||||
start=source.start,
|
||||
end=source.end)
|
||||
stask.assignChild(newTask, self.followsPredicate)
|
||||
for rel in stask.getParentRelations():
|
||||
if rel.predicate != self.view.typePredicate:
|
||||
if rel.first == bevt:
|
||||
parent = self.object
|
||||
else:
|
||||
parent = rel.first
|
||||
newTask.assignParent(parent, rel.predicate,
|
||||
order=rel.order, relevance=rel.relevance)
|
||||
return newTask
|
||||
|
||||
def assignConcepts(self, obj):
|
||||
bevt = baseObject(self.baseEvent)
|
||||
bevt.assignChild(obj, self.followsPredicate)
|
||||
for rel in bevt.getParentRelations():
|
||||
if rel.predicate != self.view.typePredicate:
|
||||
obj.assignParent(rel.first, rel.predicate)
|
||||
|
||||
|
||||
class EditFollowUpEvent(EditConcept, BaseFollowUpController):
|
||||
|
||||
|
|
|
@ -70,7 +70,8 @@
|
|||
style="border: 1px solid grey">
|
||||
<input type="checkbox" checked
|
||||
tal:condition="python:colname == 'title'"
|
||||
tal:attributes="name string:$cb_name:list" /></td>
|
||||
tal:attributes="name string:$cb_name:list;
|
||||
value row/context/uid" /></td>
|
||||
<td style="border: 1px solid grey"
|
||||
tal:define="col report/fields/?colname"
|
||||
tal:attributes="class col/cssClass">
|
||||
|
|
|
@ -330,8 +330,6 @@ class TaskRow(BaseRow):
|
|||
)
|
||||
|
||||
|
||||
|
||||
|
||||
class MeetingMinutes(WorkReportInstance):
|
||||
|
||||
type = "meeting_minutes"
|
||||
|
@ -345,6 +343,6 @@ class MeetingMinutes(WorkReportInstance):
|
|||
states = ('planned', 'accepted', 'done', 'done_x', 'finished')
|
||||
|
||||
def selectObjects(self, parts):
|
||||
return self.getTasks(parts)[1:]
|
||||
return [adapted(t) for t in self.getTasks(parts)[1:]]
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue