Skip to content

Commit

Permalink
Include instruments in diff
Browse files Browse the repository at this point in the history
And count db versions starting from most recent
  • Loading branch information
Diego Ristè committed Dec 10, 2019
1 parent 48621ac commit 2ac324a
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions QGL/ChannelLibraries.py
Original file line number Diff line number Diff line change
Expand Up @@ -271,13 +271,12 @@ def diff(self, name1, name2, index1=1, index2=1):
index1, index2: by default, loading the most recent instances for the given names. Specifying index1/2 = 2 will select the second most recent instance etc."""
'''
cdb = Channels.ChannelDatabase
db1 = self.session.query(cdb).filter(cdb.label==name1)[-1*index1]
db2 = self.session.query(cdb).filter(cdb.label==name2)[-1*index2]
db1 = self.session.query(cdb).filter(cdb.label==name1).order_by(cdb.time.desc())[-1*index1]
db2 = self.session.query(cdb).filter(cdb.label==name2).order_by(cdb.time.desc())[-1*index2]
copied_db1 = bbndb.deepcopy_sqla_object(db1)
copied_db2 = bbndb.deepcopy_sqla_object(db2)
dict_1 = {c.label: c for c in copied_db1.channels}
dict_2 = {c.label: c for c in copied_db2.channels}

dict_1 = {c.label: c for c in copied_db1.channels + copied_db1.all_instruments()}
dict_2 = {c.label: c for c in copied_db2.channels + copied_db2.all_instruments()}
def iter_diff(value_iter1, value_iter2, ct, label=''):
table_code = ''
for key, key2 in zip(value_iter1, value_iter2):
Expand All @@ -299,10 +298,10 @@ def iter_diff(value_iter1, value_iter2, ct, label=''):
continue
if (cmp1 == None) or (cmp2 == None) or ((isinstance(cmp1, dict) or isinstance(cmp1, list)) and len(cmp1) == 0):
continue
if isinstance(cmp1, bbndb.qgl.DatabaseItem) or isinstance(cmp1, bbndb.qgl.Channel):
if isinstance(cmp1, (bbndb.qgl.DatabaseItem, bbndb.qgl.Channel, bbndb.qgl.Instrument)):
cmp1 = cmp1.__dict__
cmp2 = cmp2.__dict__
if isinstance(cmp1, dict) or isinstance(cmp1, list) or isinstance(cmp1, bbndb.qgl.DatabaseItem) or isinstance(cmp1, bbndb.qgl.Channel):
if isinstance(cmp1, (dict, list, bbndb.qgl.DatabaseItem, bbndb.qgl.Channel, bbndb.qgl.Instrument)):
if ct<1: # up to 2 recursion levels for now, to avoid infinite loops for bidirectional relations
ct+=1
table_code += iter_diff(cmp1, cmp2, ct, label=label)
Expand Down

1 comment on commit 2ac324a

@dieris
Copy link
Collaborator

@dieris dieris commented on 2ac324a Dec 10, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ranzani now you can also compare yoko values :)

Please sign in to comment.