コード例 #1
0
 def putQuarantine(self, item):
     folder = Setting().get(PluginSettings.HUI_QUARANTINE_FOLDER)
     if not folder:
         raise RestException('The quarantine folder is not configured.')
     folder = Folder().load(folder, force=True, exc=True)
     if not folder:
         raise RestException('The quarantine folder does not exist.')
     if str(folder['_id']) == str(item['folderId']):
         raise RestException('The item is already in the quarantine folder.')
     originalFolder = Folder().load(item['folderId'], force=True)
     quarantineInfo = {
         'originalFolderId': item['folderId'],
         'originalBaseParentType': item['baseParentType'],
         'originalBaseParentId': item['baseParentId'],
         'originalUpdated': item['updated'],
         'quarantineUserId': self.getCurrentUser()['_id'],
         'quarantineTime': datetime.datetime.utcnow()
     }
     item = Item().move(item, folder)
     placeholder = Item().createItem(
         item['name'], {'_id': item['creatorId']}, originalFolder,
         description=item['description'])
     quarantineInfo['placeholderItemId'] = placeholder['_id']
     item.setdefault('meta', {})['quarantine'] = quarantineInfo
     item = Item().updateItem(item)
     placeholderInfo = {
         'quarantined': True,
         'quarantineTime': quarantineInfo['quarantineTime']
     }
     placeholder.setdefault('meta', {})['quarantine'] = placeholderInfo
     placeholder = Item().updateItem(placeholder)
     return item
コード例 #2
0
def quarantine_item(item, user, makePlaceholder=True):
    """
    Quarantine an item, marking which user did it.  Note that this raises
    RestExceptions for failures.

    :param user: the user doing the quarantining.
    :param item: an item to quarantine.
    :returns: the modified item.
    """
    folder = Setting().get(PluginSettings.HUI_QUARANTINE_FOLDER)
    if not folder:
        raise RestException('The quarantine folder is not configured.')
    folder = Folder().load(folder, force=True, exc=True)
    if not folder:
        raise RestException('The quarantine folder does not exist.')
    if str(folder['_id']) == str(item['folderId']):
        raise RestException('The item is already in the quarantine folder.')
    originalFolder = Folder().load(item['folderId'], force=True)
    quarantineInfo = {
        'originalFolderId': item['folderId'],
        'originalBaseParentType': item['baseParentType'],
        'originalBaseParentId': item['baseParentId'],
        'originalUpdated': item['updated'],
        'quarantineUserId': user['_id'],
        'quarantineTime': datetime.datetime.utcnow()
    }
    item = Item().move(item, folder)
    if makePlaceholder:
        placeholder = Item().createItem(item['name'] +
                                        ' [Removed - Quarantined]',
                                        {'_id': item['creatorId']},
                                        originalFolder,
                                        description=item['description'])
        quarantineInfo['placeholderItemId'] = placeholder['_id']
    item.setdefault('meta', {})['quarantine'] = quarantineInfo
    item = Item().updateItem(item)
    if makePlaceholder:
        placeholderInfo = {
            'quarantined': True,
            'quarantineTime': quarantineInfo['quarantineTime']
        }
        placeholder.setdefault('meta', {})['quarantine'] = placeholderInfo
        placeholder = Item().updateItem(placeholder)
    return item