[gen] Improved performance of the Ref field and added an icon for dissociating referred objects.

This commit is contained in:
Gaetan Delannay 2012-10-08 10:08:54 +02:00
parent 872b77208b
commit 9954edf71a
9 changed files with 71 additions and 19 deletions

View file

@ -16,7 +16,7 @@ except ImportError:
_noroles = []
# Errors -----------------------------------------------------------------------
jsMessages = ('no_elem_selected', 'delete_confirm')
jsMessages = ('no_elem_selected', 'delete_confirm', 'unlink_confirm')
# ------------------------------------------------------------------------------
class ToolMixin(BaseMixin):

View file

@ -106,6 +106,7 @@ class BaseMixin:
self.getParentNode().manage_delObjects([self.id])
def onDelete(self):
'''Called when an object deletion is triggered from the ui.'''
rq = self.REQUEST
self.delete()
if self.getUrl(rq['HTTP_REFERER'],mode='raw') ==self.getUrl(mode='raw'):
@ -117,6 +118,18 @@ class BaseMixin:
self.say(self.translate('delete_done'))
self.goto(urlBack)
def onUnlink(self):
'''Called when an object unlinking is triggered from the ui.'''
rq = self.REQUEST
tool = self.getTool()
sourceObject = tool.getObject(rq['sourceUid'])
targetObject = tool.getObject(rq['targetUid'])
field = sourceObject.getAppyType(rq['fieldName'])
field.unlinkObject(sourceObject, targetObject)
urlBack = self.getUrl(rq['HTTP_REFERER'])
self.say(self.translate('unlink_done'))
self.goto(urlBack)
def onCreate(self):
'''This method is called when a user wants to create a root object in
the "data" folder or an object through a reference field. A temporary
@ -1006,7 +1019,7 @@ class BaseMixin:
return True
def mayDelete(self):
'''May the currently logged user delete this object?.'''
'''May the currently logged user delete this object?'''
res = self.allows('Delete objects')
if not res: return
# An additional, user-defined condition, may refine the base permission.
@ -1014,9 +1027,10 @@ class BaseMixin:
if hasattr(appyObj, 'mayDelete'): return appyObj.mayDelete()
return True
def mayEdit(self):
'''May the currently logged user edit this object?.'''
res = self.allows('Modify portal content')
def mayEdit(self, permission='Modify portal content'):
'''May the currently logged user edit this object? p_perm can be a
field-specific permission.'''
res = self.allows(permission)
if not res: return
# An additional, user-defined condition, may refine the base permission.
appyObj = self.appy()