equal
deleted
inserted
replaced
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) |