How can I apply data = noupdate in csv data files?
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
- CRM
- e-Commerce
- Akuntansi
- Inventaris
- PoS
- Project
- MRP
Pertanyaan ini telah diberikan tanda
Sadly no, you cannot add that property in csv file, similarly, you have to declare all your CSV files in data column of __manifest__(formerly __openerp__) file, which is equivalent to update_xml.
So you if really want csv not to be loaded everytime you upgrade the module, and if data is comparatively less, then define the same in .xml by specifying noupdate in the data tag.
Thanks deep for this info
hi,
csv to xml conversion code
import csv |
import glob |
|
NOUPDATE = 1 |
BOOLEAN = ('True', 'False') |
ERP_HEADER = """<?xml version="1.0"?> |
<odoo> |
<data noupdate="%s">""" |
|
ERP_FOOTER = """ |
</data> |
</odoo> |
""" |
|
FILES_WITH_UPDATE = ('product.product.csv') |
|
|
def convert_relationnal_field2xml(tag, value): |
mytag = tag |
for elm in ['/ids', '/id', ':id']: |
mytag = mytag.replace(elm, '') |
if tag[-6:] == 'ids/id': |
# many2many |
line = '%s" eval="[(6, 0, [%s])]"/>\n' % (mytag, value) |
else: |
# many2one |
line = '%s" ref="%s"/>\n' % (mytag, row[i]) |
return line |
|
|
for csv_file in glob.glob('*.csv'): |
no_update = NOUPDATE |
if csv_file in FILES_WITH_UPDATE: |
no_update = 0 |
xml_file = csv_file.replace('.', '_').replace('_csv', '_data.xml') |
csv_data = csv.reader(open(csv_file)) |
xml_data = open(xml_file, 'w') |
xml_data.write(ERP_HEADER % NOUPDATE + "\n\n\n") |
row_num = 0 |
print csv_file |
for row in csv_data: |
if row_num == 0: |
tags = row |
for i in range(len(tags)): |
tags[i] = tags[i].replace(' ', '_') |
else: |
for i in range(len(tags)): |
char = False |
# ambiguous column (char type but contains float string) |
# should be mark by suffix |char |
if tags[i][-5:] == '|char': |
char = True |
numeric = False |
begin = ' <field name="' |
try: |
float(row[i]) |
numeric = True |
except Exception: |
pass |
if tags[i] == 'id': |
# 'id' column is supposed to be the first left |
line = ('<record id="%s" model="%s">\n' |
% (row[i], csv_file[:-4])) |
elif '/' in tags[i] or ':' in tags[i]: |
# relationnal fields |
xml_suffix = convert_relationnal_field2xml(tags[i], row[i]) |
line = '%s%s' % (begin, xml_suffix) |
elif char: |
# numeric ghar field |
line = '%s%s">%s</field>\n' % (begin, tags[i][:-5], row[i]) |
elif numeric or row[i] in BOOLEAN: |
line = '%s%s" eval="%s"/>\n' % (begin, tags[i], row[i]) |
else: |
# basic fields |
line = '%s%s">%s</field>\n' % (begin, tags[i], row[i]) |
if row[i] or tags[i] == 'id': |
xml_data.write(line) |
xml_data.write('</record>' + "\n\n") |
row_num += 1 |
xml_data.write(ERP_FOOTER) |
xml_data.close()
Menikmati diskusi? Jangan hanya membaca, ikuti!
Buat akun sekarang untuk menikmati fitur eksklufi dan agar terlibat dengan komunitas kami!
DaftarPost Terkait | Replies | Tampilan | Aktivitas | |
---|---|---|---|---|
|
0
Des 20
|
3230 | ||
|
0
Mei 19
|
2522 | ||
Company Name Change (company acquisition)
Diselesaikan
|
|
1
Sep 21
|
4737 | |
Lot Number assignment
Diselesaikan
|
|
3
Jun 21
|
6218 | |
|
6
Feb 24
|
23072 |