1
0
Fork 0
mirror of https://github.com/yweber/lodel2.git synced 2025-10-26 09:39:01 +01:00

Added the implementation of LeGetQuery.__prepare_order()

This commit is contained in:
Roland Haroutiounian 2016-04-07 17:23:30 +02:00
commit f9df2fb0f3

View file

@ -1,7 +1,6 @@
#-*- coding: utf-8 -*-
from .leobject import LeObject
from .leobject import LeObject, LeApiErrors
class LeQueryError(Exception):
pass
@ -80,6 +79,12 @@ class LeGetQuery(LeFilteredQuery):
def __get(self, **kwargs):
field_list = self.__prepare_field_list(self.field_list) #TODO implement the prepare_field_list method
# Preparing order
if self.order:
order = self.__prepare_order()
if isinstance(order, Exception):
raise order # can be buffered and raised later, but _prepare_filters raise when fails
# checks the limit and offset values
if self.limit is not None and self.limit <= 0:
raise ValueError('Invalid limit given')
@ -97,7 +102,23 @@ class LeGetQuery(LeFilteredQuery):
pass
def __prepare_order(self):
pass
errors = dict()
result = []
for order_field in self.order:
if not isinstance(order_field, tuple):
order_field = (order_field, 'ASC')
if len(order_field) != 2 or order_field[1].upper() not in ['ASC', 'DESC']:
errors[order_field] = ValueError("Expected a string or a tuple with (FIELDNAME, ['ASC'|'DESC']) but got : %s" % order_field)
else:
ret = self._target_class.check_field(order_field[0])
if isinstance(ret, Exception):
errors[order_field] = ret
order_field = (order_field[0], order_field[1].upper())
result.append(order_field)
if len(errors) > 0:
return LeApiErrors("Errors when preparing ordering fields", errors)
return result
def __prepare_groups(self):
pass
@ -130,7 +151,13 @@ class LeUpdateQuery(LeFilteredQuery):
## @brief prepares the query_filters to be used as argument for the datasource's update method
def __prepare(self):
pass
datas = dict()
if super().validate_query_filters(self.query_filters):
datas['query_filters'] = self.query_filters
datas['target_uid'] = self.target_uid
datas['target_class'] = self._target_class
return datas
class LeDeleteQuery(LeFilteredQuery):
@ -153,6 +180,10 @@ class LeDeleteQuery(LeFilteredQuery):
def __prepare(self):
datas = dict()
if LeQuery.validate_query_filters(self.query_filters):
if super().validate_query_filters(self.query_filters):
datas['query_filters'] = self.query_filters
datas['target_uid'] = self.target_uid
datas['target_class'] = self._target_class
return datas