try: for a in model_lists: logger.debug('id: %d' % a['id']) if a[opts.field]: assert a['parent_left'] > models[a[ opts.field][0]]['parent_left'], '%s > %s' % ( a['parent_left'], models[a[opts.field][0]]['parent_left']) assert a['parent_right'] < models[a[ opts.field][0]]['parent_right'], '%s > %s' % ( a['parent_right'], models[a[opts.field][0]]['parent_right']) assert a['parent_left'] < a['parent_right'] for a2 in model_lists: assert not ((a2['parent_right'] > a['parent_left']) and (a2['parent_left'] < a['parent_left']) and (a2['parent_right'] < a['parent_right'])) if a2[opts.field] == a['id']: assert (a2['parent_left'] > a['parent_left']) and ( a2['parent_right'] < a['parent_right']) logger.info('No problem found') except AssertionError, e: logger.error('Fail: %s' % str(e)) if opts.fix: logger.info('Begin to fix the problem') model._parent_store_compute() logger.info('End fix') logger.info('Check End and complete') # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
sys.exit(1) model = Object(cnx, opts.model) model_ids = model.search([]) model_lists = model.read(model_ids, [opts.field,'parent_left','parent_right']) models = dict(map(lambda x: (x['id'],x), model_lists)) try: for a in model_lists: logger.debug('id: %d' % a['id']) if a[opts.field]: assert a['parent_left'] > models[a[opts.field][0]]['parent_left'], '%s > %s' % (a['parent_left'], models[a[opts.field][0]]['parent_left']) assert a['parent_right'] < models[a[opts.field][0]]['parent_right'], '%s > %s' % (a['parent_right'], models[a[opts.field][0]]['parent_right']) assert a['parent_left'] < a['parent_right'] for a2 in model_lists: assert not ((a2['parent_right']>a['parent_left']) and (a2['parent_left']<a['parent_left']) and (a2['parent_right']<a['parent_right'])) if a2[opts.field]==a['id']: assert (a2['parent_left']>a['parent_left']) and (a2['parent_right']<a['parent_right']) logger.info('No problem found') except AssertionError, e: logger.error('Fail: %s' % str(e)) if opts.fix: logger.info('Begin to fix the problem') model._parent_store_compute() logger.info('End fix') logger.info('Check End and complete') # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: