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:
parent
2ab52e5d32
commit
9939152c9f
7 changed files with 20 additions and 29 deletions
|
|
@ -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 !) )
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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,24 +38,13 @@ 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 """
|
||||||
from dyncode import Article, Personne, Rubrique
|
from dyncode import Article, Personne, Rubrique
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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',
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue