[merge] incorporate cw 3.17.10 fixes
authorAurelien Campeas <aurelien.campeas@logilab.fr>
Thu, 24 Oct 2013 12:36:12 +0200
changeset 9309 cd45a1cc9b38
parent 9304 ff61b10e7415 (current diff)
parent 9308 a898c34200ad (diff)
child 9320 15bd24f9b9e0
[merge] incorporate cw 3.17.10 fixes
__pkginfo__.py
cubicweb.spec
dbapi.py
--- a/.hgtags	Tue Oct 22 11:59:39 2013 +0200
+++ b/.hgtags	Thu Oct 24 12:36:12 2013 +0200
@@ -313,3 +313,6 @@
 909eb8b584c437b3d2580beff1325c3d5b5dcfb5 cubicweb-debian-version-3.17.8-1
 5668d210e49c910180ff27712b6ae9ce8286e06c cubicweb-version-3.17.9
 5668d210e49c910180ff27712b6ae9ce8286e06c cubicweb-debian-version-3.17.9-1
+fe0e1863a13772836f40f743cc6fe4865f288ed3 cubicweb-centos-version-3.17.10-1
+fe0e1863a13772836f40f743cc6fe4865f288ed3 cubicweb-version-3.17.10
+fe0e1863a13772836f40f743cc6fe4865f288ed3 cubicweb-debian-version-3.17.10-1
--- a/__pkginfo__.py	Tue Oct 22 11:59:39 2013 +0200
+++ b/__pkginfo__.py	Thu Oct 24 12:36:12 2013 +0200
@@ -22,7 +22,7 @@
 
 modname = distname = "cubicweb"
 
-numversion = (3, 17, 9)
+numversion = (3, 17, 10)
 version = '.'.join(str(num) for num in numversion)
 
 description = "a repository of entities / relations for knowledge management"
--- a/cubicweb.spec	Tue Oct 22 11:59:39 2013 +0200
+++ b/cubicweb.spec	Thu Oct 24 12:36:12 2013 +0200
@@ -7,7 +7,7 @@
 %endif
 
 Name:           cubicweb
-Version:        3.17.8
+Version:        3.17.10
 Release:        logilab.1%{?dist}
 Summary:        CubicWeb is a semantic web application framework
 Source0:        http://download.logilab.org/pub/cubicweb/cubicweb-%{version}.tar.gz
--- a/dbapi.py	Tue Oct 22 11:59:39 2013 +0200
+++ b/dbapi.py	Thu Oct 24 12:36:12 2013 +0200
@@ -223,7 +223,7 @@
     puri = urlparse(database)
     method = puri.scheme.lower()
     if method == 'inmemory':
-        config = cwconfig.instance_configuration(puri.path)
+        config = cwconfig.instance_configuration(puri.netloc)
     else:
         config = cwconfig.CubicWebNoAppConfiguration()
     repo = get_repository(database, config=config)
--- a/debian/changelog	Tue Oct 22 11:59:39 2013 +0200
+++ b/debian/changelog	Thu Oct 24 12:36:12 2013 +0200
@@ -1,3 +1,9 @@
+cubicweb (3.17.10-1) unstable; urgency=low
+
+  * new upstream release
+
+ -- Julien Cristau <julien.cristau@logilab.fr>  Wed, 23 Oct 2013 17:23:45 +0200
+
 cubicweb (3.17.9-1) unstable; urgency=low
 
   * new upstream release
--- a/server/sources/native.py	Tue Oct 22 11:59:39 2013 +0200
+++ b/server/sources/native.py	Thu Oct 24 12:36:12 2013 +0200
@@ -757,8 +757,10 @@
             if ex.__class__.__name__ == 'IntegrityError':
                 # need string comparison because of various backends
                 for arg in ex.args:
-                    # postgres and sqlserver
-                    mo = re.search('"unique_cw_[^ ]+"', arg)
+                    if 'SQL Server' in arg:
+                        mo = re.search("'unique_cw_[^ ]+'", arg)
+                    else: # postgres
+                        mo = re.search('"unique_cw_[^ ]+"', arg)
                     if mo is not None:
                         index_name = mo.group(0)[1:-1] # eat the surrounding " pair
                         elements = index_name.split('_cw_')[1:]
--- a/sobjects/notification.py	Tue Oct 22 11:59:39 2013 +0200
+++ b/sobjects/notification.py	Thu Oct 24 12:36:12 2013 +0200
@@ -128,26 +128,34 @@
             # since the same view (eg self) may be called multiple time and we
             # need a fresh stream at each iteration, reset it explicitly
             self.w = None
-            # XXX call render before subject to set .row/.col attributes on the
-            #     view
             try:
-                content = self.render(row=0, col=0, **kwargs)
-                subject = self.subject()
-            except SkipEmail:
-                continue
-            except Exception as ex:
-                # shouldn't make the whole transaction fail because of rendering
-                # error (unauthorized or such) XXX check it doesn't actually
-                # occurs due to rollback on such error
-                self.exception(str(ex))
-                continue
-            msg = format_mail(self.user_data, [emailaddr], content, subject,
-                              config=self._cw.vreg.config, msgid=msgid, references=refs)
-            yield [emailaddr], msg
-            if isinstance(something, Entity):
-                self._cw.commit()
-                self._cw.close()
-                self._cw = req
+                # XXX call render before subject to set .row/.col attributes on the
+                #     view
+                try:
+                    content = self.render(row=0, col=0, **kwargs)
+                    subject = self.subject()
+                except SkipEmail:
+                    continue
+                except Exception as ex:
+                    # shouldn't make the whole transaction fail because of rendering
+                    # error (unauthorized or such) XXX check it doesn't actually
+                    # occurs due to rollback on such error
+                    self.exception(str(ex))
+                    continue
+                msg = format_mail(self.user_data, [emailaddr], content, subject,
+                                  config=self._cw.vreg.config, msgid=msgid, references=refs)
+                yield [emailaddr], msg
+            except:
+                if isinstance(something, Entity):
+                    self._cw.rollback()
+                raise
+            else:
+                if isinstance(something, Entity):
+                    self._cw.commit()
+            finally:
+                if isinstance(something, Entity):
+                    self._cw.close()
+                    self._cw = req
         # restore language
         req.set_language(origlang)
 
--- a/web/webctl.py	Tue Oct 22 11:59:39 2013 +0200
+++ b/web/webctl.py	Thu Oct 24 12:36:12 2013 +0200
@@ -87,10 +87,10 @@
                 resources.update(osp.join(rel_dirpath, f) for f in filenames)
         # locate resources and copy them to destination
         for resource in resources:
-            dirname = osp.dirname(resource)
-            dest_resource = osp.join(dest, dirname)
-            if not osp.isdir(dest_resource):
-                os.makedirs(dest_resource)
+            dest_resource = osp.join(dest, resource)
+            dirname = osp.dirname(dest_resource)
+            if not osp.isdir(dirname):
+                os.makedirs(dirname)
             resource_dir, resource_path = config.locate_resource(resource)
             copy(osp.join(resource_dir, resource_path), dest_resource)
         # handle md5 version subdirectory