示例#1
0
    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()
示例#2
0
    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()
示例#3
0
    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