- allow editing/creation of work items by others (creator, admin),
take party/userName from previous work item instead of current user
This commit is contained in:
parent
4ac8a4d24e
commit
28e8d54762
4 changed files with 28 additions and 9 deletions
|
@ -6,6 +6,8 @@ $Id$
|
|||
1.1
|
||||
---
|
||||
|
||||
- allow editing/creation of work items by others (creator, admin),
|
||||
take party/userName from previous work item instead of current user
|
||||
- field order: make sure title and description are always on top
|
||||
- yellow pages: view task_candidates for selecting persons with required
|
||||
knowledge for task
|
||||
|
|
|
@ -33,6 +33,7 @@ from cybertools.browser.action import actions
|
|||
from cybertools.tracking.browser import TrackView
|
||||
from loops.browser.action import DialogAction
|
||||
from loops.browser.form import ObjectForm, EditObject
|
||||
from loops.organize.party import getPersonForUser
|
||||
from loops import util
|
||||
|
||||
|
||||
|
@ -95,6 +96,13 @@ class BaseTrackView(TrackView):
|
|||
return dict(title=obj.title, url=url, obj=obj)
|
||||
return dict(title=value, url=None, obj=None)
|
||||
|
||||
@Lazy
|
||||
def personId(self):
|
||||
p = getPersonForUser(self.context, self.request)
|
||||
if p is not None:
|
||||
return util.getUidForObject(p)
|
||||
return self.request.principal.id
|
||||
|
||||
|
||||
class ChangeView(BaseTrackView):
|
||||
|
||||
|
|
|
@ -36,6 +36,7 @@ from cybertools.meta.interfaces import IOptions
|
|||
from cybertools.util import format
|
||||
from loops.browser.common import BaseView
|
||||
from loops.interfaces import IConcept, IResource
|
||||
from loops.organize.party import getPersonForUser
|
||||
from loops.security.common import canAccessObject
|
||||
from loops import util
|
||||
from loops.util import _
|
||||
|
@ -289,6 +290,14 @@ class TrackDetails(BaseView):
|
|||
url = node is not None and node.getUrlForTarget(obj) or ''
|
||||
return dict(object=obj, title=obj.title, url=url)
|
||||
|
||||
@Lazy
|
||||
def personId(self):
|
||||
request = self.view.request
|
||||
p = getPersonForUser(self.object, request)
|
||||
if p is not None:
|
||||
return util.getUidForObject(p)
|
||||
return request.principal.id
|
||||
|
||||
@Lazy
|
||||
def action(self):
|
||||
return self.track.data.get('action', '')
|
||||
|
|
|
@ -139,8 +139,7 @@ class WorkItemDetails(TrackDetails):
|
|||
target=self.object,
|
||||
addParams=dict(id=self.track.__name__))
|
||||
actions = [info, WorkItemStateAction(self)]
|
||||
if (self.isLastInRun and
|
||||
self.user['object'] == getPersonForUser(self.object, self.view.request)):
|
||||
if self.isLastInRun and self.allowedToEditWorkItem:
|
||||
self.view.registerDojoDateWidget()
|
||||
self.view.registerDojoNumberWidget()
|
||||
self.view.registerDojoTextarea()
|
||||
|
@ -155,6 +154,14 @@ class WorkItemDetails(TrackDetails):
|
|||
addParams=dict(id=self.track.__name__)))
|
||||
return actions
|
||||
|
||||
@Lazy
|
||||
def allowedToEditWorkItem(self):
|
||||
if checkPermission('loops.ManageSite', self.object):
|
||||
return True
|
||||
if self.track.data.get('creator') == self.personId:
|
||||
return True
|
||||
return self.user['object'] == getPersonForUser(self.object, self.view.request)
|
||||
|
||||
|
||||
class WorkItemInfo(NodeView):
|
||||
""" Provides info box.
|
||||
|
@ -418,13 +425,6 @@ class CreateWorkItem(EditObject, BaseTrackView):
|
|||
workItems = self.loopsRoot.getRecordManager()['work']
|
||||
return workItems.get(id)
|
||||
|
||||
@Lazy
|
||||
def personId(self):
|
||||
p = getPersonForUser(self.context, self.request)
|
||||
if p is not None:
|
||||
return util.getUidForObject(p)
|
||||
return self.request.principal.id
|
||||
|
||||
@Lazy
|
||||
def object(self):
|
||||
return self.target
|
||||
|
|
Loading…
Add table
Reference in a new issue