server/repository.py
changeset 10446 1e6655cff5ab
parent 10368 1691be295517
child 10488 83b87bdefd0e
equal deleted inserted replaced
10445:f1773842077d 10446:1e6655cff5ab
    41 from rql.utils import rqlvar_maker
    41 from rql.utils import rqlvar_maker
    42 
    42 
    43 from cubicweb import (CW_MIGRATION_MAP, QueryError,
    43 from cubicweb import (CW_MIGRATION_MAP, QueryError,
    44                       UnknownEid, AuthenticationError, ExecutionError,
    44                       UnknownEid, AuthenticationError, ExecutionError,
    45                       BadConnectionId, ValidationError,
    45                       BadConnectionId, ValidationError,
    46                       UniqueTogetherError, onevent)
    46                       UniqueTogetherError, onevent, ViolatedConstraint)
    47 from cubicweb import cwvreg, schema, server
    47 from cubicweb import cwvreg, schema, server
    48 from cubicweb.server import ShuttingDown, utils, hook, querier, sources
    48 from cubicweb.server import ShuttingDown, utils, hook, querier, sources
    49 from cubicweb.server.session import Session, InternalManager
    49 from cubicweb.server.session import Session, InternalManager
    50 
    50 
    51 NO_CACHE_RELATIONS = set( [('owned_by', 'object'),
    51 NO_CACHE_RELATIONS = set( [('owned_by', 'object'),
   925         if cnx.is_hook_category_activated('integrity'):
   925         if cnx.is_hook_category_activated('integrity'):
   926             edited.check(creation=True)
   926             edited.check(creation=True)
   927         self.add_info(cnx, entity, source, extid)
   927         self.add_info(cnx, entity, source, extid)
   928         try:
   928         try:
   929             source.add_entity(cnx, entity)
   929             source.add_entity(cnx, entity)
   930         except UniqueTogetherError as exc:
   930         except (UniqueTogetherError, ViolatedConstraint) as exc:
   931             userhdlr = cnx.vreg['adapters'].select(
   931             userhdlr = cnx.vreg['adapters'].select(
   932                 'IUserFriendlyError', cnx, entity=entity, exc=exc)
   932                 'IUserFriendlyError', cnx, entity=entity, exc=exc)
   933             userhdlr.raise_user_exception()
   933             userhdlr.raise_user_exception()
   934         edited.saved = entity._cw_is_saved = True
   934         edited.saved = entity._cw_is_saved = True
   935         # trigger after_add_entity after after_add_relation
   935         # trigger after_add_entity after after_add_relation
   988             if cnx.is_hook_category_activated('integrity'):
   988             if cnx.is_hook_category_activated('integrity'):
   989                 edited.check()
   989                 edited.check()
   990             try:
   990             try:
   991                 source.update_entity(cnx, entity)
   991                 source.update_entity(cnx, entity)
   992                 edited.saved = True
   992                 edited.saved = True
   993             except UniqueTogetherError as exc:
   993             except (UniqueTogetherError, ViolatedConstraint) as exc:
   994                 userhdlr = cnx.vreg['adapters'].select(
   994                 userhdlr = cnx.vreg['adapters'].select(
   995                     'IUserFriendlyError', cnx, entity=entity, exc=exc)
   995                     'IUserFriendlyError', cnx, entity=entity, exc=exc)
   996                 userhdlr.raise_user_exception()
   996                 userhdlr.raise_user_exception()
   997             self.system_source.update_info(cnx, entity, need_fti_update)
   997             self.system_source.update_info(cnx, entity, need_fti_update)
   998             if not only_inline_rels:
   998             if not only_inline_rels: