server/hooks.py
branchstable
changeset 3689 deb13e88e037
parent 3685 6f807804f1d0
child 3693 92581287726f
equal deleted inserted replaced
3688:421fb447ecb2 3689:deb13e88e037
   242         return
   242         return
   243     eschema = entity.e_schema
   243     eschema = entity.e_schema
   244     for attr, val in entity.items():
   244     for attr, val in entity.items():
   245         if val is None:
   245         if val is None:
   246             continue
   246             continue
   247         if eschema.subject_relation(attr).is_final() and \
   247         if eschema.subjrels[attr].final and \
   248                eschema.has_unique_values(attr):
   248                eschema.has_unique_values(attr):
   249             rql = '%s X WHERE X %s %%(val)s' % (entity.e_schema, attr)
   249             rql = '%s X WHERE X %s %%(val)s' % (entity.e_schema, attr)
   250             rset = session.unsafe_execute(rql, {'val': val})
   250             rset = session.unsafe_execute(rql, {'val': val})
   251             if rset and rset[0][0] != entity.eid:
   251             if rset and rset[0][0] != entity.eid:
   252                 msg = session._('the value "%s" is already used, use another one')
   252                 msg = session._('the value "%s" is already used, use another one')
   255 def cstrcheck_after_update_attributes(session, entity):
   255 def cstrcheck_after_update_attributes(session, entity):
   256     if session.is_super_session:
   256     if session.is_super_session:
   257         return
   257         return
   258     schema = session.vreg.schema
   258     schema = session.vreg.schema
   259     for attr in entity.edited_attributes:
   259     for attr in entity.edited_attributes:
   260         if schema.rschema(attr).is_final():
   260         if schema.rschema(attr).final:
   261             constraints = [c for c in entity.e_schema.constraints(attr)
   261             constraints = [c for c in entity.e_schema.constraints(attr)
   262                            if isinstance(c, RQLVocabularyConstraint)]
   262                            if isinstance(c, RQLVocabularyConstraint)]
   263             if constraints:
   263             if constraints:
   264                 CheckConstraintsOperation(session, rdef=(entity.eid, attr, None),
   264                 CheckConstraintsOperation(session, rdef=(entity.eid, attr, None),
   265                                           constraints=constraints)
   265                                           constraints=constraints)