[FIX] base_report_design: fix mixed tabs/spaces preventing compilation under recent libreoffice versions
Plugin binary was updated in previous commit already with these fixes, so not updated again bzr revid: odo@openerp.com-20130304173132-op4hcnr1l104mzfg
This commit is contained in:
parent
b185da93a3
commit
84593b0ccf
|
@ -92,9 +92,9 @@ class ExportToRML( unohelper.Base, XJobExecutor ):
|
|||
if docinfo.getUserFieldValue(2) == "":
|
||||
ErrorDialog("Please Save this file on server","Use Send To Server Option in OpenERP Report Menu","Error")
|
||||
exit(1)
|
||||
filename = self.GetAFileName()
|
||||
if not filename:
|
||||
exit(1)
|
||||
filename = self.GetAFileName()
|
||||
if not filename:
|
||||
exit(1)
|
||||
global passwd
|
||||
self.password = passwd
|
||||
try:
|
||||
|
@ -118,7 +118,7 @@ class ExportToRML( unohelper.Base, XJobExecutor ):
|
|||
initPath = tempfile.gettempdir()
|
||||
oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess")
|
||||
if oUcb.exists(initPath):
|
||||
oFileDialog.setDisplayDirectory('file://' + ( os.name == 'nt' and '/' or '' ) + initPath )
|
||||
oFileDialog.setDisplayDirectory('file://' + ( os.name == 'nt' and '/' or '' ) + initPath )
|
||||
|
||||
oFileDialog.setDefaultName(f_path )
|
||||
|
||||
|
|
|
@ -209,13 +209,13 @@ class Fields(unohelper.Base, XJobExecutor ):
|
|||
key.sort()
|
||||
myval=None
|
||||
if not sVar.find("/")==-1:
|
||||
myval=sVar[:sVar.find("/")]
|
||||
myval=sVar[:sVar.find("/")]
|
||||
else:
|
||||
myval=sVar
|
||||
if myval in key:
|
||||
if (res[myval]['type'] in ['many2one']):
|
||||
sObject = res[myval]['relation']
|
||||
return self.getRes(sock,res[myval]['relation'], sVar[sVar.find("/")+1:])
|
||||
return self.getRes(sock,res[myval]['relation'], sVar[sVar.find("/")+1:])
|
||||
else:
|
||||
return sObject
|
||||
|
||||
|
|
|
@ -166,33 +166,33 @@ class RepeatIn( unohelper.Base, XJobExecutor ):
|
|||
self.sValue= "objects"
|
||||
else:
|
||||
sItem=""
|
||||
for anObject in self.aObjectList:
|
||||
if anObject[:anObject.find("(")] == sObject:
|
||||
sItem = anObject
|
||||
self.insVariable.setText( sItem )
|
||||
for anObject in self.aObjectList:
|
||||
if anObject[:anObject.find("(")] == sObject:
|
||||
sItem = anObject
|
||||
self.insVariable.setText( sItem )
|
||||
|
||||
genTree(
|
||||
sItem[sItem.find("(")+1:sItem.find(")")],
|
||||
self.aListRepeatIn,
|
||||
self.insField,
|
||||
self.sMyHost,
|
||||
2,
|
||||
ending=['one2many','many2many'],
|
||||
recur=['one2many','many2many']
|
||||
)
|
||||
genTree(
|
||||
sItem[sItem.find("(")+1:sItem.find(")")],
|
||||
self.aListRepeatIn,
|
||||
self.insField,
|
||||
self.sMyHost,
|
||||
2,
|
||||
ending=['one2many','many2many'],
|
||||
recur=['one2many','many2many']
|
||||
)
|
||||
|
||||
self.sValue= self.win.getListBoxItem("lstFields",self.aListRepeatIn.index(sFields))
|
||||
|
||||
for var in self.aVariableList:
|
||||
|
||||
if var[:8] <> 'List of ':
|
||||
self.model_ids = self.sock.execute(database, uid, self.password, 'ir.model' , 'search', [('model','=',var[var.find("(")+1:var.find(")")])])
|
||||
if var[:8] <> 'List of ':
|
||||
self.model_ids = self.sock.execute(database, uid, self.password, 'ir.model' , 'search', [('model','=',var[var.find("(")+1:var.find(")")])])
|
||||
else:
|
||||
self.model_ids = self.sock.execute(database, uid, self.password, 'ir.model' , 'search', [('model','=',var[8:])])
|
||||
self.model_ids = self.sock.execute(database, uid, self.password, 'ir.model' , 'search', [('model','=',var[8:])])
|
||||
fields=['name','model']
|
||||
self.model_res = self.sock.execute(database, uid, self.password, 'ir.model', 'read', self.model_ids,fields)
|
||||
if self.model_res <> []:
|
||||
if var[:8]<>'List of ':
|
||||
if var[:8]<>'List of ':
|
||||
self.insVariable.addItem(var[:var.find("(")+1] + self.model_res[0]['name'] + ")" ,self.insVariable.getItemCount())
|
||||
else:
|
||||
self.insVariable.addItem('List of ' + self.model_res[0]['name'] ,self.insVariable.getItemCount())
|
||||
|
@ -212,8 +212,8 @@ class RepeatIn( unohelper.Base, XJobExecutor ):
|
|||
self.win.setEditText("txtName", self.sGVariable)
|
||||
self.win.setEditText("txtUName",self.sGDisplayName)
|
||||
else:
|
||||
self.win.setEditText("txtName",sMain[sMain.rfind("/")+1:])
|
||||
self.win.setEditText("txtUName","|-."+sItem[sItem.rfind("/")+1:]+".-|")
|
||||
self.win.setEditText("txtName",sMain[sMain.rfind("/")+1:])
|
||||
self.win.setEditText("txtUName","|-."+sItem[sItem.rfind("/")+1:]+".-|")
|
||||
|
||||
def cmbVariable_selected(self, oItemEvent):
|
||||
|
||||
|
@ -225,15 +225,15 @@ class RepeatIn( unohelper.Base, XJobExecutor ):
|
|||
self.win.removeListBoxItems("lstFields", 0, self.win.getListBoxItemCount("lstFields"))
|
||||
sItem=self.win.getComboBoxText("cmbVariable")
|
||||
for var in self.aVariableList:
|
||||
if var[:8]=='List of ':
|
||||
if var[:8]==sItem[:8]:
|
||||
if var[:8]=='List of ':
|
||||
if var[:8]==sItem[:8]:
|
||||
sItem = var
|
||||
elif var[:var.find("(")+1] == sItem[:sItem.find("(")+1]:
|
||||
elif var[:var.find("(")+1] == sItem[:sItem.find("(")+1]:
|
||||
sItem = var
|
||||
self.aListRepeatIn=[]
|
||||
|
||||
data = ( sItem[sItem.rfind(" ") + 1:] == docinfo.getUserFieldValue(3) ) and docinfo.getUserFieldValue(3) or sItem[sItem.find("(")+1:sItem.find(")")]
|
||||
genTree( data, self.aListRepeatIn, self.insField, self.sMyHost, 2, ending=['one2many','many2many'], recur=['one2many','many2many'] )
|
||||
data = ( sItem[sItem.rfind(" ") + 1:] == docinfo.getUserFieldValue(3) ) and docinfo.getUserFieldValue(3) or sItem[sItem.find("(")+1:sItem.find(")")]
|
||||
genTree( data, self.aListRepeatIn, self.insField, self.sMyHost, 2, ending=['one2many','many2many'], recur=['one2many','many2many'] )
|
||||
|
||||
self.win.selectListBoxItemPos("lstFields", 0, True )
|
||||
|
||||
|
|
|
@ -112,43 +112,43 @@ class AddLang(unohelper.Base, XJobExecutor ):
|
|||
text=cursor.getText()
|
||||
tcur=text.createTextCursorByRange(cursor)
|
||||
|
||||
self.aVariableList.extend( filter( lambda obj: obj[:obj.find("(")] == "Objects", self.aObjectList ) )
|
||||
self.aVariableList.extend( filter( lambda obj: obj[:obj.find("(")] == "Objects", self.aObjectList ) )
|
||||
|
||||
for i in range(len(self.aItemList)):
|
||||
anItem = self.aItemList[i][1]
|
||||
component = self.aComponentAdd[i]
|
||||
anItem = self.aItemList[i][1]
|
||||
component = self.aComponentAdd[i]
|
||||
|
||||
if component == "Document":
|
||||
sLVal = anItem[anItem.find(",'") + 2:anItem.find("')")]
|
||||
self.aVariableList.extend( filter( lambda obj: obj[:obj.find("(")] == sLVal, self.aObjectList ) )
|
||||
sLVal = anItem[anItem.find(",'") + 2:anItem.find("')")]
|
||||
self.aVariableList.extend( filter( lambda obj: obj[:obj.find("(")] == sLVal, self.aObjectList ) )
|
||||
|
||||
if tcur.TextSection:
|
||||
getRecersiveSection(tcur.TextSection,self.aSectionList)
|
||||
if component in self.aSectionList:
|
||||
sLVal = anItem[anItem.find(",'") + 2:anItem.find("')")]
|
||||
self.aVariableList.extend( filter( lambda obj: obj[:obj.find("(")] == sLVal, self.aObjectList ) )
|
||||
sLVal = anItem[anItem.find(",'") + 2:anItem.find("')")]
|
||||
self.aVariableList.extend( filter( lambda obj: obj[:obj.find("(")] == sLVal, self.aObjectList ) )
|
||||
|
||||
if tcur.TextTable:
|
||||
if not component == "Document" and component[component.rfind(".") + 1:] == tcur.TextTable.Name:
|
||||
if not component == "Document" and component[component.rfind(".") + 1:] == tcur.TextTable.Name:
|
||||
VariableScope(tcur,self.insVariable,self.aObjectList,self.aComponentAdd,self.aItemList,component)
|
||||
|
||||
self.bModify=bFromModify
|
||||
if self.bModify==True:
|
||||
sItem=""
|
||||
for anObject in self.aObjectList:
|
||||
if anObject[:anObject.find("(")] == sVariable:
|
||||
sItem = anObject
|
||||
self.insVariable.setText( sItem )
|
||||
genTree(sItem[sItem.find("(")+1:sItem.find(")")],self.aListFields, self.insField,self.sMyHost,2,ending_excl=['one2many','many2one','many2many','reference'], recur=['many2one'])
|
||||
for anObject in self.aObjectList:
|
||||
if anObject[:anObject.find("(")] == sVariable:
|
||||
sItem = anObject
|
||||
self.insVariable.setText( sItem )
|
||||
genTree(sItem[sItem.find("(")+1:sItem.find(")")],self.aListFields, self.insField,self.sMyHost,2,ending_excl=['one2many','many2one','many2many','reference'], recur=['many2one'])
|
||||
self.sValue= self.win.getListBoxItem("lstFields",self.aListFields.index(sFields))
|
||||
|
||||
for var in self.aVariableList:
|
||||
|
||||
self.model_ids = self.sock.execute(database, uid, self.password, 'ir.model' , 'search', [('model','=',var[var.find("(")+1:var.find(")")])])
|
||||
self.model_ids = self.sock.execute(database, uid, self.password, 'ir.model' , 'search', [('model','=',var[var.find("(")+1:var.find(")")])])
|
||||
fields=['name','model']
|
||||
self.model_res = self.sock.execute(database, uid, self.password, 'ir.model', 'read', self.model_ids,fields)
|
||||
if self.model_res <> []:
|
||||
self.insVariable.addItem(var[:var.find("(")+1] + self.model_res[0]['name'] + ")" ,self.insVariable.getItemCount())
|
||||
self.insVariable.addItem(var[:var.find("(")+1] + self.model_res[0]['name'] + ")" ,self.insVariable.getItemCount())
|
||||
else:
|
||||
self.insVariable.addItem(var ,self.insVariable.getItemCount())
|
||||
|
||||
|
@ -165,15 +165,15 @@ class AddLang(unohelper.Base, XJobExecutor ):
|
|||
docinfo=doc.getDocumentInfo()
|
||||
sItem= self.win.getComboBoxText("cmbVariable")
|
||||
for var in self.aVariableList:
|
||||
if var[:var.find("(")+1]==sItem[:sItem.find("(")+1]:
|
||||
if var[:var.find("(")+1]==sItem[:sItem.find("(")+1]:
|
||||
sItem = var
|
||||
sMain=self.aListFields[self.win.getListBoxSelectedItemPos("lstFields")]
|
||||
t=sMain.rfind('/lang')
|
||||
if t!=-1:
|
||||
sObject=self.getRes(self.sock,sItem[sItem.find("(")+1:-1],sMain[1:])
|
||||
sObject=self.getRes(self.sock,sItem[sItem.find("(")+1:-1],sMain[1:])
|
||||
ids = self.sock.execute(database, uid, self.password, sObject , 'search', [])
|
||||
res = self.sock.execute(database, uid, self.password, sObject , 'read',[ids[0]])
|
||||
self.win.setEditText("txtUName",res[0][sMain[sMain.rfind("/")+1:]])
|
||||
self.win.setEditText("txtUName",res[0][sMain[sMain.rfind("/")+1:]])
|
||||
else:
|
||||
ErrorDialog("Please select a language.")
|
||||
|
||||
|
@ -192,13 +192,13 @@ class AddLang(unohelper.Base, XJobExecutor ):
|
|||
key.sort()
|
||||
myval=None
|
||||
if not sVar.find("/")==-1:
|
||||
myval=sVar[:sVar.find("/")]
|
||||
myval=sVar[:sVar.find("/")]
|
||||
else:
|
||||
myval=sVar
|
||||
if myval in key:
|
||||
if (res[myval]['type'] in ['many2one']):
|
||||
sObject = res[myval]['relation']
|
||||
return self.getRes(sock,res[myval]['relation'], sVar[sVar.find("/")+1:])
|
||||
return self.getRes(sock,res[myval]['relation'], sVar[sVar.find("/")+1:])
|
||||
else:
|
||||
return sObject
|
||||
|
||||
|
@ -213,18 +213,18 @@ class AddLang(unohelper.Base, XJobExecutor ):
|
|||
self.aListFields=[]
|
||||
tempItem = self.win.getComboBoxText("cmbVariable")
|
||||
for var in self.aVariableList:
|
||||
if var[:var.find("(")] == tempItem[:tempItem.find("(")]:
|
||||
if var[:var.find("(")] == tempItem[:tempItem.find("(")]:
|
||||
sItem=var
|
||||
|
||||
genTree(
|
||||
sItem[ sItem.find("(") + 1:sItem.find(")")],
|
||||
self.aListFields,
|
||||
self.insField,
|
||||
self.sMyHost,
|
||||
2,
|
||||
ending_excl=['one2many','many2one','many2many','reference'],
|
||||
recur=['many2one']
|
||||
)
|
||||
genTree(
|
||||
sItem[ sItem.find("(") + 1:sItem.find(")")],
|
||||
self.aListFields,
|
||||
self.insField,
|
||||
self.sMyHost,
|
||||
2,
|
||||
ending_excl=['one2many','many2one','many2many','reference'],
|
||||
recur=['many2one']
|
||||
)
|
||||
|
||||
except:
|
||||
import traceback;traceback.print_exc()
|
||||
|
|
|
@ -87,19 +87,19 @@ def genTree(object, aList, insField, host, level=3, ending=None, ending_excl=Non
|
|||
|
||||
def VariableScope(oTcur, insVariable, aObjectList, aComponentAdd, aItemList, sTableName=""):
|
||||
if sTableName.find(".") != -1:
|
||||
for i in range(len(aItemList)):
|
||||
for i in range(len(aItemList)):
|
||||
if aComponentAdd[i]==sTableName:
|
||||
sLVal=aItemList[i][1][aItemList[i][1].find(",'")+2:aItemList[i][1].find("')")]
|
||||
sLVal=aItemList[i][1][aItemList[i][1].find(",'")+2:aItemList[i][1].find("')")]
|
||||
for j in range(len(aObjectList)):
|
||||
if aObjectList[j][:aObjectList[j].find("(")] == sLVal:
|
||||
if aObjectList[j][:aObjectList[j].find("(")] == sLVal:
|
||||
insVariable.append(aObjectList[j])
|
||||
VariableScope(oTcur,insVariable,aObjectList,aComponentAdd,aItemList, sTableName[:sTableName.rfind(".")])
|
||||
VariableScope(oTcur,insVariable,aObjectList,aComponentAdd,aItemList, sTableName[:sTableName.rfind(".")])
|
||||
else:
|
||||
for i in range(len(aItemList)):
|
||||
for i in range(len(aItemList)):
|
||||
if aComponentAdd[i]==sTableName:
|
||||
sLVal=aItemList[i][1][aItemList[i][1].find(",'")+2:aItemList[i][1].find("')")]
|
||||
sLVal=aItemList[i][1][aItemList[i][1].find(",'")+2:aItemList[i][1].find("')")]
|
||||
for j in range(len(aObjectList)):
|
||||
if aObjectList[j][:aObjectList[j].find("(")] == sLVal and sLVal!="":
|
||||
if aObjectList[j][:aObjectList[j].find("(")] == sLVal and sLVal!="":
|
||||
insVariable.append(aObjectList[j])
|
||||
|
||||
def getList(aObjectList, host, count):
|
||||
|
@ -145,8 +145,8 @@ def getRelation(sRelName, sItem, sObjName, aObjectList, host):
|
|||
if k == sItem:
|
||||
aObjectList.append(sObjName + "(" + res[k]['relation'] + ")")
|
||||
return 0
|
||||
if k == sItem[:sItem.find(".")]:
|
||||
getRelation(res[k]['relation'], sItem[sItem.find(".")+1:], sObjName,aObjectList,host)
|
||||
if k == sItem[:sItem.find(".")]:
|
||||
getRelation(res[k]['relation'], sItem[sItem.find(".")+1:], sObjName,aObjectList,host)
|
||||
|
||||
|
||||
def getPath(sPath, sMain):
|
||||
|
@ -157,13 +157,13 @@ def getPath(sPath, sMain):
|
|||
oPar = oParEnum.nextElement()
|
||||
if oPar.supportsService("com.sun.star.text.TextField.DropDown"):
|
||||
sItem=oPar.Items[1]
|
||||
if sPath[:sPath.find(".")] == sMain:
|
||||
if sPath[:sPath.find(".")] == sMain:
|
||||
break;
|
||||
else:
|
||||
res = re.findall('\\[\\[ *([a-zA-Z0-9_\.]+) *\\]\\]',sPath)
|
||||
if len(res) <> 0:
|
||||
if sItem[sItem.find(",'")+2:sItem.find("')")] == sPath[:sPath.find(".")]:
|
||||
sPath = sItem[sItem.find("(")+1:sItem.find(",")] + sPath[sPath.find("."):]
|
||||
if sItem[sItem.find(",'")+2:sItem.find("')")] == sPath[:sPath.find(".")]:
|
||||
sPath = sItem[sItem.find("(")+1:sItem.find(",")] + sPath[sPath.find("."):]
|
||||
getPath(sPath, sMain)
|
||||
return sPath
|
||||
|
||||
|
|
|
@ -22,21 +22,21 @@
|
|||
import urllib
|
||||
|
||||
def get_absolute_file_path(url):
|
||||
url_unquoted = urllib.unquote(url)
|
||||
return os.name == 'nt' and url_unquoted[1:] or url_unquoted
|
||||
url_unquoted = urllib.unquote(url)
|
||||
return os.name == 'nt' and url_unquoted[1:] or url_unquoted
|
||||
|
||||
# This function reads the content of a file and return it to the caller
|
||||
def read_data_from_file(filename):
|
||||
fp = file( filename, "rb" )
|
||||
data = fp.read()
|
||||
fp.close()
|
||||
return data
|
||||
fp = file( filename, "rb" )
|
||||
data = fp.read()
|
||||
fp.close()
|
||||
return data
|
||||
|
||||
# This function writes the content to a file
|
||||
def write_data_to_file(filename, data):
|
||||
fp = file( filename, 'wb' )
|
||||
fp.write( data )
|
||||
fp.close()
|
||||
fp = file( filename, 'wb' )
|
||||
fp.write( data )
|
||||
fp.close()
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -75,42 +75,42 @@ class modify(unohelper.Base, XJobExecutor ):
|
|||
self.sMyHost= docinfo.getUserFieldValue(0)
|
||||
else:
|
||||
ErrorDialog(
|
||||
"Please insert user define field Field-1",
|
||||
"Just go to File->Properties->User Define \n"
|
||||
"Field-1 E.g. http://localhost:8069"
|
||||
)
|
||||
"Please insert user define field Field-1",
|
||||
"Just go to File->Properties->User Define \n"
|
||||
"Field-1 E.g. http://localhost:8069"
|
||||
)
|
||||
exit(1)
|
||||
|
||||
# Check weather Field-4 is available or not otherwise exit from application
|
||||
if not docinfo.getUserFieldValue(3) == "" and not docinfo.getUserFieldValue(0)=="":
|
||||
if self.oVC.TextField:
|
||||
self.oCurObj=self.oVC.TextField
|
||||
item = self.oCurObj.Items[0]
|
||||
item = self.oCurObj.Items[0]
|
||||
|
||||
kind, group1, group2 = self.getOperation(self.oCurObj.Items[1] )
|
||||
kind, group1, group2 = self.getOperation(self.oCurObj.Items[1] )
|
||||
|
||||
start_group1 = group1[:group1.find(".")]
|
||||
stop_group1 = group1[group1.find("."):].replace(".", "/")
|
||||
start_group1 = group1[:group1.find(".")]
|
||||
stop_group1 = group1[group1.find("."):].replace(".", "/")
|
||||
|
||||
if kind == "field":
|
||||
Fields( start_group1, stop_group1, item, True )
|
||||
Fields( start_group1, stop_group1, item, True )
|
||||
elif kind == "expression":
|
||||
Expression( group1, item, True )
|
||||
elif kind == "repeatIn":
|
||||
RepeatIn( start_group1, group2, stop_group1, item, True )
|
||||
RepeatIn( start_group1, group2, stop_group1, item, True )
|
||||
else:
|
||||
ErrorDialog(
|
||||
"Please place your cursor at beginning of field that you want to modify.",""
|
||||
)
|
||||
)
|
||||
|
||||
else:
|
||||
ErrorDialog(
|
||||
"Please insert user define field Field-1 or Field-4",
|
||||
"Just go to File->Properties->User Define \n"
|
||||
"Field-1 E.g. http://localhost:8069 \n"
|
||||
"OR \n"
|
||||
"Field-4 E.g. account.invoice"
|
||||
)
|
||||
"Please insert user define field Field-1 or Field-4",
|
||||
"Just go to File->Properties->User Define \n"
|
||||
"Field-1 E.g. http://localhost:8069 \n"
|
||||
"OR \n"
|
||||
"Field-4 E.g. account.invoice"
|
||||
)
|
||||
exit(1)
|
||||
|
||||
def getOperation(self, str):
|
||||
|
@ -121,14 +121,14 @@ class modify(unohelper.Base, XJobExecutor ):
|
|||
method2 = lambda x: (u'field', x.group(1), None)
|
||||
method3 = lambda x: (u'expression', x.group(1), None)
|
||||
regexes = [
|
||||
('\\[\\[ *repeatIn\\( *(.+)*, *\'([a-zA-Z0-9_]+)\' *\\) *\\]\\]', method1),
|
||||
('\\[\\[ *([a-zA-Z0-9_\.]+) *\\]\\]', method2),
|
||||
('\\[\\[ *(.+) *\\]\\]', method3)
|
||||
('\\[\\[ *repeatIn\\( *(.+)*, *\'([a-zA-Z0-9_]+)\' *\\) *\\]\\]', method1),
|
||||
('\\[\\[ *([a-zA-Z0-9_\.]+) *\\]\\]', method2),
|
||||
('\\[\\[ *(.+) *\\]\\]', method3)
|
||||
]
|
||||
for (rule,method) in regexes:
|
||||
res = re.match(rule, str)
|
||||
if res:
|
||||
return method(res)
|
||||
res = re.match(rule, str)
|
||||
if res:
|
||||
return method(res)
|
||||
|
||||
if __name__<>"package":
|
||||
modify(None)
|
||||
|
|
|
@ -11,23 +11,23 @@ import time
|
|||
sock = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/object')
|
||||
|
||||
def get(object, level=3, ending=None, ending_excl=None, recur=None, root=''):
|
||||
if ending is None:
|
||||
ending = []
|
||||
if ending_excl is None:
|
||||
ending_excl = []
|
||||
if recur is None:
|
||||
recur = []
|
||||
res = sock.execute('terp', 3, 'admin', 'account.invoice', 'fields_get')
|
||||
key = res.keys()
|
||||
key.sort()
|
||||
for k in key:
|
||||
if (not ending or res[k]['type'] in ending) and ((not ending_excl) or not (res[k]['type'] in ending_excl)):
|
||||
print root+'/'+k
|
||||
if ending is None:
|
||||
ending = []
|
||||
if ending_excl is None:
|
||||
ending_excl = []
|
||||
if recur is None:
|
||||
recur = []
|
||||
res = sock.execute('terp', 3, 'admin', 'account.invoice', 'fields_get')
|
||||
key = res.keys()
|
||||
key.sort()
|
||||
for k in key:
|
||||
if (not ending or res[k]['type'] in ending) and ((not ending_excl) or not (res[k]['type'] in ending_excl)):
|
||||
print root+'/'+k
|
||||
|
||||
if res[k]['type'] in recur:
|
||||
print root+'/'+k
|
||||
if (res[k]['type'] in recur) and (level>0):
|
||||
get(res[k]['relation'], level-1, ending, ending_excl, recur, root+'/'+k)
|
||||
if res[k]['type'] in recur:
|
||||
print root+'/'+k
|
||||
if (res[k]['type'] in recur) and (level>0):
|
||||
get(res[k]['relation'], level-1, ending, ending_excl, recur, root+'/'+k)
|
||||
|
||||
print 'Field selection for a rields', '='*40
|
||||
get('account.invoice', level=0, ending_excl=['one2many','many2one','many2many','reference'], recur=['many2one'])
|
||||
|
|
Loading…
Reference in New Issue