Ciao ragazzi,
ho settato il mio database di produzione in modo da caricare i docmenti in allegato in cartelle fisiche e non nel DB, sto provando però a lanciare uno script per spostare tutti quegli allegati che già prima erano sul db nel disco fisso ma quando esegue la prima sock.execute si pianta e mi da Connection TimeOut credo sia dovuto al fatto che gli allegato sono molti e nella prima execute cerca di caricare tutte le colonne della tabella dovendo quindi creare un array enorme, è possibile evitare ciò filtrando solo la colonna id in modo da snellire la procedure e far funzionare meglio lo scrip o come posso risolvere!!!??
Lo script l'ho trovato online ed è il seguente:
#!/usr/bin/python
import xmlrpclib
username = 'admin' #the user
pwd = 'password' #the password of the user
dbname = 'database' #the database
# Get the uid
sock_common = xmlrpclib.ServerProxy ('<URL>/xmlrpc/common')
uid = sock_common.login(dbname, username, pwd)
sock = xmlrpclib.ServerProxy('<URL>/xmlrpc/object')
def migrate_attachment(att_id):
# 1. get data
att = sock.execute(dbname, uid, pwd, 'ir.attachment', 'read', att_id, ['datas'])
data = att['datas']
# Re-Write attachment
a = sock.execute(dbname, uid, pwd, 'ir.attachment', 'write', [att_id], {'datas': data})
# SELECT attachments:
att_ids = sock.execute(dbname, uid, pwd, 'ir.attachment', 'search', [('store_fname','=',False)])
cnt = len(att_ids)
i = 0
for id in att_ids:
att = sock.execute(dbname, uid, pwd, 'ir.attachment', 'read', id, ['datas','parent_id'])
migrate_attachment(id)
print 'Migrated ID %d (attachment %d of %d)' % (id,i,cnt)
i = i + 1
print "done ..."
AIUTO pls!!!