--- 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