Example #1
0
def getTableObj(tree,root):
    table = Struct()
    table.xmltree = tree
    table.xmlroot = root
    table.name = table.xmlroot.xpath("name/text()")[0]
    table.fields = []
    table.pk = []
    table.fields_idx = {}
    for xmlfield in table.xmlroot.xpath("field"):
        field = Struct()
        field.name = xmlfield.xpath("name/text()")[0]
        build_field_type(field, xmlfield)
        field.pk = text2bool(one(xmlfield.xpath("pk/text()"),"false"))
        field.default = one(xmlfield.xpath("default/text()"),None)
        if field.pk: table.pk.append(field.name)
        if field.name in table.fields_idx: raise ValueError("La tabla %s tiene el campo %s repetido" % (table.name,field.name))
        field.number = len(table.fields)
        table.fields_idx[field.name] = field.number
        table.fields.append(field)
    return table