Example #1
0
 def setUp(self):
     super(PlaylistTest, self).setUp()
     dbconfig['lastfm.api_key'] = 'SEKRET_LASTFM_KEY'
     self.dj = User(dj_name='DJ Night Moves', first_name='Steve',
                    last_name='Dolfin', email='*****@*****.**',
                    roles=[auth.roles.DJ])
     self.dj.save()
     self.playlist = ChirpBroadcast()
     (self.stevie,
      self.talking_book,
      self.tracks) = create_stevie_wonder_album_data()
Example #2
0
 def setUp(self):
     dbconfig['lastfm.api_key'] = 'SEKRET_LASTFM_KEY'
     self.client = TestApp(application)
     self.dj = User(dj_name='DJ Night Moves', first_name='Steve',
                    last_name='Dolfin', email='*****@*****.**',
                    roles=[auth.roles.DJ])
     self.dj.save()
     self.playlist = ChirpBroadcast()
     (self.stevie,
      self.talking_book,
      self.tracks) = create_stevie_wonder_album_data()
Example #3
0
 def test_report_ignores_reference_errors(self):
     selector = self.get_selector()
     playlist = ChirpBroadcast()
     stevie, talking_book, tracks = create_stevie_wonder_album_data()
     track = PlaylistTrack(
                 playlist=playlist, 
                 selector=selector,
                 artist=stevie,
                 album=talking_book,
                 track=tracks['You Are The Sunshine Of My Life'],
                 freeform_label='Motown')
     track.put()
     
     # simulate an integrity error.
     # it is unlikely but happened to us after a bad data import.
     stevie.delete()
     talking_book.delete()
     
     from_date = datetime.date.today() - timedelta(days=1)
     to_date = datetime.date.today() + timedelta(days=1)
     
     response = self.client.post(reverse('playlists_report'), {
         'from_date': from_date,
         'to_date': to_date,
         'download': 'Download'
     })
     
     self.assertEquals(response['Content-Type'], 'text/csv; charset=utf-8')
     
     report = csv.reader(StringIO(response.content))
     self.assertEquals(
         ['from_date', 'to_date', 'album_title', 'artist_name', 'label',
          'play_count', 'heavy_rotation', 'light_rotation'],
         report.next())
     self.assertEquals(
         [str(from_date), str(to_date), 
         '__bad_reference__', '__bad_reference__', 'Motown', '1',
         '0', '0'],
         report.next())
Example #4
0
    def test_report_ignores_reference_errors(self):
        selector = self.get_selector()
        playlist = ChirpBroadcast()
        stevie, talking_book, tracks = create_stevie_wonder_album_data()
        track = PlaylistTrack(playlist=playlist,
                              selector=selector,
                              artist=stevie,
                              album=talking_book,
                              track=tracks['You Are The Sunshine Of My Life'],
                              freeform_label='Motown')
        track.put()

        # simulate an integrity error.
        # it is unlikely but happened to us after a bad data import.
        stevie.delete()
        talking_book.delete()

        from_date = datetime.date.today() - timedelta(days=1)
        to_date = datetime.date.today() + timedelta(days=1)

        response = self.client.post(reverse('playlists_report'), {
            'from_date': from_date,
            'to_date': to_date,
            'download': 'Download'
        })

        self.assertEquals(response['Content-Type'], 'text/csv; charset=utf-8')

        report = csv.reader(StringIO(response.content))
        self.assertEquals([
            'from_date', 'to_date', 'album_title', 'artist_name', 'label',
            'play_count', 'heavy_rotation', 'light_rotation'
        ], report.next())
        self.assertEquals([
            str(from_date),
            str(to_date), '__bad_reference__', '__bad_reference__', 'Motown',
            '1', '0', '0'
        ], report.next())
Example #5
0
    def test_report_csv(self):
        selector = self.get_selector()
        playlist = ChirpBroadcast()
        stevie, talking_book, tracks = create_stevie_wonder_album_data()
        track = PlaylistTrack(
                    categories=[HEAVY_ROTATION_TAG],
                    playlist=playlist,
                    selector=selector,
                    artist=stevie,
                    album=talking_book,
                    track=tracks['You Are The Sunshine Of My Life'],
                    freeform_label='Motown')
        track.put()
        # sleep to workaround microtime issues in Windows App Engine SDK
        time.sleep(0.4)
        track = PlaylistTrack(
                    playlist=playlist,
                    selector=selector,
                    freeform_artist_name="Def Leoppard",
                    freeform_album_title="Pyromania",
                    freeform_track_title="Photograph",
                    freeform_label="Geffen")
        track.put()
        time.sleep(0.4)
        track = PlaylistTrack(
                    playlist=playlist,
                    selector=selector,
                    freeform_artist_name="Def Leoppard",
                    freeform_album_title="Pyromania",
                    freeform_track_title="Photograph",
                    freeform_label="Geffen")
        track.put()
        time.sleep(0.4)
        # Heavy rotation:
        track = PlaylistTrack(
                    categories=[LIGHT_ROTATION_TAG],
                    playlist=playlist,
                    selector=selector,
                    freeform_artist_name=u'Ivan Krsti\u0107',
                    freeform_album_title=u'Ivan Krsti\u0107',
                    freeform_track_title=u'Ivan Krsti\u0107',
                    freeform_label=u'Ivan Krsti\u0107')
        track.put()

        from_date = datetime.date.today() - timedelta(days=1)
        to_date = datetime.date.today() + timedelta(days=1)

        response = self.client.post(reverse('playlists_report'), {
            'from_date': from_date,
            'to_date': to_date,
            'download': 'Download'
        })
        
        self.assertEquals(response['Content-Type'], 'text/csv; charset=utf-8')
        
        report = csv.reader(StringIO(response.content))
        self.assertEquals(
            ['from_date', 'to_date', 'album_title', 'artist_name', 'label',
             'play_count', 'heavy_rotation', 'light_rotation'],
            report.next())
        self.assertEquals(
            [str(from_date), str(to_date),
            # in light rotation:
            'Ivan Krsti\xc4\x87', 'Ivan Krsti\xc4\x87', 'Ivan Krsti\xc4\x87',
            '1', '0', '1'],
            report.next())
        self.assertEquals(
            [str(from_date), str(to_date),
            'Pyromania', 'Def Leoppard', 'Geffen', '2', '0', '0'],
            report.next())
        self.assertEquals(
            [str(from_date), str(to_date),
            # is in heavy rotation
            'Talking Book', 'Stevie Wonder', 'Motown', '1', '1', '0'],
            report.next())
Example #6
0
    def test_report_csv(self):
        selector = self.get_selector()
        playlist = ChirpBroadcast()
        stevie, talking_book, tracks = create_stevie_wonder_album_data()
        track = PlaylistTrack(categories=[HEAVY_ROTATION_TAG],
                              playlist=playlist,
                              selector=selector,
                              artist=stevie,
                              album=talking_book,
                              track=tracks['You Are The Sunshine Of My Life'],
                              freeform_label='Motown')
        track.put()
        # sleep to workaround microtime issues in Windows App Engine SDK
        time.sleep(0.4)
        track = PlaylistTrack(playlist=playlist,
                              selector=selector,
                              freeform_artist_name="Def Leoppard",
                              freeform_album_title="Pyromania",
                              freeform_track_title="Photograph",
                              freeform_label="Geffen")
        track.put()
        time.sleep(0.4)
        track = PlaylistTrack(playlist=playlist,
                              selector=selector,
                              freeform_artist_name="Def Leoppard",
                              freeform_album_title="Pyromania",
                              freeform_track_title="Photograph",
                              freeform_label="Geffen")
        track.put()
        time.sleep(0.4)
        # Heavy rotation:
        track = PlaylistTrack(categories=[LIGHT_ROTATION_TAG],
                              playlist=playlist,
                              selector=selector,
                              freeform_artist_name=u'Ivan Krsti\u0107',
                              freeform_album_title=u'Ivan Krsti\u0107',
                              freeform_track_title=u'Ivan Krsti\u0107',
                              freeform_label=u'Ivan Krsti\u0107')
        track.put()

        from_date = datetime.date.today() - timedelta(days=1)
        to_date = datetime.date.today() + timedelta(days=1)

        response = self.client.post(reverse('playlists_report'), {
            'from_date': from_date,
            'to_date': to_date,
            'download': 'Download'
        })

        self.assertEquals(response['Content-Type'], 'text/csv; charset=utf-8')

        report = csv.reader(StringIO(response.content))
        self.assertEquals([
            'from_date', 'to_date', 'album_title', 'artist_name', 'label',
            'play_count', 'heavy_rotation', 'light_rotation'
        ], report.next())
        self.assertEquals(
            [
                str(from_date),
                str(to_date),
                # in light rotation:
                'Ivan Krsti\xc4\x87',
                'Ivan Krsti\xc4\x87',
                'Ivan Krsti\xc4\x87',
                '1',
                '0',
                '1'
            ],
            report.next())
        self.assertEquals([
            str(from_date),
            str(to_date), 'Pyromania', 'Def Leoppard', 'Geffen', '2', '0', '0'
        ], report.next())
        self.assertEquals(
            [
                str(from_date),
                str(to_date),
                # is in heavy rotation
                'Talking Book',
                'Stevie Wonder',
                'Motown',
                '1',
                '1',
                '0'
            ],
            report.next())