def insertExampleData(self): self.getSession() g1 = Group("Group 1") g2 = Group("Group 2") g2.fav = True t1 = Track("Bob", "Hello World!", False, 1) t2 = Track("Joe", "How are you doing?", True, 3) t3 = Track("Jim", "Can't stop dancing", False, 5) t4 = Track("Tom", "A simple melody", True, 9) gt1_1 = GroupTrack(1, 0, 100) gt1_1.track = t1 gt1_2 = GroupTrack(2, 100, 200) gt1_2.track = t2 g1.grouptracks.append(gt1_1) g1.grouptracks.append(gt1_2) gt2_2 = GroupTrack(1, 0, 200) gt2_2.track = t2 gt2_3 = GroupTrack(2, 200, 150) gt2_3.track = t3 g2.grouptracks.append(gt2_2) g2.grouptracks.append(gt2_3) self.session.add_all([g1, g2, t1, t2, t3, t4, gt1_1, gt1_2, gt2_2, gt2_3]) self.session.commit()
def insertrows(self, position, rows): """ only used to create new rows (would work properly for "add to group" imo) """ if self.lst == None: self.lst = [] self._checksession() if self.gtmode: grp = self.session.query(Group).filter(Group.name==self.prevgroup).one() self.session.add(grp) for row in range(position, position+rows): nt = Track("","",True,0) ngt = GroupTrack(int(row) + 1, 0, 0) ngt.track = nt grp.grouptracks.append(ngt) self.lst.insert(row, ngt) self.stats.add(nt) self.session.add(nt) self.session.add(ngt) else: for row in range(position, position+rows): nt = Track("","",True,0) self.stats.add(nt) self.lst.insert(row, nt) self.session.add(nt) self.session.commit()
def addtogroup(self, rows, gid, force=False): ''' add tracks given by indices in rows to a group given by gid do not add the track if the group already contains it ''' gg = self.session.query(Group).filter(Group.idno == gid).one() tids = {} lastno = 0 # determine new number for the track for gt in gg.grouptracks: if gt.no > lastno: lastno = gt.no tids[gt.track.idno] = None lastno += 1 self._checksession() addstat = False if self.gtmode: addstat = (gg == self.lst[0].group) # duplicities (and their captions) - tracks that are already in the group d = [] dc = "" for rr in rows: tt = self.lst[rr] if self.gtmode: tt = tt.track if tt.idno in tids and not force: d.append(rr) dc += "\t" + tt.menucaption() + "\n" continue gt = GroupTrack(lastno, 0, 0) gt.track = tt gg.grouptracks.append(gt) if addstat: self.stats.add(tt,t=False) self.session.add(gt) lastno += 1 self.session.commit() dc = dc.strip() return d, dc