# HG changeset patch # User Sylvain Thénault # Date 1260286903 -3600 # Node ID f85a4c846aad7a12e5a19644c902a265439fc3d0 # Parent be6e473e6b43aefd920b79e274dda949c796d8b5 3.6 api update diff -r be6e473e6b43 -r f85a4c846aad hooks/syncschema.py --- a/hooks/syncschema.py Tue Dec 08 16:40:00 2009 +0100 +++ b/hooks/syncschema.py Tue Dec 08 16:41:43 2009 +0100 @@ -12,7 +12,7 @@ """ __docformat__ = "restructuredtext en" -from yams.schema import BASE_TYPES, RelationSchema +from yams.schema import BASE_TYPES, RelationSchema, RelationDefinitionSchema from yams.buildobjs import EntityType, RelationType, RelationDefinition from yams.schema2sql import eschema2sql, rschema2sql, type_from_constraints @@ -147,16 +147,17 @@ hook.SingleLastOperation.__init__(self, session) def precommit_event(self): - for eschema in self.repo.schema.entities(): + for eschema in self.session.repo.schema.entities(): if not eschema.final: clear_cache(eschema, 'ordered_relations') def commit_event(self): rebuildinfered = self.session.data.get('rebuild-infered', True) - self.repo.set_schema(self.repo.schema, rebuildinfered=rebuildinfered) + repo = self.session.repo + repo.set_schema(repo.schema, rebuildinfered=rebuildinfered) # CWUser class might have changed, update current session users cwuser_cls = self.session.vreg['etypes'].etype_class('CWUser') - for session in self.repo._sessions.values(): + for session in repo._sessions.values(): session.user.__class__ = cwuser_cls def rollback_event(self): @@ -174,9 +175,10 @@ MemSchemaNotifyChanges(session) def prepare_constraints(self, subjtype, rtype, objtype): - constraints = rtype.rproperty(subjtype, objtype, 'constraints') + rdef = rtype.rdef(subjtype, objtype) + constraints = rdef.constraints self.constraints = list(constraints) - rtype.set_rproperty(subjtype, objtype, 'constraints', self.constraints) + rdef.constraints = self.constraints class MemSchemaEarlyOperation(MemSchemaOperation): @@ -356,11 +358,11 @@ table, column, ex) # final relations are not infered, propagate try: - eschema = self._cw.vreg.schema.eschema(rdef.subject) + eschema = session.vreg.schema.eschema(rdef.subject) except KeyError: return # entity type currently being added # propagate attribute to children classes - rschema = self._cw.vreg.schema.rschema(rdef.name) + rschema = session.vreg.schema.rschema(rdef.name) # if relation type has been inserted in the same transaction, its final # attribute is still set to False, so we've to ensure it's False rschema.final = True @@ -461,7 +463,7 @@ # no worry) return atype = self.rschema.objects(etype)[0] - constraints = self.rschema.rproperty(etype, atype, 'constraints') + constraints = self.rschema.rdef(etype, atype).constraints coltype = type_from_constraints(adbh, atype, constraints, creating=False) # XXX check self.values['cardinality'][0] actually changed? @@ -494,7 +496,7 @@ if newcstr.type() == 'SizeConstraint' and ( oldcstr is None or oldcstr.max != newcstr.max): adbh = self.session.pool.source('system').dbhelper - card = rtype.rproperty(subjtype, objtype, 'cardinality') + card = rtype.rdef(subjtype, objtype).cardinality coltype = type_from_constraints(adbh, objtype, [newcstr], creating=False) sql = adbh.sql_change_col_type(table, column, coltype, card != '1') @@ -800,7 +802,6 @@ # but remove it before doing anything more dangerous... schema = self._cw.vreg.schema eschema = schema.add_entity_type(etype) - eschema.set_default_groups() # generate table sql and rql to add metadata tablesql = eschema2sql(self._cw.pool.source('system').dbhelper, eschema, prefix=SQL_PREFIX) @@ -978,7 +979,7 @@ elif lastrel: DropRelationTable(session, rschema.type) # if this is the last instance, drop associated relation type - if lastrel and not rteid in pendings: + if lastrel and not self.eidto in pendings: execute('DELETE CWRType X WHERE X eid %(x)s', {'x': self.eidto}, 'x') MemSchemaRDefDel(session, (subjschema, rschema, objschema)) @@ -1015,7 +1016,7 @@ desttype = entity.otype.name rschema = self._cw.vreg.schema[entity.rtype.name] newvalues = {} - for prop in rschema.rproperty_defs(desttype): + for prop in RelationDefinitionSchema.rproperty_defs(desttype): if prop == 'constraints': continue if prop == 'order': diff -r be6e473e6b43 -r f85a4c846aad misc/migration/3.5.0_Any.py --- a/misc/migration/3.5.0_Any.py Tue Dec 08 16:40:00 2009 +0100 +++ b/misc/migration/3.5.0_Any.py Tue Dec 08 16:41:43 2009 +0100 @@ -1,7 +1,7 @@ add_relation_type('prefered_form') rql('SET X prefered_form Y WHERE Y canonical TRUE, X identical_to Y') -checkpoint() +commit() drop_attribute('EmailAddress', 'canonical') drop_relation_definition('EmailAddress', 'identical_to', 'EmailAddress') diff -r be6e473e6b43 -r f85a4c846aad misc/migration/bootstrapmigration_repository.py --- a/misc/migration/bootstrapmigration_repository.py Tue Dec 08 16:40:00 2009 +0100 +++ b/misc/migration/bootstrapmigration_repository.py Tue Dec 08 16:41:43 2009 +0100 @@ -118,7 +118,7 @@ rql('DELETE TrInfo TI WHERE NOT TI from_state S') rql('SET TI by_transition T WHERE TI from_state FS, TI to_state TS, ' 'FS allowed_transition T, T destination_state TS') - checkpoint() + commit() drop_relation_definition('State', 'state_of', 'CWEType') drop_relation_definition('Transition', 'transition_of', 'CWEType') @@ -133,7 +133,7 @@ % table, ask_confirm=False): sql('UPDATE %s SET extid=%%(extid)s WHERE eid=%%(eid)s' % table, {'extid': b64encode(extid), 'eid': eid}, ask_confirm=False) - checkpoint() + commit() if applcubicwebversion < (3, 2, 0) and cubicwebversion >= (3, 2, 0): add_cube('card', update_database=False) diff -r be6e473e6b43 -r f85a4c846aad server/migractions.py --- a/server/migractions.py Tue Dec 08 16:40:00 2009 +0100 +++ b/server/migractions.py Tue Dec 08 16:41:43 2009 +0100 @@ -464,7 +464,7 @@ reporschema = self.repo.schema.rschema(rschema) for subj in subjtypes: for obj in objtypes: - if not reporschema.has_rdef(subj, obj): + if (subj, obj) not in reporschema.rdefs: continue self._synchronize_rdef_schema(subj, rschema, obj) if syncperms: