Example #1
0
    def test_mark_orphans(self):
        t1 = db.execute('INSERT INTO tracks (title, weight) VALUES (NULL, 1)')
        db.execute('INSERT INTO labels (track_id, label, email) VALUES (?, \'music\', \'nobody\')', (t1, ))
        t2 = db.execute('INSERT INTO tracks (title, weight) VALUES (NULL, 1)')
        db.execute('INSERT INTO labels (track_id, label, email) VALUES (?, \'foobar\', \'nobody\')', (t2, ))

        if not db.Open().mark_orphans(quiet=True):
            self.fail('database.mark_orphans() failed to find tracks.')

        rows = db.fetch('SELECT track_id FROM labels WHERE label = \'orphan\'')
        self.assertEquals(1, len(rows), 'one track must have been labelled orphan, not %u' % len(rows))
        self.assertEquals(t2, rows[0][0], 'wrong track labelled orphan')
Example #2
0
    def test_mark_orphans(self):
        t1 = db.execute('INSERT INTO tracks (title, weight) VALUES (NULL, 1)')
        db.execute('INSERT INTO labels (track_id, label, email) VALUES (?, \'music\', \'nobody\')', (t1, ))
        t2 = db.execute('INSERT INTO tracks (title, weight) VALUES (NULL, 1)')
        db.execute('INSERT INTO labels (track_id, label, email) VALUES (?, \'foobar\', \'nobody\')', (t2, ))

        if not db.Open().mark_orphans(quiet=True):
            self.fail('database.mark_orphans() failed to find tracks.')

        rows = db.fetch('SELECT track_id FROM labels WHERE label = \'orphan\'')
        self.assertEquals(1, len(rows), 'one track must have been labelled orphan, not %u' % len(rows))
        self.assertEquals(t2, rows[0][0], 'wrong track labelled orphan')
Example #3
0
    def test_sticky_labels(self):
        genres = ["rock", "jazz", "calm"]
        for genre in genres:
            for idx in range(10):
                track_id = database.execute(
                    "INSERT INTO tracks (weight, artist, filename) VALUES (1, 'somebody', 'dummy.mp3')"
                )
                database.execute(
                    "INSERT INTO labels (track_id, label, email) VALUES (?, ?, ?)",
                    (
                        track_id,
                        "music",
                        "-",
                    ))
                database.execute(
                    "INSERT INTO labels (track_id, label, email) VALUES (?, ?, ?)",
                    (
                        track_id,
                        genre,
                        "-",
                    ))
                logging.debug("track %u genre: %s" % (track_id, genre))

        logging.debug(database.fetch("SELECT * FROM labels"))

        playlist = {
            "name": "sticky",
            "labels": ["music"],
            "sticky_labels": genres,
        }

        sticky_label, track = self._pick_track(playlist, genres)
        logging.debug("Picked first track %u with labels: %s, sticky=%s" %
                      (track["id"], track.get_labels(), sticky_label))

        # Make sure 100 tracks follow this rule.
        for idx in range(100):
            new_label, track = self._pick_track(playlist, genres)
            self.assertEquals(new_label, sticky_label)
Example #4
0
    def test_sticky_labels(self):
        genres = ["rock", "jazz", "calm"]
        for genre in genres:
            for idx in range(10):
                track_id = database.execute(
                    "INSERT INTO tracks (weight, artist, filename) VALUES (1, 'somebody', 'dummy.mp3')"
                )
                database.execute(
                    "INSERT INTO labels (track_id, label, email) VALUES (?, ?, ?)",
                    (
                        track_id,
                        "music",
                        "-",
                    ))
                database.execute(
                    "INSERT INTO labels (track_id, label, email) VALUES (?, ?, ?)",
                    (
                        track_id,
                        genre,
                        "-",
                    ))
                logging.debug("track %u genre: %s" % (track_id, genre))

        logging.debug(database.fetch("SELECT * FROM labels"))

        playlist = {
            "name": "sticky",
            "labels": ["music"],
            "sticky_labels": genres,
        }

        sticky_label, track = self._pick_track(playlist, genres)
        logging.debug("Picked first track %u with labels: %s, sticky=%s" %
                      (track["id"], track.get_labels(), sticky_label))

        # Make sure 100 tracks follow this rule.
        for idx in range(100):
            new_label, track = self._pick_track(playlist, genres)
            self.assertEquals(new_label, sticky_label)
Example #5
0
def get_voters():
    """Returns information on voters in tuples (email, count, weight)."""
    rows = database.fetch('SELECT v.email, COUNT(*) AS c, k.weight '
        'FROM votes v LEFT JOIN karma k ON k.email = v.email '
        'GROUP BY v.email ORDER BY c DESC, k.weight DESC, v.email')
    return rows