|
@@ -494,20 +494,10 @@ raised when trying to import Datasource"
|
494
|
494
|
raise LeApiDataCheckError("Datas consistency checks fails", err_l)
|
495
|
495
|
|
496
|
496
|
## @brief Add a new instance of LeObject
|
497
|
|
- # @param datas dict : the values to be inserted
|
498
|
|
- # @param classname str : The class name
|
499
|
497
|
# @return a new uid en case of success, False otherwise
|
500
|
498
|
@classmethod
|
501
|
499
|
def insert(cls, datas):
|
502
|
|
- if classname is not None:
|
503
|
|
- class_is = cls.name2class(classname)
|
504
|
|
- if not class_is:
|
505
|
|
- raise LeApiErrors("Error when inserting",{'error':ValueError("The class '%s' was not found"%classname)})
|
506
|
|
- else:
|
507
|
|
- target_cls = classname
|
508
|
|
- else:
|
509
|
|
- target_cls = cls.__name__
|
510
|
|
- query = LeInsertQuery(target_cls)
|
|
500
|
+ query = LeInsertQuery(cls.__name__)
|
511
|
501
|
return query.execute(datas)
|
512
|
502
|
|
513
|
503
|
## @brief Update an instance of LeObject
|
|
@@ -552,38 +542,48 @@ raised when trying to import Datasource"
|
552
|
542
|
#@param uids a list: lists of (fieldname, fieldvalue), with fieldname in cls._uids
|
553
|
543
|
#@returns the number of deleted items
|
554
|
544
|
@classmethod
|
555
|
|
- def delete(cls, uids):
|
|
545
|
+ def delete_bundle(cls, query_filters):
|
556
|
546
|
deleted = 0
|
557
|
|
- for uid in uids:
|
558
|
|
- if len(uid) != len(cls._uid):
|
559
|
|
- raise AttributeError("Wrong number in uid's list, expected %d got %d" % (len(cls._uid), len(uid)))
|
560
|
|
- filters = list()
|
561
|
|
- for field in uid:
|
562
|
|
- if field not in cls._uid:
|
563
|
|
- raise AttributeError("%s is not a uid or a part of uid for %s class" % (field, cls.__name__))
|
564
|
|
- filters.append((field, uid[field]))
|
565
|
|
- try:
|
566
|
|
- query = LeDeleteQuery(cls.__name__, filters)
|
567
|
|
- except Exception as err:
|
568
|
|
- raise err
|
|
547
|
+ try:
|
|
548
|
+ query = LeDeleteQuery(cls.__name__, query_filters)
|
|
549
|
+ except Exception as err:
|
|
550
|
+ raise err
|
569
|
551
|
|
570
|
|
- try:
|
571
|
|
- result = query.execute()
|
572
|
|
- except Exception as err:
|
573
|
|
- raise err
|
574
|
|
- deleted += result
|
|
552
|
+ try:
|
|
553
|
+ result = query.execute()
|
|
554
|
+ except Exception as err:
|
|
555
|
+ raise err
|
|
556
|
+ deleted += result
|
575
|
557
|
return deleted
|
576
|
558
|
|
577
|
559
|
|
578
|
560
|
## @brief Load an instance of LeObject
|
579
|
|
- #@param uid
|
|
561
|
+ #@param uid a list of tuple (uid_field_nane, value) ou a single value
|
580
|
562
|
#@return an instance of a subclass of LeObject
|
581
|
563
|
@classmethod
|
582
|
|
- def load(cls, uid):
|
583
|
|
- uids = cls._uid
|
|
564
|
+ def load(cls, uid_tuples):
|
584
|
565
|
query_filter = list()
|
585
|
|
- for uid in uids:
|
586
|
|
- query_filter.append((uid, '=', cls.data(uid)))
|
|
566
|
+ uids = cls._uid
|
|
567
|
+ if uids.isinstance(tuple):
|
|
568
|
+ if not uid_tuples.isinstance(list):
|
|
569
|
+ raise AttributeError ("In %s:load : uid must be a list of tuple" % cls.__name__)
|
|
570
|
+ elif len(uid_tuples) != len(uids):
|
|
571
|
+ raise AttributeError ("In %s:load : must have %d uid fields" % len(uids))
|
|
572
|
+ for fieldname, fieldvalue in uid_tuples:
|
|
573
|
+ if fieldname in uids:
|
|
574
|
+ dhdl = cls.data_handler(fieldname)
|
|
575
|
+ if dhdl.check_data_value(fieldvalue)[1] is None:
|
|
576
|
+ query_filter.append((fieldname, '=', fieldvalue))
|
|
577
|
+ else:
|
|
578
|
+ raise AttributeError("n %s:load :%s not a valid value for %s" % (fieldvalue, fieldname))
|
|
579
|
+ else:
|
|
580
|
+ raise AttributeError ("In %s:load :%s not a uid field for class %s" % (fieldname, cls.__name__))
|
|
581
|
+ else:
|
|
582
|
+ dhdl = cls.data_handler(uids)
|
|
583
|
+ if dhdl.check_data_value(uid_tuples)[1] is None:
|
|
584
|
+ query_filter.append((uids, '=', uid_tuples))
|
|
585
|
+ else:
|
|
586
|
+ raise AttributeError("n %s:load :%s not a valid value for %s" % (uid_tuples, uids))
|
587
|
587
|
query = LeGetQuery(cls.__name__, query_filter, limit = 1)
|
588
|
588
|
try:
|
589
|
589
|
result=query.execute()
|
|
@@ -604,20 +604,16 @@ raised when trying to import Datasource"
|
604
|
604
|
#@param group list : A list of field names or tuple (FIELDNAME,[ASC | DESC])
|
605
|
605
|
#@param limit int : The maximum number of returned results
|
606
|
606
|
#@param offset int : offset
|
|
607
|
+ #@param Inst
|
607
|
608
|
#@return a list of items (lists of (fieldname, fieldvalue))
|
608
|
609
|
@classmethod
|
609
|
|
- def get(cls, query_filters, field_list=None, order=None, group=None, limit=None, offset=0, classname = None):
|
610
|
|
- if classname is not None:
|
611
|
|
- class_is = cls.name2class(classname)
|
612
|
|
- if not class_is:
|
613
|
|
- raise LeApiErrors("Error when inserting",{'error':ValueError("The class '%s' was not found"%classname)})
|
614
|
|
- else:
|
615
|
|
- target_cls = classname
|
616
|
|
- else:
|
617
|
|
- target_cls = cls.__name__
|
618
|
|
-
|
|
610
|
+ def get(cls, query_filters, field_list=None, order=None, group=None, limit=None, offset=0):
|
|
611
|
+ for uid in cls._uids:
|
|
612
|
+ if uid not in field_list:
|
|
613
|
+ raise AttributeError("In %s:get : Cannot instanciate a LeObject without it's identifier" % cls.__name__)
|
|
614
|
+
|
619
|
615
|
try:
|
620
|
|
- query = LeGetQuery(target_class, query_filter, field_list = field_list, order = order, group = group, limit = limit, offset = offset)
|
|
616
|
+ query = LeGetQuery(cls.__name__, query_filter, field_list = field_list, order = order, group = group, limit = limit, offset = offset)
|
621
|
617
|
except ValueError as err:
|
622
|
618
|
raise err
|
623
|
619
|
|
|
@@ -628,9 +624,12 @@ raised when trying to import Datasource"
|
628
|
624
|
|
629
|
625
|
objects = list()
|
630
|
626
|
for res in result:
|
631
|
|
- objects.append(cls.name2class(res[CLASS_ID_FIELDNAME])(res))
|
|
627
|
+ inst = cls.name2class(res[CLASS_ID_FIELDNAME])(res)
|
|
628
|
+ objects.append(inst)
|
632
|
629
|
|
633
|
630
|
return objects
|
|
631
|
+
|
|
632
|
+
|
634
|
633
|
|
635
|
634
|
|
636
|
635
|
|