def _exportItem(self, id, clearRolesInherited=True): it_file = file(self.tmp_folder + '/' + id, 'wb') item = self.db.get_item(id) if clearRolesInherited: item.inheritRoles = False # load external attributes for prop in [getattr(item, x) for x in item.__props__]: if isinstance(prop, datatypes.ExternalAttribute): prop.getValue() it_file.write(persist.dumps(item)) it_file.close() self.package_files.append( ( self.package_file.gettarinfo( it_file.name, '_db/' + os.path.basename(it_file.name) ), it_file.name ) ) if item.isCollection: dummy = [ self._exportItem(childid, False) for childid in item._subfolders.values() + item._items.values() ]
def put_item(self, item): try: self._itemdb.put( pack_value(item._pid) + b'_' + pack_value(item._id), persist.dumps(item), context._trans.txn) except (db.DBLockDeadlockError, db.DBLockNotGrantedError): context._trans.abort() raise exceptions.DBRetryTransaction except db.DBError as e: if e.args[0] == _err_unsupported_index_type: raise db.DBError('Unsupported indexed data type') else: raise
def _update(self): chunk = persist.dumps(self) if type(chunk) != str: # python 3: conver to str chunk = chunk.decode('latin-1') chunks = [chunk[i:i + 4000] for i in range(0, len(chunk), 4000)] for i in range(len(chunks)): context.response.cookies['_s%d' % i] = chunks[i] context.response.cookies['_s%d' % i]['path'] = \ context.request.serverVariables['SCRIPT_NAME'] + '/' j = len(chunks) next = context.request.cookies.get('_s%d' % j, None) while next: context.response.cookies['_s%d' % j] = '' context.response.cookies['_s%d' % j]['path'] = \ context.request.serverVariables['SCRIPT_NAME'] + '/' j += 1 next = context.request.cookies.get('_s%d' % j, None)
def _export_item(self, item, clear_roles_inherited=True): it_file = open(self.tmp_folder + '/' + item._id, 'wb') if clear_roles_inherited: item.inheritRoles = False # load external attributes for prop in [getattr(item, x) for x in item.__props__]: if isinstance(prop, datatypes.ExternalAttribute): prop.get_value() it_file.write(persist.dumps(item)) it_file.close() self.package_files.append(( self.package_file.gettarinfo( it_file.name, '_db/' + os.path.basename(it_file.name)), it_file.name)) if item.isCollection: cursor = db._db.get_children(item._id) cursor.enforce_permissions = False [self._export_item(child, False) for child in cursor] cursor.close()
def put_item(item, trans=None): try: _itemdb.put(item._id, persist.dumps(item), trans and trans.txn) except (db.DBLockDeadlockError, db.DBLockNotGrantedError): raise exceptions.DBTransactionIncomplete