4 |
try: |
try: |
5 |
import Xot |
import Xot |
6 |
except ImportError: |
except ImportError: |
7 |
print """ |
raise """ |
8 |
Tenés que editar ~/.pythonrc.py para que le agregue a sys.path el directorio |
Tenés que editar ~/.pythonrc.py para que le agregue a sys.path el directorio |
9 |
donde se encuentra Xot.py. Algo como lo siguiente: |
donde se encuentra Xot.py. Algo como lo siguiente: |
10 |
|
|
13 |
del sys |
del sys |
14 |
del os |
del os |
15 |
""" |
""" |
|
sys.exit() |
|
16 |
|
|
17 |
parser = OptionParser(usage="Modo de uso: emf [options] <xot> <emf> ...") |
parser = OptionParser(usage="Modo de uso: emf [options] <xot> <emf> ...") |
18 |
parser.add_option('-b', '--backup', dest='backup', |
parser.add_option('-b', '--backup', dest='backup', |
74 |
doc = libxml2.parseFile(emf) |
doc = libxml2.parseFile(emf) |
75 |
datasources = {} |
datasources = {} |
76 |
for datasource in doc.xpathEval('//datasource'): |
for datasource in doc.xpathEval('//datasource'): |
77 |
name = datasource.prop('name') |
name = datasource.prop('name').lower() |
78 |
if datasources.has_key(name): |
if datasources.has_key(name): |
79 |
dbg("EE El datasource %s ha sido redefinido", name) |
dbg("EE El datasource %s ha sido redefinido", name) |
80 |
table = datasource.prop('table') |
table = datasource.prop('table') |
93 |
|
|
94 |
blocks={} |
blocks={} |
95 |
for block in doc.xpathEval('//block'): |
for block in doc.xpathEval('//block'): |
96 |
blocks[block.prop('name')] = block.prop('datasource') |
name = block.prop('name') |
97 |
|
if blocks.has_key(name): |
98 |
|
dbg("EE El bloque %s ha sido redefinido", name) |
99 |
|
blocks[name] = block.prop('datasource').lower() |
100 |
|
|
101 |
for i in datasources.keys(): |
for i in datasources.keys(): |
102 |
if i not in blocks.values(): |
if i not in blocks.values(): |
130 |
elif len(table) == 1: |
elif len(table) == 1: |
131 |
field = table[0] |
field = table[0] |
132 |
table = None |
table = None |
133 |
for d in datasources[blocks[block]].values(): |
for a, d in datasources[blocks[block]].items(): |
134 |
if xot.tables[d].fields.has_key(field): |
if xot.tables[d].fields.has_key(field): |
135 |
table = d |
table = a |
136 |
dbg("DD Usando tabla %s para entry %s en bloque %s", |
dbg("DD Usando tabla %s (%s) para entry %s en bloque %s", |
137 |
d, name, block) |
a, d, name, block) |
138 |
if table is None: |
if table is None: |
139 |
dbg("WW no pude determinar la tabla para el entry %s en el bloque %s", |
dbg("WW no pude determinar la tabla para el entry %s en el bloque %s", |
140 |
name, block) |
name, block) |
141 |
else: |
else: |
142 |
(table, field) = table |
(table, field) = table |
143 |
|
if not datasources[blocks[block]].has_key(table): |
144 |
|
dbg("EE tabla %s referenciada en %s no es parte de %s", |
145 |
|
block, table, blocks[block]) |
146 |
|
else: |
147 |
|
table = datasources[blocks[block]][table] |
148 |
if table and field: |
if table and field: |
149 |
if not xot.tables.has_key(table): |
if not xot.tables.has_key(table): |
150 |
dbg("EE La tabla %s referida en el en entry %s del bloque %s no existe!", |
dbg("EE La tabla %s referida en el en entry %s del bloque %s no existe!", |