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
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