|
@@ -33,10 +33,10 @@ class LeQuery(object):
|
33
|
33
|
##@brief Execute a query and return the result
|
34
|
34
|
# @param **datas
|
35
|
35
|
# @return the query result
|
36
|
|
- # @see LeQuery.__query()
|
|
36
|
+ # @see LeQuery._query()
|
37
|
37
|
#
|
38
|
38
|
def execute(self, **datas):
|
39
|
|
- if len(datas) > 0:
|
|
39
|
+ if 'datas' in datas and len(datas['datas']) > 0:
|
40
|
40
|
self._target_class.check_datas_value(
|
41
|
41
|
datas['datas'],
|
42
|
42
|
**self._data_check_args)
|
|
@@ -46,7 +46,7 @@ class LeQuery(object):
|
46
|
46
|
LodelHook.call_hook( self._hook_prefix+'_pre',
|
47
|
47
|
self._target_class,
|
48
|
48
|
datas)
|
49
|
|
- ret = self.__query(target = self._target_class, **datas)
|
|
49
|
+ ret = self._query(**datas)
|
50
|
50
|
ret = LodelHook.call_hook( self._hook_prefix+'_post',
|
51
|
51
|
self._target_class,
|
52
|
52
|
ret)
|
|
@@ -55,7 +55,7 @@ class LeQuery(object):
|
55
|
55
|
##@brief Childs classes implements this method to execute the query
|
56
|
56
|
# @param **datas
|
57
|
57
|
# @return query result
|
58
|
|
- def __query(self, **datas):
|
|
58
|
+ def _query(self, **datas):
|
59
|
59
|
raise NotImplementedError("Asbtract method")
|
60
|
60
|
|
61
|
61
|
##@return a dict with query infos
|
|
@@ -95,7 +95,7 @@ class LeFilteredQuery(LeQuery):
|
95
|
95
|
def __init__(self, target_class, query_filters = None):
|
96
|
96
|
super().__init__(target_class)
|
97
|
97
|
##@brief The query filter tuple(std_filter, relational_filters)
|
98
|
|
- self.__query_filter = None
|
|
98
|
+ self._query_filter = None
|
99
|
99
|
##@brief Stores potential subqueries (used when a query implies
|
100
|
100
|
# more than one datasource.
|
101
|
101
|
#
|
|
@@ -108,23 +108,23 @@ class LeFilteredQuery(LeQuery):
|
108
|
108
|
# This method takes care to execute subqueries before calling super execute
|
109
|
109
|
def execute(self, datas = None):
|
110
|
110
|
#copy originals filters
|
111
|
|
- orig_filters = copy.copy(self.__query_filter)
|
112
|
|
- std_filters, rel_filters = self.__query_filter
|
|
111
|
+ orig_filters = copy.copy(self._query_filter)
|
|
112
|
+ std_filters, rel_filters = self._query_filter
|
113
|
113
|
|
114
|
114
|
for rfield, subq in self.subqueries:
|
115
|
115
|
subq_res = subq.execute()
|
116
|
116
|
std_filters.append(
|
117
|
117
|
(rfield, ' in ', subq_res))
|
118
|
|
- self.__query_filter = (std_filters, rel_filters)
|
|
118
|
+ self._query_filter = (std_filters, rel_filters)
|
119
|
119
|
try:
|
120
|
|
- filters, rel_filters = self.__query_filter
|
|
120
|
+ filters, rel_filters = self._query_filter
|
121
|
121
|
res = super().execute(filters = filters, rel_filters = rel_filters)
|
122
|
122
|
except Exception as e:
|
123
|
123
|
#restoring filters even if an exception is raised
|
124
|
|
- self.__query_filter = orig_filter
|
|
124
|
+ self._query_filter = orig_filters
|
125
|
125
|
raise e #reraise
|
126
|
126
|
#restoring filters
|
127
|
|
- self.__query_filter = orig_filters
|
|
127
|
+ self._query_filter = orig_filters
|
128
|
128
|
return res
|
129
|
129
|
|
130
|
130
|
##@brief Add filter(s) to the query
|
|
@@ -185,8 +185,8 @@ class LeFilteredQuery(LeQuery):
|
185
|
185
|
((rfield, ref_dict), op, value))
|
186
|
186
|
#deduplication of std filters
|
187
|
187
|
filters_orig = list(set(filters_orig))
|
188
|
|
- # Sets __query_filter attribute of self query
|
189
|
|
- self.__query_filter = (filters_orig, result_rel_filters)
|
|
188
|
+ # Sets _query_filter attribute of self query
|
|
189
|
+ self._query_filter = (filters_orig, result_rel_filters)
|
190
|
190
|
|
191
|
191
|
#Sub queries creation
|
192
|
192
|
subq = list()
|
|
@@ -204,7 +204,7 @@ class LeFilteredQuery(LeQuery):
|
204
|
204
|
##@return informations
|
205
|
205
|
def dump_infos(self):
|
206
|
206
|
ret = super().dump_infos()
|
207
|
|
- ret['query_filter'] = self.__query_filter
|
|
207
|
+ ret['query_filter'] = self._query_filter
|
208
|
208
|
ret['subqueries'] = self.subqueries
|
209
|
209
|
return ret
|
210
|
210
|
|
|
@@ -212,7 +212,7 @@ class LeFilteredQuery(LeQuery):
|
212
|
212
|
res = "<{classname} target={target_class} query_filter={query_filter}"
|
213
|
213
|
res = ret.format(
|
214
|
214
|
classname=self.__class__.__name__,
|
215
|
|
- query_filter = self.__query_filter,
|
|
215
|
+ query_filter = self._query_filter,
|
216
|
216
|
target_class = self._target_class)
|
217
|
217
|
if len(self.subqueries) > 0:
|
218
|
218
|
for n,subq in enumerate(self.subqueries):
|
|
@@ -459,7 +459,7 @@ class LeInsertQuery(LeQuery):
|
459
|
459
|
|
460
|
460
|
## @brief Implements an insert query operation, with only one insertion
|
461
|
461
|
# @param new_datas : datas to be inserted
|
462
|
|
- def __query(self, datas):
|
|
462
|
+ def _query(self, datas):
|
463
|
463
|
datas = self._target_class.prepare_datas(datas, True, False)
|
464
|
464
|
nb_inserted = self._rw_datasource.insert(self._target_class,datas)
|
465
|
465
|
if nb_inserted < 0:
|
|
@@ -468,7 +468,7 @@ class LeInsertQuery(LeQuery):
|
468
|
468
|
"""
|
469
|
469
|
## @brief Implements an insert query operation, with multiple insertions
|
470
|
470
|
# @param datas : list of **datas to be inserted
|
471
|
|
- def __query(self, datas):
|
|
471
|
+ def _query(self, datas):
|
472
|
472
|
nb_inserted = self._datasource.insert_multi(
|
473
|
473
|
self._target_class,datas_list)
|
474
|
474
|
if nb_inserted < 0:
|
|
@@ -525,7 +525,7 @@ target to LeUpdateQuery constructor"
|
525
|
525
|
#@returns the number of updated items
|
526
|
526
|
#@todo change stategy for instance update. Datas should be allowed
|
527
|
527
|
#for execute method (and query)
|
528
|
|
- def __query(self, filters, rel_filters, datas):
|
|
528
|
+ def _query(self, filters, rel_filters, datas):
|
529
|
529
|
uid_name = self._target_class._uid[0]
|
530
|
530
|
if self.__leobject_instance is not None:
|
531
|
531
|
#Instance update
|
|
@@ -575,7 +575,7 @@ class LeDeleteQuery(LeFilteredQuery):
|
575
|
575
|
#@param filters list : see @ref LeFilteredQuery
|
576
|
576
|
#@param rel_filters list : see @ref LeFilteredQuery
|
577
|
577
|
#@returns the number of deleted items
|
578
|
|
- def __query(self, filters, rel_filters):
|
|
578
|
+ def _query(self, filters, rel_filters):
|
579
|
579
|
nb_deleted = self._rw_datasource.delete(
|
580
|
580
|
self._target_class, filters, rel_filters)
|
581
|
581
|
return nb_deleted
|
|
@@ -666,7 +666,7 @@ class LeGetQuery(LeFilteredQuery):
|
666
|
666
|
|
667
|
667
|
##@brief Implements select query operations
|
668
|
668
|
# @returns a list containing the item(s)
|
669
|
|
- def __query(self):
|
|
669
|
+ def _query(self):
|
670
|
670
|
# select datas corresponding to query_filter
|
671
|
671
|
l_datas=self._ro_datasource.select( self._target_class,
|
672
|
672
|
list(self.field_list),
|