server/schemaserial.py
branchstable
changeset 3689 deb13e88e037
parent 2955 6bb5025c9fc7
child 3723 a961c7cb2644
child 3854 8633cd05b6b5
equal deleted inserted replaced
3688:421fb447ecb2 3689:deb13e88e037
    62 def _update_database(schema, sqlcu):
    62 def _update_database(schema, sqlcu):
    63     """3.2.0 migration function: update database schema by adding SQL_PREFIX to
    63     """3.2.0 migration function: update database schema by adding SQL_PREFIX to
    64     entity type tables and columns
    64     entity type tables and columns
    65     """
    65     """
    66     for etype in schema.entities():
    66     for etype in schema.entities():
    67         if etype.is_final():
    67         if etype.final:
    68             continue
    68             continue
    69         try:
    69         try:
    70             sql = 'ALTER TABLE %s RENAME TO cw_%s' % (
    70             sql = 'ALTER TABLE %s RENAME TO cw_%s' % (
    71                 etype, ETYPE_NAME_MAP.get(etype, etype))
    71                 etype, ETYPE_NAME_MAP.get(etype, etype))
    72             print sql
    72             print sql
    74         except:
    74         except:
    75             pass
    75             pass
    76         for rschema in etype.subject_relations():
    76         for rschema in etype.subject_relations():
    77             if rschema == 'has_text':
    77             if rschema == 'has_text':
    78                 continue
    78                 continue
    79             if rschema.is_final() or rschema.inlined:
    79             if rschema.final or rschema.inlined:
    80                 sql = 'ALTER TABLE cw_%s RENAME %s TO cw_%s' % (
    80                 sql = 'ALTER TABLE cw_%s RENAME %s TO cw_%s' % (
    81                     etype, rschema, rschema)
    81                     etype, rschema, rschema)
    82                 print sql
    82                 print sql
    83                 sqlcu.execute(sql)
    83                 sqlcu.execute(sql)
    84 
    84 
   324         desc = unicode(erschema.description) or u''
   324         desc = unicode(erschema.description) or u''
   325     except UnicodeDecodeError, e:
   325     except UnicodeDecodeError, e:
   326         raise Exception("can't decode %s [was %s]" % (erschema.description, e))
   326         raise Exception("can't decode %s [was %s]" % (erschema.description, e))
   327     return {
   327     return {
   328         'name': type_,
   328         'name': type_,
   329         'final': erschema.is_final(),
   329         'final': erschema.final,
   330         'description': desc,
   330         'description': desc,
   331         }
   331         }
   332 
   332 
   333 def eschema_relations_values(eschema):
   333 def eschema_relations_values(eschema):
   334     values = _ervalues(eschema)
   334     values = _ervalues(eschema)
   338 # XXX 2.47 migration
   338 # XXX 2.47 migration
   339 HAS_FULLTEXT_CONTAINER = True
   339 HAS_FULLTEXT_CONTAINER = True
   340 
   340 
   341 def rschema_relations_values(rschema):
   341 def rschema_relations_values(rschema):
   342     values = _ervalues(rschema)
   342     values = _ervalues(rschema)
   343     values['final'] = rschema.is_final()
   343     values['final'] = rschema.final
   344     values['symetric'] = rschema.symetric
   344     values['symetric'] = rschema.symetric
   345     values['inlined'] = rschema.inlined
   345     values['inlined'] = rschema.inlined
   346     if HAS_FULLTEXT_CONTAINER:
   346     if HAS_FULLTEXT_CONTAINER:
   347         if isinstance(rschema.fulltext_container, str):
   347         if isinstance(rschema.fulltext_container, str):
   348             values['fulltext_container'] = unicode(rschema.fulltext_container)
   348             values['fulltext_container'] = unicode(rschema.fulltext_container)
   400         else:
   400         else:
   401             _props = props
   401             _props = props
   402         # don't serialize infered relations
   402         # don't serialize infered relations
   403         if _props.get('infered'):
   403         if _props.get('infered'):
   404             continue
   404             continue
   405         gen = genmap[rschema.is_final()]
   405         gen = genmap[rschema.final]
   406         for rql, values in gen(rschema, subjtype, objtype, _props):
   406         for rql, values in gen(rschema, subjtype, objtype, _props):
   407             yield rql, values
   407             yield rql, values
   408 
   408 
   409 
   409 
   410 def schema2rql(schema, skip=None, allow=None):
   410 def schema2rql(schema, skip=None, allow=None):