def can_commit(self, item): if not ICheckedOut.providedBy(item): return False parent = getattr(item, 'aq_parent', None) while parent is not None: if ICheckedOut.providedBy(parent): return False parent = getattr(parent, 'aq_parent', None) return True
def can_start_new_version(self, item): parent = item while parent is not None: if ICheckedOut.providedBy(parent): return False parent = getattr(parent, 'aq_parent', None) return True
def new(self, item): counter = 0 for dontcare, child in item.ZopeFind(item, search_sub=1): if ICheckedOut.providedBy(child) or ICheckedIn.providedBy(child): raise RuntimeError, "Child is marked with ICheckedOut or ICheckedIn" if counter > 30: raise RuntimeError, "The object contains more than 30 children" counter += 1 return func(self, item)
def catalog_object(self, obj, uid=None, idxs=None, update_metadata=1, pghandler=None, skip_interface_check=False): """If skip_interface_check then only catalog obj if it provides ICheckedOut or ICheckedIn""" if not skip_interface_check: if not (ICheckedOut.providedBy(obj) or ICheckedIn.providedBy(obj)): return CatalogTool.catalog_object( self, IVersionMetadata(obj), uid, idxs, update_metadata, pghandler )
def content_allowedRolesAndUsers(object): """Restrict allowedRolesAndUsers severely for a new version of an item""" parent = object while parent is not None: if ICheckedOut.providedBy(parent): pms = getToolByName(object, 'portal_membership') member = pms.getAuthenticatedMember() return ['user:%s' % member.getId()] parent = getattr(parent, 'aq_parent', None) return allowedRolesAndUsers(object)
def catalog_object(self, obj, uid=None, idxs=None, update_metadata=1, pghandler=None, skip_interface_check=False): """If skip_interface_check then only catalog obj if it provides ICheckedOut or ICheckedIn""" if not skip_interface_check: if not (ICheckedOut.providedBy(obj) or ICheckedIn.providedBy(obj)): return CatalogTool.catalog_object(self, IVersionMetadata(obj), uid, idxs, update_metadata, pghandler)
def state(self): if ICheckedOut.providedBy(self.context): return 'checked_out' if ICheckedIn.providedBy(self.context): return 'checked_in' return None
def getVersionsOf(self, obj): """Return all versions of object identified by token""" if not (ICheckedOut.providedBy(obj) or ICheckedIn.providedBy(obj)): return [] return self(token=IVersionMetadata(obj).token)