MCPcopy
hub / github.com/ponyorm/pony / add

Method add

pony/orm/core.py:3480–3513  ·  view source on GitHub ↗
(wrapper, new_items)

Source from the content-addressed store, hash-verified

3478 return item
3479 @cut_traceback
3480 def add(wrapper, new_items):
3481 obj = wrapper._obj_
3482 attr = wrapper._attr_
3483 cache = obj._session_cache_
3484 if cache is None or not cache.is_alive: throw_db_session_is_over('change collection', obj, attr)
3485 if obj._status_ in del_statuses: throw_object_was_deleted(obj)
3486 with cache.flush_disabled():
3487 reverse = attr.reverse
3488 if not reverse: throw(NotImplementedError)
3489 new_items = attr.validate(new_items, obj)
3490 if not new_items: return
3491 setdata = obj._vals_.get(attr)
3492 if setdata is not None: new_items -= setdata
3493 if setdata is None or not setdata.is_fully_loaded:
3494 setdata = attr.load(obj, new_items)
3495 new_items -= setdata
3496 undo_funcs = []
3497 try:
3498 if not reverse.is_collection:
3499 for item in new_items: reverse.__set__(item, obj, undo_funcs)
3500 else: reverse.reverse_add(new_items, obj, undo_funcs)
3501 except:
3502 for undo_func in reversed(undo_funcs): undo_func()
3503 raise
3504 setdata |= new_items
3505 if setdata.count is not None: setdata.count += len(new_items)
3506 added = setdata.added
3507 removed = setdata.removed
3508 if removed: (new_items, setdata.removed) = (new_items-removed, removed-new_items)
3509 if added: added |= new_items
3510 else: setdata.added = new_items # added may be None
3511
3512 cache.modified_collections[attr].add(obj)
3513 cache.modified = True
3514 @cut_traceback
3515 def __iadd__(wrapper, items):
3516 wrapper.add(items)

Callers 15

pony.jsFile · 0.80
InstanceFunction · 0.80
generate_mappingMethod · 0.80
obj_converterMethod · 0.80
to_jsonMethod · 0.80
from_jsonMethod · 0.80
__init__Method · 0.80
excludeMethod · 0.80
get_user_groupsFunction · 0.80
get_user_rolesFunction · 0.80
get_object_labelsFunction · 0.80
_calc_modified_m2mMethod · 0.80

Calls 9

throwFunction · 0.90
throw_db_session_is_overFunction · 0.85
throw_object_was_deletedFunction · 0.85
flush_disabledMethod · 0.80
reverse_addMethod · 0.80
validateMethod · 0.45
getMethod · 0.45
loadMethod · 0.45
__set__Method · 0.45

Tested by 15

test_1Method · 0.64
setUpClassMethod · 0.64
test_5Method · 0.64
test_8Method · 0.64
test_11Method · 0.64
test_5Method · 0.64
do_testFunction · 0.64
test1aMethod · 0.64
test1bMethod · 0.64
test1cMethod · 0.64
test9Method · 0.64
test_19Method · 0.64