浏览代码

[#61] Corrected the relational filters parsing method in LeDataSourceSQL

Roland Haroutiounian 9 年前
父节点
当前提交
e3dba75747
共有 1 个文件被更改,包括 12 次插入6 次删除
  1. 12
    6
      leobject/datasources/ledatasourcesql.py

+ 12
- 6
leobject/datasources/ledatasourcesql.py 查看文件

13
 
13
 
14
     RELATIONS_TABLE_NAME = 'relations'
14
     RELATIONS_TABLE_NAME = 'relations'
15
     RELATIONS_POSITIONS_FIELDS = {REL_SUP:'superior_id', REL_SUB:'subordinate_id'}
15
     RELATIONS_POSITIONS_FIELDS = {REL_SUP:'superior_id', REL_SUB:'subordinate_id'}
16
+    RELATIONS_NATURE_FIELD = 'nature'
17
+
16
     MODULE = 'sqlite3'
18
     MODULE = 'sqlite3'
17
 
19
 
18
     def __init__(self, module=None, *conn_args, **conn_kargs):
20
     def __init__(self, module=None, *conn_args, **conn_kargs):
85
         if relational_filters or len(relational_filters) > 0:
87
         if relational_filters or len(relational_filters) > 0:
86
             for relational_filter in relational_filters:
88
             for relational_filter in relational_filters:
87
                 # Parsing the relation_filter
89
                 # Parsing the relation_filter
88
-                relational_position = relational_filter[0][0]
89
-                relational_field = relational_filter[0][1]
90
+                relational_position = REL_SUB if relational_filter[0][0] == REL_SUP else REL_SUP
91
+                relational_nature = relational_filter[0][1]
90
                 relational_operator = relational_filter[1]
92
                 relational_operator = relational_filter[1]
91
-                relational_value = relational_filter[2]
92
-                relational_where_filters_key = (relational_field, relational_operator)
93
-                relational_where_filters_value = relational_value
93
+
94
+                relational_condition_key = (self.RELATIONS_POSITIONS_FIELDS[relational_filter[0][0]], relational_operator)
95
+                relational_condition_value = relational_filter[2]
94
 
96
 
95
                 # Definition of the join condition
97
                 # Definition of the join condition
96
                 relation_table_join_field = "%s.%s" % (self.RELATIONS_TABLE_NAME, self.RELATIONS_POSITIONS_FIELDS[relational_position])
98
                 relation_table_join_field = "%s.%s" % (self.RELATIONS_TABLE_NAME, self.RELATIONS_POSITIONS_FIELDS[relational_position])
97
                 query_table_join_field = "%s.lodel_id" % query_table_name
99
                 query_table_join_field = "%s.lodel_id" % query_table_name
98
                 join_fields[query_table_join_field] = relation_table_join_field
100
                 join_fields[query_table_join_field] = relation_table_join_field
99
 
101
 
102
+                # Adding to "where" filters
103
+                where_filters['%s.%s' % (self.RELATIONS_TABLE_NAME,self.RELATIONS_NATURE_FIELD_NAME ]
104
+
100
                 # Adding "where" filters
105
                 # Adding "where" filters
101
-                where_filters[relational_where_filters_key] = relational_where_filters_value
106
+                where_filters['%s.%s' % (self.RELATIONS_TABLE_NAME, self.RELATIONS_NATURE_FIELD)] = relational_field
107
+                where_filters[relational_condition_key] = relational_condition_value
102
 
108
 
103
             # Building the query
109
             # Building the query
104
             query = select(query_table_name, where=where_filters, select=field_list, joins=join(self.RELATIONS_TABLE_NAME, join_fields))
110
             query = select(query_table_name, where=where_filters, select=field_list, joins=join(self.RELATIONS_TABLE_NAME, join_fields))

正在加载...
取消
保存