[R] devtools: improve default data import mechanism
Validation chain is now possible with checkers
Before that the expected values needed to be coherent.
Now, we can use ObjectStore to validate the input data
* add new input transformers:
- uppercase
- lowercase
* add new input checkers (raise AssertionError on error):
- decimal: take care of possible comma character as number separator
- integer: cast to int()
- yesno: to validate boolean value
- isalpha
- required: input value *must* not be empty
* new control checker:
- optional: block possible exception
we delete field in the returned dict instead of raising AssertionError
(exclusive with required)
Helper methods to manipulate indexes:
* build_rqlindex() is used to build index based on already created entities
* fetch() replace get_one()/get_many() methods by factorizing code
Minor changes in reporting:
* use tell() for all printing
* let new value for askerrors to display automatically the report (used in crontab)
"""
:organization: Logilab
:copyright: 2001-2010 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2.
:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr
:license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
"""
import sys
import os
from cStringIO import StringIO
from logilab.common.testlib import TestCase, unittest_main
if os.environ.get('APYCOT_ROOT'):
root = os.environ['APYCOT_ROOT']
CUBES_DIR = '%s/local/share/cubicweb/cubes/' % root
os.environ['CW_CUBES_PATH'] = CUBES_DIR
REGISTRY_DIR = '%s/etc/cubicweb.d/' % root
os.environ['CW_INSTANCES_DIR'] = REGISTRY_DIR
from cubicweb.cwconfig import CubicWebConfiguration
CubicWebConfiguration.load_cwctl_plugins()
class CubicWebCtlTC(TestCase):
def setUp(self):
self.stream = StringIO()
sys.stdout = self.stream
def tearDown(self):
sys.stdout = sys.__stdout__
def test_list(self):
from cubicweb.cwctl import ListCommand
ListCommand().run([])
if __name__ == '__main__':
unittest_main()