|
@@ -14,9 +14,10 @@ from mosql.util import raw, or_
|
14
|
14
|
import mosql.mysql
|
15
|
15
|
|
16
|
16
|
from DataSource.dummy.leapidatasource import DummyDatasource
|
17
|
|
-from DataSource.MySQL.common_utils import MySQL
|
18
|
|
-from EditorialModel.classtypes import EmNature, common_fields, relations_common_fields
|
|
17
|
+from DataSource.MySQL import utils
|
|
18
|
+from EditorialModel.classtypes import EmNature
|
19
|
19
|
|
|
20
|
+from Lodel.settings import Settings
|
20
|
21
|
|
21
|
22
|
## MySQL DataSource for LeObject
|
22
|
23
|
class LeDataSourceSQL(DummyDatasource):
|
|
@@ -26,9 +27,8 @@ class LeDataSourceSQL(DummyDatasource):
|
26
|
27
|
def __init__(self, module=pymysql, conn_args=None):
|
27
|
28
|
super(LeDataSourceSQL, self).__init__()
|
28
|
29
|
self.module = module
|
29
|
|
- self.datasource_utils = MySQL
|
30
|
30
|
if conn_args is None:
|
31
|
|
- conn_args = copy.copy(self.datasource_utils.connections['default'])
|
|
31
|
+ conn_args = copy.copy(Settings.get('datasource')['default'])
|
32
|
32
|
self.module = conn_args['module']
|
33
|
33
|
del conn_args['module']
|
34
|
34
|
self.connection = Database(self.module, **conn_args)
|
|
@@ -48,15 +48,16 @@ class LeDataSourceSQL(DummyDatasource):
|
48
|
48
|
joins = []
|
49
|
49
|
# it is a LeObject, query only on main table
|
50
|
50
|
if target_cls.__name__ == 'LeObject':
|
51
|
|
- main_table = self.datasource_utils.objects_table_name
|
52
|
|
- fields = [(main_table, common_fields)]
|
|
51
|
+ main_table = utils.common_tables['object']
|
|
52
|
+ fields = [(main_table, target_cls.fieldlist())]
|
53
|
53
|
|
54
|
54
|
# it is a LeType or a LeClass, query on main table left join class table on lodel_id
|
55
|
55
|
elif target_cls.is_letype() or target_cls.is_leclass():
|
56
|
56
|
# find main table and main table datas
|
57
|
|
- main_table = self.datasource_utils.objects_table_name
|
58
|
|
- main_class = target_cls._leclass if hasattr(target_cls, '_leclass') else target_cls
|
59
|
|
- class_table = self.datasource_utils.get_table_name_from_class(main_class.__name__)
|
|
57
|
+ main_table = utils.common_tables['object']
|
|
58
|
+ main_class = target_cls.leo_class()
|
|
59
|
+ class_table = utils.object_table_name(main_class.__name__)
|
|
60
|
+ print (class_table)
|
60
|
61
|
main_lodel_id = self.datasource_utils.column_prefix(main_table, self.datasource_utils.field_lodel_id)
|
61
|
62
|
class_lodel_id = self.datasource_utils.column_prefix(class_table, self.datasource_utils.field_lodel_id)
|
62
|
63
|
joins = [left_join(class_table, {main_lodel_id:class_lodel_id})]
|
|
@@ -74,13 +75,13 @@ class LeDataSourceSQL(DummyDatasource):
|
74
|
75
|
raise AttributeError("Target class '%s' in get() is not a Lodel Editorial Object !" % target_cls)
|
75
|
76
|
|
76
|
77
|
# prefix column name in fields list
|
77
|
|
- prefixed_field_list = [self.datasource_utils.find_prefix(name, fields) for name in field_list]
|
|
78
|
+ prefixed_field_list = [utils.find_prefix(name, fields) for name in field_list]
|
78
|
79
|
|
79
|
80
|
kwargs = {}
|
80
|
81
|
if group:
|
81
|
|
- kwargs['group_by'] = (self.datasource_utils.find_prefix(column, fields) for column, direction in group)
|
|
82
|
+ kwargs['group_by'] = (utils.find_prefix(column, fields) for column, direction in group)
|
82
|
83
|
if order:
|
83
|
|
- kwargs['order_by'] = (self.datasource_utils.find_prefix(column, fields) + ' ' + direction for column, direction in order)
|
|
84
|
+ kwargs['order_by'] = (utils.find_prefix(column, fields) + ' ' + direction for column, direction in order)
|
84
|
85
|
if limit:
|
85
|
86
|
kwargs['limit'] = limit
|
86
|
87
|
if offset:
|
|
@@ -99,12 +100,12 @@ class LeDataSourceSQL(DummyDatasource):
|
99
|
100
|
#where_filters[rel_filter['condition_key']] = rel_filter['condition_value']
|
100
|
101
|
|
101
|
102
|
# prefix filters'' column names, and prepare dict for mosql where {(fieldname, op): value}
|
102
|
|
- wheres = {(self.datasource_utils.find_prefix(name, fields), op):value for name,op,value in filters}
|
|
103
|
+ wheres = {(utils.find_prefix(name, fields), op):value for name,op,value in filters}
|
103
|
104
|
query = select(main_table, select=prefixed_field_list, where=wheres, joins=joins, **kwargs)
|
104
|
105
|
print ('SQL', query)
|
105
|
106
|
|
106
|
107
|
# Executing the query
|
107
|
|
- cur = self.datasource_utils.query(self.connection, query)
|
|
108
|
+ cur = utils.query(self.connection, query)
|
108
|
109
|
results = all_to_dicts(cur)
|
109
|
110
|
|
110
|
111
|
# instanciate each row to editorial components
|