- 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
|
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
|
- field order: make sure title and description are always on top
|
||||||
- yellow pages: view task_candidates for selecting persons with required
|
- yellow pages: view task_candidates for selecting persons with required
|
||||||
knowledge for task
|
knowledge for task
|
||||||
|
|
|
@ -33,6 +33,7 @@ from cybertools.browser.action import actions
|
||||||
from cybertools.tracking.browser import TrackView
|
from cybertools.tracking.browser import TrackView
|
||||||
from loops.browser.action import DialogAction
|
from loops.browser.action import DialogAction
|
||||||
from loops.browser.form import ObjectForm, EditObject
|
from loops.browser.form import ObjectForm, EditObject
|
||||||
|
from loops.organize.party import getPersonForUser
|
||||||
from loops import util
|
from loops import util
|
||||||
|
|
||||||
|
|
||||||
|
@ -95,6 +96,13 @@ class BaseTrackView(TrackView):
|
||||||
return dict(title=obj.title, url=url, obj=obj)
|
return dict(title=obj.title, url=url, obj=obj)
|
||||||
return dict(title=value, url=None, obj=None)
|
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):
|
class ChangeView(BaseTrackView):
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@ from cybertools.meta.interfaces import IOptions
|
||||||
from cybertools.util import format
|
from cybertools.util import format
|
||||||
from loops.browser.common import BaseView
|
from loops.browser.common import BaseView
|
||||||
from loops.interfaces import IConcept, IResource
|
from loops.interfaces import IConcept, IResource
|
||||||
|
from loops.organize.party import getPersonForUser
|
||||||
from loops.security.common import canAccessObject
|
from loops.security.common import canAccessObject
|
||||||
from loops import util
|
from loops import util
|
||||||
from loops.util import _
|
from loops.util import _
|
||||||
|
@ -289,6 +290,14 @@ class TrackDetails(BaseView):
|
||||||
url = node is not None and node.getUrlForTarget(obj) or ''
|
url = node is not None and node.getUrlForTarget(obj) or ''
|
||||||
return dict(object=obj, title=obj.title, url=url)
|
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
|
@Lazy
|
||||||
def action(self):
|
def action(self):
|
||||||
return self.track.data.get('action', '')
|
return self.track.data.get('action', '')
|
||||||
|
|
|
@ -139,8 +139,7 @@ class WorkItemDetails(TrackDetails):
|
||||||
target=self.object,
|
target=self.object,
|
||||||
addParams=dict(id=self.track.__name__))
|
addParams=dict(id=self.track.__name__))
|
||||||
actions = [info, WorkItemStateAction(self)]
|
actions = [info, WorkItemStateAction(self)]
|
||||||
if (self.isLastInRun and
|
if self.isLastInRun and self.allowedToEditWorkItem:
|
||||||
self.user['object'] == getPersonForUser(self.object, self.view.request)):
|
|
||||||
self.view.registerDojoDateWidget()
|
self.view.registerDojoDateWidget()
|
||||||
self.view.registerDojoNumberWidget()
|
self.view.registerDojoNumberWidget()
|
||||||
self.view.registerDojoTextarea()
|
self.view.registerDojoTextarea()
|
||||||
|
@ -155,6 +154,14 @@ class WorkItemDetails(TrackDetails):
|
||||||
addParams=dict(id=self.track.__name__)))
|
addParams=dict(id=self.track.__name__)))
|
||||||
return actions
|
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):
|
class WorkItemInfo(NodeView):
|
||||||
""" Provides info box.
|
""" Provides info box.
|
||||||
|
@ -418,13 +425,6 @@ class CreateWorkItem(EditObject, BaseTrackView):
|
||||||
workItems = self.loopsRoot.getRecordManager()['work']
|
workItems = self.loopsRoot.getRecordManager()['work']
|
||||||
return workItems.get(id)
|
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
|
@Lazy
|
||||||
def object(self):
|
def object(self):
|
||||||
return self.target
|
return self.target
|
||||||
|
|
Loading…
Add table
Reference in a new issue