--- a/cwctl.py Tue Mar 05 15:37:37 2013 +0100
+++ b/cwctl.py Mon Mar 11 18:37:01 2013 +0100
@@ -830,10 +830,7 @@
in batch mode.
By default it will connect to a local instance using an in memory
- connection, unless -P option is specified, in which case you will be
- connected through pyro. In the later case, you won't have access to
- repository internals (session, etc...) so most migration commands won't be
- available.
+ connection, unless an URL to a running instance is specified.
Arguments after bare "--" string will not be processed by the shell command
You can use it to pass extra arguments to your script and expect for
--- a/hooks/syncschema.py Tue Mar 05 15:37:37 2013 +0100
+++ b/hooks/syncschema.py Mon Mar 11 18:37:01 2013 +0100
@@ -244,7 +244,7 @@
* create the necessary table
* set creation_date and modification_date by creating the necessary
CWAttribute entities
- * add owned_by relation by creating the necessary CWRelation entity
+ * add <meta rtype> relation by creating the necessary CWRelation entity
"""
entity = None # make pylint happy
@@ -270,9 +270,16 @@
except KeyError:
self.critical('rtype %s was not handled at cwetype creation time', rtype)
continue
+ if not rschema.rdefs:
+ self.warning('rtype %s has no relation definition yet', rtype)
+ continue
sampletype = rschema.subjects()[0]
desttype = rschema.objects()[0]
- rdef = copy(rschema.rdef(sampletype, desttype))
+ try:
+ rdef = copy(rschema.rdef(sampletype, desttype))
+ except KeyError:
+ # this combo does not exist because this is not a universal META_RTYPE
+ continue
rdef.subject = _MockEntity(eid=entity.eid)
mock = _MockEntity(eid=None)
ss.execschemarql(session.execute, mock, ss.rdef2rql(rdef, cmap, gmap))
--- a/hooks/test/unittest_syncschema.py Tue Mar 05 15:37:37 2013 +0100
+++ b/hooks/test/unittest_syncschema.py Mon Mar 11 18:37:01 2013 +0100
@@ -20,10 +20,12 @@
from logilab.common.testlib import TestCase, unittest_main
from cubicweb import ValidationError
+from cubicweb.schema import META_RTYPES
from cubicweb.devtools.testlib import CubicWebTC
from cubicweb.server.sqlutils import SQL_PREFIX
from cubicweb.devtools.repotest import schema_eids_idx, restore_schema_eids_idx
+
def tearDownModule(*args):
del SchemaModificationHooksTC.schema_eids
@@ -116,6 +118,33 @@
self.assertFalse(schema.has_entity('concerne2'))
self.assertFalse('concerne2' in schema['CWUser'].subject_relations())
+ def test_metartype_with_nordefs(self):
+ META_RTYPES.add('custom_meta')
+ self.execute('INSERT CWRType X: X name "custom_meta", X description "", '
+ 'X final FALSE, X symmetric FALSE')
+ self.commit()
+ eeid = self.execute('INSERT CWEType X: X name "NEWEtype", '
+ 'X description "", X final FALSE')[0][0]
+ self._set_perms(eeid)
+ self.commit()
+ META_RTYPES.remove('custom_meta')
+
+ def test_metartype_with_somerdefs(self):
+ META_RTYPES.add('custom_meta')
+ self.execute('INSERT CWRType X: X name "custom_meta", X description "", '
+ 'X final FALSE, X symmetric FALSE')
+ self.commit()
+ rdefeid = self.execute('INSERT CWRelation X: X cardinality "**", X relation_type RT, '
+ ' X from_entity E, X to_entity E '
+ 'WHERE RT name "custom_meta", E name "CWUser"')[0][0]
+ self._set_perms(rdefeid)
+ self.commit()
+ eeid = self.execute('INSERT CWEType X: X name "NEWEtype", '
+ 'X description "", X final FALSE')[0][0]
+ self._set_perms(eeid)
+ self.commit()
+ META_RTYPES.remove('custom_meta')
+
def test_is_instance_of_insertions(self):
seid = self.execute('INSERT Transition T: T name "subdiv"')[0][0]
is_etypes = [etype for etype, in self.execute('Any ETN WHERE X eid %s, X is ET, ET name ETN' % seid)]
--- a/web/views/debug.py Tue Mar 05 15:37:37 2013 +0100
+++ b/web/views/debug.py Mon Mar 11 18:37:01 2013 +0100
@@ -131,10 +131,13 @@
sessions = SESSION_MANAGER.current_sessions()
w(u'<h3>%s</h3>' % _('opened web sessions'))
if sessions:
+ n_no_cnx_sessions = 0
w(u'<ul>')
for session in sessions:
if not session.cnx:
- w(u'<li>%s (NO CNX)</li>' % session.sessionid)
+ # We do not want to list all sessions without cnx
+ # Their session ID are useless, hence we just count them
+ n_no_cnx_sessions += 1
continue
try:
last_usage_time = session.cnx.check()
@@ -148,6 +151,9 @@
dict_to_html(w, session.data)
w(u'</li>')
w(u'</ul>')
+ if n_no_cnx_sessions > 0:
+ w(u'<h3>%s %s</h3>' % (n_no_cnx_sessions,
+ _('web sessions without CNX')))
else:
w(u'<p>%s</p>' % _('no web sessions found'))