From 5f81ecfed2b5a8bb375c1e5a30269580d7ee56ee Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Mon, 26 May 2014 10:17:39 +0200 Subject: [PATCH] handle deleted tasks gracefully --- organize/party.py | 4 +++- organize/tracking/report.py | 5 ++++- organize/work/browser.py | 3 +++ organize/work/work_macros.pt | 5 +++-- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/organize/party.py b/organize/party.py index 1ad33d5..c83ac40 100644 --- a/organize/party.py +++ b/organize/party.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2013 Helmut Merz helmutm@cy55.de +# Copyright (c) 2014 Helmut Merz helmutm@cy55.de # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -56,6 +56,8 @@ PredicateInterfaceSourceList.predicateInterfaces += (IHasRole,) def getPersonForUser(context, request=None, principal=None): + if context is None: + return None if principal is None: principal = getattr(request, 'principal', None) if principal is None: diff --git a/organize/tracking/report.py b/organize/tracking/report.py index db04490..d1ee35e 100644 --- a/organize/tracking/report.py +++ b/organize/tracking/report.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2008 Helmut Merz helmutm@cy55.de +# Copyright (c) 2014 Helmut Merz helmutm@cy55.de # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -264,6 +264,9 @@ class TrackDetails(BaseView): @Lazy def objectData(self): obj = self.object + if obj is None: + return dict(object=None, title='-', type='-', url='', + version=None, canAccess=False) node = self.view.nodeView url = node is not None and node.getUrlForTarget(obj) or '' view = self.view.getViewForObject(obj) diff --git a/organize/work/browser.py b/organize/work/browser.py index 1d7a0f2..b3b2a71 100644 --- a/organize/work/browser.py +++ b/organize/work/browser.py @@ -170,6 +170,9 @@ class WorkItemDetails(TrackDetails): @Lazy def allowedToEditWorkItem(self): #if checkPermission('loops.ManageSite', self.object): + if (self.object is None and + checkPermission('zope.ManageContent', self.view.node)): + return True if checkPermission('zope.ManageContent', self.object): return True return self.user['object'] == getPersonForUser(self.object, self.view.request) diff --git a/organize/work/work_macros.pt b/organize/work/work_macros.pt index 0d67bbc..26bcfb0 100644 --- a/organize/work/work_macros.pt +++ b/organize/work/work_macros.pt @@ -36,8 +36,9 @@ 20:00 2:30 - Task + Task John