def get_referenced_objects(self): """Get referenced objects from cover object. :returns: a set of objects referenced :rtype: set of objects """ refs = set() for tile_uuid in self.list_tiles(): tile = self.get_tile(tile_uuid) uuid = tile.data.get('uuid', None) if uuid is not None: refs |= set([uuidToObject(uuid)]) if IListTile.providedBy(tile): uuids = tile.data.get('uuids', []) if uuids is None: continue for uuid in uuids: refs |= set([uuidToObject(uuid)]) elif IRichTextTile.providedBy(tile): value = tile.data.get('text') if value is None: continue value = value.raw links = extractLinks(value) refs |= getObjectsFromLinks(self, links) return refs
def render(self): """Render a tile after removing an object from it.""" if not all((self.tile_type, self.tile_id, self.uuid)): raise BadRequest('Invalid parameters') path = '{0}/{1}'.format(self.tile_type, self.tile_id) tile = self.context.restrictedTraverse(path) if IListTile.providedBy(tile): tile.remove_item(self.uuid) return tile()
def render(self): """Render a tile after removing an object from it.""" tile_type = self.request.form.get('tile-type') tile_id = self.request.form.get('tile-id') uuid = self.request.form.get('uuid') if tile_type and tile_id and uuid: tile = self.context.restrictedTraverse('{0}/{1}'.format(tile_type, tile_id)) if IListTile.providedBy(tile): tile.remove_item(uuid) # reinstantiate the tile to update its content on AJAX calls tile = self.context.restrictedTraverse('{0}/{1}'.format(tile_type, tile_id)) return tile() else: raise BadRequest('Invalid parameters')
def _move_selected_content(self, origin_tile, target_tile, obj): """Move selected content from one tile to another tile""" target_tile.populate_with_object(obj) if IListTile.providedBy(origin_tile): uuid = IUUID(obj) origin_tile.remove_item(uuid) else: origin_dmgr = ITileDataManager(origin_tile) origin_data = origin_dmgr.get() target_dmgr = ITileDataManager(target_tile) target_data = target_dmgr.get() for k, v in origin_data.iteritems(): if k in target_data and not k.startswith('uuid') and v is not None: target_data[k] = v target_dmgr.set(target_data) origin_dmgr.delete()
def _move_selected_content(self, origin_tile, target_tile, obj): """Move selected content from one tile to another tile""" target_tile.populate_with_object(obj) if IListTile.providedBy(origin_tile): uuid = IUUID(obj) origin_tile.remove_item(uuid) else: origin_dmgr = ITileDataManager(origin_tile) origin_data = origin_dmgr.get() target_dmgr = ITileDataManager(target_tile) target_data = target_dmgr.get() for k, v in origin_data.iteritems(): if k in target_data and not k.startswith( 'uuid') and v is not None: target_data[k] = v target_dmgr.set(target_data) origin_dmgr.delete()
def get_has_subitem(self, tile_type, tile_id): """Return if tile has subitems (inherited from IListTile).""" tile = self.context.restrictedTraverse('{0}/{1}'.format(str(tile_type), str(tile_id))) return IListTile.providedBy(tile)