merge stable
authorAlexandre Fayolle <alexandre.fayolle@logilab.fr>
Tue, 30 Mar 2010 18:41:17 +0200
branchstable
changeset 5089 289cb1cebae8
parent 5087 192ebe969779 (diff)
parent 5088 891cdb7d8cbb (current diff)
child 5091 ae161c25a68e
merge
--- a/MANIFEST.in	Tue Mar 30 16:29:32 2010 +0200
+++ b/MANIFEST.in	Tue Mar 30 18:41:17 2010 +0200
@@ -15,7 +15,7 @@
 recursive-include etwist *.xml *.html
 
 recursive-include i18n *.pot *.po
-recursive-include schemas *.py *.sql.*
+recursive-include schemas *.py *.sql
 
 recursive-include entities/test/data *
 recursive-include sobjects/test/data *
--- a/cwconfig.py	Tue Mar 30 16:29:32 2010 +0200
+++ b/cwconfig.py	Tue Mar 30 18:41:17 2010 +0200
@@ -330,7 +330,7 @@
     def available_cubes(cls):
         cubes = set()
         for directory in cls.cubes_search_path():
-            if not os.path.exists(directory):
+            if not exists(directory):
                 cls.error('unexistant directory in cubes search path: %s'
                            % directory)
                 continue
--- a/server/repository.py	Tue Mar 30 16:29:32 2010 +0200
+++ b/server/repository.py	Tue Mar 30 18:41:17 2010 +0200
@@ -153,10 +153,14 @@
         self._available_pools.put_nowait(pool.ConnectionsPool(self.sources))
         if config.quick_start:
             # quick start, usually only to get a minimal repository to get cubes
-            # information (eg dump/restore/
+            # information (eg dump/restore/...)
             config._cubes = ()
-            self.set_schema(config.load_schema(), resetvreg=False)
+            # only load hooks and entity classes in the registry
+            config.cube_appobject_path = set(('hooks', 'entities'))
+            config.cubicweb_appobject_path = set(('hooks', 'entities'))
+            self.set_schema(config.load_schema())
             config['connections-pool-size'] = 1
+            # will be reinitialized later from cubes found in the database
             config._cubes = None
         elif config.creating:
             # repository creation
@@ -202,8 +206,7 @@
         self._shutting_down = False
         if config.quick_start:
             config.init_cubes(self.get_cubes())
-        else:
-            self.hm = self.vreg['hooks']
+        self.hm = self.vreg['hooks']
 
     # internals ###############################################################
 
--- a/web/data/cubicweb.edition.js	Tue Mar 30 16:29:32 2010 +0200
+++ b/web/data/cubicweb.edition.js	Tue Mar 30 18:41:17 2010 +0200
@@ -331,26 +331,30 @@
     var firsterrfield = null;
     for (fieldname in errors) {
 	var errmsg = errors[fieldname];
-	var fieldid = fieldname + ':' + eid;
-	var suffixes = ['', '-subject', '-object'];
-	var found = false;
-	// XXX remove suffixes at some point
-	for (var i=0, length=suffixes.length; i<length;i++) {
-	    var field = jqNode(fieldname + suffixes[i] + ':' + eid);
-	    if (field && getNodeAttribute(field, 'type') != 'hidden') {
-		if ( !firsterrfield ) {
-		    firsterrfield = 'err-' + fieldid;
+	if (!fieldname) {
+	    globalerrors.push(errmsg);
+	} else {
+	    var fieldid = fieldname + ':' + eid;
+	    var suffixes = ['', '-subject', '-object'];
+	    var found = false;
+	    // XXX remove suffixes at some point
+	    for (var i=0, length=suffixes.length; i<length;i++) {
+		var field = jqNode(fieldname + suffixes[i] + ':' + eid);
+		if (field && getNodeAttribute(field, 'type') != 'hidden') {
+		    if ( !firsterrfield ) {
+			firsterrfield = 'err-' + fieldid;
+		    }
+		    addElementClass(field, 'error');
+		    var span = SPAN({'id': 'err-' + fieldid, 'class': "errorMsg"}, errmsg);
+		    field.before(span);
+		    found = true;
+		    break;
 		}
-		addElementClass(field, 'error');
-		var span = SPAN({'id': 'err-' + fieldid, 'class': "errorMsg"}, errmsg);
-		field.before(span);
-		found = true;
-		break;
 	    }
-	}
-	if (!found) {
-	    firsterrfield = formid;
-	    globalerrors.push(_(fieldname) + ' : ' + errmsg);
+	    if (!found) {
+		firsterrfield = formid;
+		globalerrors.push(_(fieldname) + ' : ' + errmsg);
+	    }
 	}
     }
     if (globalerrors.length) {
--- a/web/formfields.py	Tue Mar 30 16:29:32 2010 +0200
+++ b/web/formfields.py	Tue Mar 30 18:41:17 2010 +0200
@@ -867,7 +867,7 @@
             eids.add(typed_eid)
         return eids
 
-
+# XXX use cases where we don't actually want a better widget?
 class CompoundField(Field):
     def __init__(self, fields, *args, **kwargs):
         super(CompoundField, self).__init__(*args, **kwargs)
@@ -877,7 +877,11 @@
         return self.fields
 
     def actual_fields(self, form):
-        return [self] + list(self.fields)
+        # don't add [self] to actual fields, compound field is usually kinda
+        # virtual, all interesting values are in subfield. Skipping it may avoid
+        # error when processed by the editcontroller : it may be marked as required
+        # while it has no value, hence generating a false error.
+        return list(self.fields)
 
 
 _AFF_KWARGS = uicfg.autoform_field_kwargs