Skip to content

Commit

Permalink
Revert "session.merge"
Browse files Browse the repository at this point in the history
This reverts commit ac81381.
  • Loading branch information
rienafairefr committed Jul 21, 2017
1 parent ac81381 commit 823adc6
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 12 deletions.
19 changes: 12 additions & 7 deletions pynYNAB/ObjClient.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ def update_from_api_changed_entitydicts(self, changed_entitydicts, update_keys=N
newlist = []
if changed_entitydicts[listfield_name] is not None:
for entitydict in changed_entitydicts[listfield_name]:
entitydict['parent_id'] = self.obj.id
newlist.append(self.obj.listfields[listfield_name].from_apidict(entitydict))
modified_entitydicts[listfield_name] = newlist
for scalarfield_name in self.obj.scalarfields:
Expand All @@ -47,19 +46,25 @@ def update_from_api_changed_entitydicts(self, changed_entitydicts, update_keys=N
self.update_from_changed_entities(modified_entitydicts)

def update_from_changed_entities(self, changed_entities):
to_add =[]
for name in changed_entities:
value = changed_entities[name]
if not isinstance(value, list):
continue
for incoming_obj in value:
if incoming_obj.is_tombstone:
self.session.delete(incoming_obj)
current_obj = self.session.query(self.obj.listfields[name]).get(incoming_obj.id)
if current_obj is not None:
if incoming_obj.is_tombstone:
self.session.delete(current_obj)
else:
self.session.merge(incoming_obj)
else:
self.session.merge(incoming_obj)
attr = getattr(self.obj,name)
attr.dirty = True

if not incoming_obj.is_tombstone:
incoming_obj.parent = self.obj
to_add.append(incoming_obj)
self.session.add_all(to_add)
self.session.commit()
pass

def update_from_sync_data(self, sync_data, update_keys=None):
self.update_from_api_changed_entitydicts(sync_data['changed_entities'],update_keys)
Expand Down
6 changes: 1 addition & 5 deletions testscripts/test_merge.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import unittest

from sqlalchemy import create_engine

from pynYNAB.ClientFactory import nYnabClientFactory
from pynYNAB.schema import BudgetVersion
from pynYNAB.schema import Transaction
Expand Down Expand Up @@ -48,8 +46,6 @@ def dorequest(self, request_data, opname):

connection = DummyConnection()
connection.transactions=[Transaction(memo=str(i)) for i in range(500)]
#engine= create_engine('sqlite:///:memory:',echo=True)
engine= create_engine('sqlite:///:memory:')
client = nYnabClientFactory(engine=engine).create_client(connection=connection, budget_name='Test', sync=False)
client = nYnabClientFactory().create_client(connection=connection, budget_name='Test', sync=False)
client.sync()
assert (client.budget.be_transactions == connection.transactions)

0 comments on commit 823adc6

Please sign in to comment.