creation of follow-up meeting with copying of tasks OK

This commit is contained in:
Helmut Merz 2012-06-12 18:20:16 +02:00
parent 719bd165aa
commit 2e8618b375
4 changed files with 63 additions and 6 deletions

View file

@ -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
=====================

View file

@ -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):

View file

@ -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">

View file

@ -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:]]