# HG changeset patch # User Rémi Cardona # Date 1444322296 -7200 # Node ID 17bdc485c5b2885ebc89779db27e12fa4831414b # Parent 1ed205146ee27ab032254929dce87a56140b2aeb# Parent d82b531fecd95dc755646d0fee67b9c86fe5ab33 merge with 3.19.13 diff -r 1ed205146ee2 -r 17bdc485c5b2 .hgtags --- a/.hgtags Thu Oct 08 18:24:09 2015 +0200 +++ b/.hgtags Thu Oct 08 18:38:16 2015 +0200 @@ -469,6 +469,9 @@ 5932de3d50bf023544c8f54b47898e4db35eac7c 3.19.12 5932de3d50bf023544c8f54b47898e4db35eac7c debian/3.19.12-1 5932de3d50bf023544c8f54b47898e4db35eac7c centos/3.19.12-1 +f933a38d7ab5fc6f2ad593fe1cf9985ce9d7e873 3.19.13 +f933a38d7ab5fc6f2ad593fe1cf9985ce9d7e873 debian/3.19.13-1 +f933a38d7ab5fc6f2ad593fe1cf9985ce9d7e873 centos/3.19.13-1 7e6b7739afe6128589ad51b0318decb767cbae36 3.20.0 7e6b7739afe6128589ad51b0318decb767cbae36 debian/3.20.0-1 7e6b7739afe6128589ad51b0318decb767cbae36 centos/3.20.0-1 diff -r 1ed205146ee2 -r 17bdc485c5b2 __pkginfo__.py diff -r 1ed205146ee2 -r 17bdc485c5b2 cubicweb.spec diff -r 1ed205146ee2 -r 17bdc485c5b2 debian/changelog --- a/debian/changelog Thu Oct 08 18:24:09 2015 +0200 +++ b/debian/changelog Thu Oct 08 18:38:16 2015 +0200 @@ -64,6 +64,12 @@ -- Julien Cristau Tue, 06 Jan 2015 18:11:03 +0100 +cubicweb (3.19.13-1) unstable; urgency=medium + + * New upstream release. + + -- Rémi Cardona Tue, 06 Oct 2015 18:31:33 +0200 + cubicweb (3.19.12-1) unstable; urgency=low * New upstream release diff -r 1ed205146ee2 -r 17bdc485c5b2 hooks/syncschema.py --- a/hooks/syncschema.py Thu Oct 08 18:24:09 2015 +0200 +++ b/hooks/syncschema.py Thu Oct 08 18:38:16 2015 +0200 @@ -696,6 +696,16 @@ syssource = cnx.repo.system_source cstrtype = self.oldcstr.type() if cstrtype == 'SizeConstraint': + # if the size constraint is being replaced with a new max size, we'll + # call update_rdef_column in CWConstraintAddOp, skip it here + for cstr in cnx.transaction_data.get('newsizecstr', ()): + rdefentity = cstr.reverse_constrained_by[0] + cstrrdef = cnx.vreg.schema.schema_by_eid(rdefentity.eid) + if cstrrdef == rdef: + return + + # we found that the size constraint for this rdef is really gone, + # not just replaced by another syssource.update_rdef_column(cnx, rdef) self.size_cstr_changed = True elif cstrtype == 'UniqueConstraint': @@ -775,6 +785,13 @@ entity = cstrname = None # for pylint cols = () # for pylint + def insert_index(self): + # We need to run before CWConstraintDelOp: if a size constraint is + # removed and the column is part of a unique_together constraint, we + # remove the unique_together index before changing the column's type. + # SQL Server does not support unique indices on unlimited text columns. + return 0 + def precommit_event(self): cnx = self.cnx prefix = SQL_PREFIX @@ -1205,6 +1222,11 @@ events = ('after_add_entity', 'after_update_entity') def __call__(self): + if self.entity.cstrtype[0].name == 'SizeConstraint': + txdata = self._cw.transaction_data + if 'newsizecstr' not in txdata: + txdata['newsizecstr'] = set() + txdata['newsizecstr'].add(self.entity) CWConstraintAddOp(self._cw, entity=self.entity) diff -r 1ed205146ee2 -r 17bdc485c5b2 server/migractions.py --- a/server/migractions.py Thu Oct 08 18:24:09 2015 +0200 +++ b/server/migractions.py Thu Oct 08 18:38:16 2015 +0200 @@ -458,7 +458,8 @@ rtype = str(rtype) if rtype in self._synchronized: return - self._synchronized.add(rtype) + if syncrdefs and syncperms and syncprops: + self._synchronized.add(rtype) rschema = self.fs_schema.rschema(rtype) reporschema = self.repo.schema.rschema(rtype) if syncprops: @@ -489,7 +490,8 @@ etype = str(etype) if etype in self._synchronized: return - self._synchronized.add(etype) + if syncrdefs and syncperms and syncprops: + self._synchronized.add(etype) repoeschema = self.repo.schema.eschema(etype) try: eschema = self.fs_schema.eschema(etype) @@ -587,9 +589,10 @@ reporschema = self.repo.schema.rschema(rschema) if (subjtype, rschema, objtype) in self._synchronized: return - self._synchronized.add((subjtype, rschema, objtype)) - if rschema.symmetric: - self._synchronized.add((objtype, rschema, subjtype)) + if syncperms and syncprops: + self._synchronized.add((subjtype, rschema, objtype)) + if rschema.symmetric: + self._synchronized.add((objtype, rschema, subjtype)) rdef = rschema.rdef(subjtype, objtype) if rdef.infered: return # don't try to synchronize infered relation defs diff -r 1ed205146ee2 -r 17bdc485c5b2 server/sources/native.py --- a/server/sources/native.py Thu Oct 08 18:24:09 2015 +0200 +++ b/server/sources/native.py Thu Oct 08 18:38:16 2015 +0200 @@ -1703,7 +1703,7 @@ self.logger.info('restoring sequence %s', seq) self.read_sequence(archive, seq) for numrange in numranges: - self.logger.info('restoring numrange %s', seq) + self.logger.info('restoring numrange %s', numrange) self.read_numrange(archive, numrange) for table in tables: self.logger.info('restoring table %s', table) diff -r 1ed205146ee2 -r 17bdc485c5b2 server/test/data/migratedapp/schema.py --- a/server/test/data/migratedapp/schema.py Thu Oct 08 18:24:09 2015 +0200 +++ b/server/test/data/migratedapp/schema.py Thu Oct 08 18:38:16 2015 +0200 @@ -108,6 +108,12 @@ class Personne(EntityType): + __permissions__ = { + 'read': ('managers', 'users'), # 'guests' was removed + 'add': ('managers', 'users'), + 'update': ('managers', 'owners'), + 'delete': ('managers', 'owners') + } __unique_together__ = [('nom', 'prenom', 'datenaiss')] nom = String(fulltextindexed=True, required=True, maxsize=64) prenom = String(fulltextindexed=True, maxsize=64) diff -r 1ed205146ee2 -r 17bdc485c5b2 server/test/data/schema.py --- a/server/test/data/schema.py Thu Oct 08 18:24:09 2015 +0200 +++ b/server/test/data/schema.py Thu Oct 08 18:38:16 2015 +0200 @@ -128,6 +128,12 @@ class Personne(EntityType): + __permissions__ = { + 'read': ('managers', 'users', 'guests'), # 'guests' will be removed + 'add': ('managers', 'users'), + 'update': ('managers', 'owners'), + 'delete': ('managers', 'owners') + } __unique_together__ = [('nom', 'prenom', 'inline2')] nom = String(fulltextindexed=True, required=True, maxsize=64) prenom = String(fulltextindexed=True, maxsize=64) diff -r 1ed205146ee2 -r 17bdc485c5b2 server/test/unittest_migractions.py --- a/server/test/unittest_migractions.py Thu Oct 08 18:24:09 2015 +0200 +++ b/server/test/unittest_migractions.py Thu Oct 08 18:38:16 2015 +0200 @@ -435,6 +435,9 @@ delete_concerne_rqlexpr = self._rrqlexpr_rset(cnx, 'delete', 'concerne') add_concerne_rqlexpr = self._rrqlexpr_rset(cnx, 'add', 'concerne') + # make sure properties (e.g. etype descriptions) are synced by the + # second call to sync_schema + mh.cmd_sync_schema_props_perms(syncprops=False, commit=False) mh.cmd_sync_schema_props_perms(commit=False) self.assertEqual(cnx.execute('Any D WHERE X name "Personne", X description D')[0][0],