1
0
Fork 0
mirror of https://github.com/yweber/lodel2.git synced 2026-07-05 07:10:48 +02:00

Fixing datasources and migration handlers name + the way datasource's __init__ args

This commit is contained in:
Yann 2016-02-25 14:31:27 +01:00
commit 9939152c9f
7 changed files with 20 additions and 29 deletions

View file

@ -13,7 +13,7 @@ from mosql.query import select, insert, update, delete, join, left_join
from mosql.util import raw, or_ from mosql.util import raw, or_
import mosql.mysql import mosql.mysql
from DataSource.dummy.leapidatasource import DummyDatasource import DataSource.dummy.leapidatasource
from DataSource.MySQL import utils from DataSource.MySQL import utils
from EditorialModel.classtypes import EmNature from EditorialModel.classtypes import EmNature
from EditorialModel.fieldtypes.generic import MultiValueFieldType from EditorialModel.fieldtypes.generic import MultiValueFieldType
@ -22,18 +22,14 @@ from Lodel.settings import Settings
from .fieldtypes import fieldtype_cast from .fieldtypes import fieldtype_cast
## MySQL DataSource for LeObject ## MySQL DataSource for LeObject
class LeDataSourceSQL(DummyDatasource): class LeapiDataSource(DataSource.dummy.leapidatasource.LeapiDataSource):
RELATIONS_POSITIONS_FIELDS = {REL_SUP: 'superior_id', REL_SUB: 'subordinate_id'} RELATIONS_POSITIONS_FIELDS = {REL_SUP: 'superior_id', REL_SUB: 'subordinate_id'}
def __init__(self, module=pymysql, conn_args=None): def __init__(self, module = pymysql, **kwargs):
super(LeDataSourceSQL, self).__init__() super().__init__()
self.module = module self.module = module
if conn_args is None: self.connection = Database(self.module, **kwargs)
conn_args = copy.copy(Settings.get('datasource')['default'])
self.module = conn_args['module']
del conn_args['module']
self.connection = Database(self.module, **conn_args)
## @brief select lodel editorial components using given filters ## @brief select lodel editorial components using given filters
# @param target_cls LeCrud(class): The component class concerned by the select (a LeCrud child class (not instance !) ) # @param target_cls LeCrud(class): The component class concerned by the select (a LeCrud child class (not instance !) )

View file

@ -13,7 +13,7 @@ from EditorialModel.fieldtypes.generic import MultiValueFieldType
from DataSource.MySQL import fieldtypes as fieldtypes_utils from DataSource.MySQL import fieldtypes as fieldtypes_utils
from DataSource.MySQL import utils from DataSource.MySQL import utils
from DataSource.dummy.migrationhandler import DummyMigrationHandler import DataSource.dummy
# The global MH algorithm is as follow : # The global MH algorithm is as follow :
# A create_table(table_name, pk_name, pk_opt) method that create a table # A create_table(table_name, pk_name, pk_opt) method that create a table
@ -41,7 +41,7 @@ from DataSource.dummy.migrationhandler import DummyMigrationHandler
## @brief Modify a MySQL database given editorial model changes ## @brief Modify a MySQL database given editorial model changes
class MysqlMigrationHandler(DummyMigrationHandler): class MigrationHandler(DataSource.dummy.MigrationHandler):
## @brief Construct a MysqlMigrationHandler ## @brief Construct a MysqlMigrationHandler
# @param module : sql module # @param module : sql module

View file

@ -19,7 +19,7 @@ import leapi.test.utils #Code generation functions
from Lodel.settings import Settings from Lodel.settings import Settings
import DataSource.MySQL import DataSource.MySQL
from DataSource.MySQL.leapidatasource import LeDataSourceSQL as DataSource from DataSource.MySQL.leapidatasource import LeapiDataSource as DataSource
import DataSource.MySQL.utils as db_utils import DataSource.MySQL.utils as db_utils
from EditorialModel.classtypes import common_fields, relations_common_fields from EditorialModel.classtypes import common_fields, relations_common_fields
from EditorialModel.fieldtypes.generic import MultiValueFieldType from EditorialModel.fieldtypes.generic import MultiValueFieldType
@ -38,23 +38,12 @@ class DataSourceTestCase(TestCase):
def test_init(self): def test_init(self):
""" Test __init__ for datasource """ """ Test __init__ for datasource """
with patch.object(mosql.db.Database, '__init__', return_value=None) as mock_db: with patch.object(mosql.db.Database, '__init__', return_value=None) as mock_db:
#Test __init__ without arguments
DataSource()
conn_args = Settings.get('datasource')['default']
db_module = conn_args['module']
del(conn_args['module'])
mock_db.assert_called_once_with(db_module, **conn_args)
mock_db.reset_mock()
#test with arguments #test with arguments
conn_args = { 'hello': 'world', 'answer': 42 } conn_args = { 'hello': 'world', 'answer': 42 }
DataSource(mosql, conn_args) DataSource(mosql, **conn_args)
mock_db.assert_called_once_with(mosql, **conn_args) mock_db.assert_called_once_with(mosql, **conn_args)
mock_db.reset_mock() mock_db.reset_mock()
DataSource(conn_args = conn_args)
mock_db.assert_called_once_with(pymysql, **conn_args)
def test_insert_leobject(self): def test_insert_leobject(self):
""" Test the insert method on LeObjects """ """ Test the insert method on LeObjects """

View file

@ -4,8 +4,11 @@
# #
# This class has to be extended to apply to a real datasource # This class has to be extended to apply to a real datasource
# But it can be used as an empty and debug datasource # But it can be used as an empty and debug datasource
class DummyDatasource(object): #
# @todo Settings fetch/pass generalisation for datasources.
class LeapiDataSource(object):
## @todo Settings fetch/pass generalisation for datasources.
def __init__(self, module=None, *conn_args, **conn_kargs): def __init__(self, module=None, *conn_args, **conn_kargs):
self.module = module self.module = module
self.conn_args = conn_args self.conn_args = conn_args

View file

@ -8,7 +8,7 @@
## Manage Model changes ## Manage Model changes
class DummyMigrationHandler(object): class MigrationHandler(object):
def __init__(self, debug=False): def __init__(self, debug=False):
self.debug = debug self.debug = debug

View file

@ -10,8 +10,7 @@ MANDATORY = [
'em_file', 'em_file',
'dynamic_code_file', 'dynamic_code_file',
'ds_package', 'ds_package',
'datasource', 'datasource_options',
'mh_classname',
'migration_options', 'migration_options',
'base_path', 'base_path',
'plugins', 'plugins',

View file

@ -12,6 +12,9 @@ debug_sql = False
plugins = ['dummy', 'dummy_auth'] plugins = ['dummy', 'dummy_auth']
ds_package = 'dummy'
datasource_options = {}
""" #example
datasource = { datasource = {
'default': { 'default': {
'module':pymysql, 'module':pymysql,
@ -21,6 +24,7 @@ datasource = {
'db': None, 'db': None,
} }
} }
"""
migration_options = { migration_options = {
'dryrun': False, 'dryrun': False,