|
@@ -102,7 +102,7 @@ class LeDataSourceSQL(DummyDatasource):
|
102
|
102
|
query += " AND "
|
103
|
103
|
query += "%s %s %s" % (filter_item[0][0], filter_item[0][1], filter_item[1])
|
104
|
104
|
else:
|
105
|
|
- query = delete(query_table_name, filters)
|
|
105
|
+ query = delete(query_table_name, prep_filters)
|
106
|
106
|
|
107
|
107
|
query_delete_from_object = delete(self.datasource_utils.objects_table_name, {'lodel_id': filters['lodel_id']})
|
108
|
108
|
with self.connection as cur:
|
|
@@ -117,14 +117,26 @@ class LeDataSourceSQL(DummyDatasource):
|
117
|
117
|
# @param rel_filters list : List of relationnal filters (see @ref leobject_filters)
|
118
|
118
|
# @param **datas : Datas in kwargs
|
119
|
119
|
# @return the number of updated components
|
120
|
|
- # @TODO Prendre en charge les rel_filters
|
121
|
120
|
def update(self, target_cls, filters, rel_filters, **datas):
|
122
|
121
|
query_table_name = self.datasource_utils.get_table_name_from_class(target_cls.__name__)
|
123
|
|
- where_filters = filters
|
|
122
|
+ prep_filters = self._prepare_filters(filters, query_table_name)
|
124
|
123
|
set_data = datas
|
125
|
124
|
if rel_filters is not None:
|
126
|
125
|
prep_rel_filters = self._prepare_rel_filters(rel_filters)
|
127
|
|
- query = update(table=query_table_name, where=where_filters, set=set_data)
|
|
126
|
+ for prep_rel_filter in prep_rel_filters:
|
|
127
|
+ query += "%s INNER JOIN %s ON (%s.%s = %s.%s)" % (
|
|
128
|
+ self.datasource_utils.relations_table_name,
|
|
129
|
+ query_table_name,
|
|
130
|
+ self.datasource_utils.relations_table_name,
|
|
131
|
+ prep_rel_filter['position'],
|
|
132
|
+ query_table_name,
|
|
133
|
+ self.datasource_utils.field_lodel_id
|
|
134
|
+ )
|
|
135
|
+
|
|
136
|
+ if prep_rel_filter['condition_key'][0] is not None:
|
|
137
|
+ prep_filters[("%s.%s" % (self.datasource_utils.relations_table_name, prep_rel_filter['condition_key'][0]), prep_rel_filter['condition_key'][1])] = prep_rel_filter['condition_value']
|
|
138
|
+
|
|
139
|
+ query = update(table=query_table_name, where=prep_filters, set=set_data)
|
128
|
140
|
with self.connection as cur:
|
129
|
141
|
result = cur.execute(query)
|
130
|
142
|
return result
|