示例#1
0
    def delete(self):
        """ Remove the persistent data associated with the tile and notify the
        cover object was modified.
        """
        logger.debug('Deleting tile %s', self.id)

        data_mgr = ITileDataManager(self)
        data_mgr.delete()

        notify(ObjectModifiedEvent(self.context))
示例#2
0
 def _move_all_content(self, origin_tile, target_tile):
     """Move all content from one tile to another tile"""
     # copy data
     origin_dmgr = ITileDataManager(origin_tile)
     origin_data = origin_dmgr.get()
     if origin_data.get('uuids', None) is None:
         return
     target_dmgr = ITileDataManager(target_tile)
     target_dmgr.set(origin_dmgr.get())
     # remove origin tile
     origin_dmgr.delete()
示例#3
0
 def _move_all_content(self, origin_tile, target_tile):
     """Move all content from one tile to another tile"""
     # copy data
     origin_dmgr = ITileDataManager(origin_tile)
     origin_data = origin_dmgr.get()
     if origin_data.get('uuids', None) is None:
         return
     target_dmgr = ITileDataManager(target_tile)
     target_dmgr.set(origin_dmgr.get())
     # remove origin tile
     origin_dmgr.delete()
示例#4
0
 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()
示例#5
0
    def __call__(self):
        template = self.template
        if 'form.submitted' not in self.request:
            return template.render(self)

        annotations = IAnnotations(self.context)
        current_tiles = annotations.get('current_tiles', {})
        tile_id = self.request.get('wid', None)

        if tile_id in current_tiles:
            widget_type = current_tiles[tile_id]['type']
            # Let's remove all traces of the value stored in the tile
            widget_uri = '@@{0}/{1}'.format(widget_type, tile_id)
            tile = self.context.restrictedTraverse(widget_uri)

            dataManager = ITileDataManager(tile)
            dataManager.delete()
示例#6
0
 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()
示例#7
0
    def __call__(self):
        template = self.template
        if 'form.submitted' not in self.request:
            return template.render(self)

        annotations = IAnnotations(self.context)
        current_tiles = annotations.get('current_tiles', {})
        tile_id = self.request.get('wid', None)

        if tile_id in current_tiles:
            widget_type = current_tiles[tile_id]['type']
            # Let's remove all traces of the value stored in the tile
            widget_uri = '@@{0}/{1}'.format(widget_type, tile_id)
            tile = self.context.restrictedTraverse(widget_uri)

            dataManager = ITileDataManager(tile)
            dataManager.delete()
示例#8
0
    def delete_tile(self):
        meta_data_manager = self.get_meta_data_manager()
        meta_data = meta_data_manager.get()

        idx = int(self.request.get('idx'))
        tiles = meta_data['tiles']
        tile_data = tiles[idx]
        tile_type = tile_data['type']

        tile = self.get_tile(tile_type, tile_data['id'])

        dataManager = ITileDataManager(tile)
        dataManager.delete()

        notify(ObjectRemovedEvent(tile))

        tiles.remove(tile_data)
        meta_data_manager.set(meta_data)
示例#9
0
    def handleDelete(self, action):
        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorsMessage
            return
        typeName = self.tileType.__name__

        # Traverse to the tile about to be removed
        tile = self.context.restrictedTraverse(
            "@@%s/%s" % (typeName, self.tileId,)
        )
        # Look up the URL - we need to do this before we've deleted the data to
        # correctly account for transient tiles
        tileURL = absoluteURL(tile, self.request)

        dataManager = ITileDataManager(tile)
        dataManager.delete()

        # PATCH #
        key = "{}/{}".format(typeName, self.tileId)
        if key in dataManager.storage.keys():
            # this is a not persistent tile and we need to force deletion
            dataManager.storage[key] = {}
        # END OF PATCH #

        notify(ObjectRemovedEvent(tile, self.context, self.tileId))
        logger.debug(u"Tile deleted at {0}".format(tileURL))

        # Skip form rendering for AJAX requests
        if self.request.get("HTTP_X_REQUESTED_WITH") == "XMLHttpRequest":
            IStatusMessage(self.request).addStatusMessage(
                _(u"Tile deleted at ${url}", mapping={"url": tileURL}),
                type=u"info",
            )
            self.template = lambda: u""
            return

        try:
            url = self.nextURL(tile)
        except NotImplementedError:
            url = self.context.absolute_url()

        self.request.response.redirect(url)
示例#10
0
    def delete(self):
        """ Remove the persistent data associated with the tile and notify the
        cover object was modified.
        """
        logger.debug("Deleting tile {0}".format(self.id))

        data_mgr = ITileDataManager(self)
        data_mgr.delete()

        # Remove permission data
        permissions = getMultiAdapter((self.context, self.request, self),
                                      ITilesPermissions)
        permissions.delete()

        # Remove configuration data
        configuration = getMultiAdapter((self.context, self.request, self),
                                        ITilesConfigurationScreen)
        configuration.delete()

        notify(ObjectModifiedEvent(self.context))
示例#11
0
    def delete(self):
        """ Remove the persistent data associated with the tile and notify the
        cover object was modified.
        """
        logger.debug('Deleting tile {0}'.format(self.id))

        data_mgr = ITileDataManager(self)
        data_mgr.delete()

        # Remove permission data
        permissions = getMultiAdapter(
            (self.context, self.request, self), ITilesPermissions)
        permissions.delete()

        # Remove configuration data
        configuration = getMultiAdapter(
            (self.context, self.request, self), ITilesConfigurationScreen)
        configuration.delete()

        notify(ObjectModifiedEvent(self.context))
示例#12
0
    def __call__(self):

        # Set up draft information if required
        currentDraft = ICurrentDraftManagement(self.request)
        currentDraft.mark()

        self.request['disable_border'] = True

        confirm = self.request.form.get('confirm', False)

        self.tileTypeName = self.request.form.get('type', None)
        self.tileId = self.request.form.get('id', None)

        self.deleted = False

        if confirm and self.tileTypeName and self.tileId:

            tileType = getUtility(ITileType, name=self.tileTypeName)

            if not checkPermission(tileType.add_permission, self.context):
                raise Unauthorized("You are not allowed to modify this " + \
                                   "tile type")

            tile = self.context.restrictedTraverse(
                '@@%s/%s' % (self.tileTypeName, self.tileId,))

            dm = ITileDataManager(tile)
            dm.delete()

            notify(ObjectRemovedEvent(tile, self.context, self.tileId))

            self.deleted = True

        elif 'form.button.Ok' in self.request.form:
            self.request.response.redirect(
                self.context.absolute_url() + '/view')
            return ''

        return self.index()
示例#13
0
    def handleDelete(self, action):
        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorsMessage
            return

        typeName = self.tileType.__name__

        # Traverse to a new tile in the context, with no data
        tile = self.context.restrictedTraverse(
            '@@%s/%s' % (typeName, self.tileId,))
        # Look up the URL - we need to do this before we've deletd the data to
        # correctly account for transient tiles
        tileURL = absoluteURL(tile, self.request)

        dataManager = ITileDataManager(tile)
        dataManager.delete()

        notify(ObjectRemovedEvent(tile))
        logger.debug(u"Tile deleted at {0}".format(tileURL))

        # Skip form rendering for AJAX requests
        if self.request.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest':
            IStatusMessage(self.request).addStatusMessage(
                _(u"Tile deleted at ${url}", mapping={'url': tileURL}),
                type=u'info'
            )
            self.template = lambda: u''
            return

        try:
            url = self.nextURL(tile)
        except NotImplementedError:
            url = self.context.absolute_url()

        self.request.response.redirect(url)
示例#14
0
 def delete(self):
     data_mgr = ITileDataManager(self)
     data_mgr.delete()
示例#15
0
 def delete(self):
     data_mgr = ITileDataManager(self)
     data_mgr.delete()
示例#16
0
 def delete(self):
     data_mgr = ITileDataManager(self)
     data_mgr.delete()
     logger.debug('tile %s deleted', self.id)