Browse Source

sql datasource: refactoring

ArnAud 8 years ago
parent
commit
c129ceaa49
1 changed files with 15 additions and 14 deletions
  1. 15
    14
      DataSource/MySQL/leapidatasource.py

+ 15
- 14
DataSource/MySQL/leapidatasource.py View File

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

Loading…
Cancel
Save