|
@@ -35,6 +35,8 @@ class LeDataSourceSQL(DummyDatasource):
|
35
|
35
|
where_filters = filters
|
36
|
36
|
set_data = data
|
37
|
37
|
|
|
38
|
+ prepared_rel_filters = self._prepare_rel_filters(rel_filters)
|
|
39
|
+
|
38
|
40
|
# Building the query
|
39
|
41
|
query = update(table=query_table_name, where=where_filters, set=set_data)
|
40
|
42
|
# Executing the query
|
|
@@ -65,6 +67,8 @@ class LeDataSourceSQL(DummyDatasource):
|
65
|
67
|
# @todo prendre en compte les rel_filters
|
66
|
68
|
def delete(self, letype, leclass, filters, relational_filters):
|
67
|
69
|
query_table_name = leclass.name
|
|
70
|
+ prepared_relational_filters = self._prepare_rel_filters(relational_filters)
|
|
71
|
+
|
68
|
72
|
query = delete(query_table_name, filters)
|
69
|
73
|
with self.connection as cur:
|
70
|
74
|
cur.execute(query)
|
|
@@ -84,23 +88,15 @@ class LeDataSourceSQL(DummyDatasource):
|
84
|
88
|
join_fields = {}
|
85
|
89
|
|
86
|
90
|
if relational_filters is not None and len(relational_filters) > 0:
|
87
|
|
- for relational_filter in relational_filters:
|
88
|
|
- # Parsing the relation_filter
|
89
|
|
- relational_position = REL_SUB if relational_filter[0][0] == REL_SUP else REL_SUP
|
90
|
|
- relational_nature = relational_filter[0][1]
|
91
|
|
- relational_operator = relational_filter[1]
|
92
|
|
-
|
93
|
|
- relational_condition_key = (self.RELATIONS_POSITIONS_FIELDS[relational_filter[0][0]], relational_operator)
|
94
|
|
- relational_condition_value = relational_filter[2]
|
95
|
|
-
|
|
91
|
+ prepared_rel_filters = self._prepare_rel_filters(relational_filters)
|
|
92
|
+ for prepared_rel_filter in prepared_rel_filters:
|
96
|
93
|
# Definition of the join condition
|
97
|
|
- relation_table_join_field = "%s.%s" % (self.RELATIONS_TABLE_NAME, self.RELATIONS_POSITIONS_FIELDS[relational_position])
|
|
94
|
+ relation_table_join_field = "%s.%s" % (self.RELATIONS_TABLE_NAME, self.RELATIONS_POSITIONS_FIELD[prepared_rel_filter['position']])
|
98
|
95
|
query_table_join_field = "%s.lodel_id" % query_table_name
|
99
|
96
|
join_fields[query_table_join_field] = relation_table_join_field
|
100
|
|
-
|
101
|
97
|
# Adding "where" filters
|
102
|
|
- where_filters['%s.%s' % (self.RELATIONS_TABLE_NAME, self.RELATIONS_NATURE_FIELD)] = relational_nature
|
103
|
|
- where_filters[relational_condition_key] = relational_condition_value
|
|
98
|
+ where_filters['%s.%s' % (self.RELATIONS_TABLE_NAME, self.RELATIONS_NATURE_FIELD)] = prepared_rel_filter['nature']
|
|
99
|
+ where_filters[prepared_rel_filter['condition_key']] = prepared_rel_filter['condition_value']
|
104
|
100
|
|
105
|
101
|
# Building the query
|
106
|
102
|
query = select(query_table_name, where=where_filters, select=field_list, joins=join(self.RELATIONS_TABLE_NAME, join_fields))
|
|
@@ -125,3 +121,20 @@ class LeDataSourceSQL(DummyDatasource):
|
125
|
121
|
prepared_filters[prepared_filter_key] = prepared_filter_value
|
126
|
122
|
|
127
|
123
|
return prepared_filters
|
|
124
|
+
|
|
125
|
+ ## @brief prepares the relational filters
|
|
126
|
+ # @params rel_filters : (("superior"|"subordinate"), operator, value)
|
|
127
|
+ # @return list
|
|
128
|
+ def _prepare_rel_filters(self, rel_filters):
|
|
129
|
+ prepared_rel_filters = []
|
|
130
|
+
|
|
131
|
+ for rel_filter in rel_filters:
|
|
132
|
+ rel_filter_dict = {
|
|
133
|
+ 'position': REL_SUB if rel_filter[0][0] == REL_SUP else REL_SUB,
|
|
134
|
+ 'nature': rel_filter[0][1],
|
|
135
|
+ 'condition_key': (self.RELATIONS_POSITIONS_FIELDS[rel_filter[0][0]], rel_filter[1]),
|
|
136
|
+ 'condition_value': rel_filter[2]
|
|
137
|
+ }
|
|
138
|
+ prepared_rel_filters.append(rel_filter_dict)
|
|
139
|
+
|
|
140
|
+ return prepared_rel_filters
|