Example #1
0
def report_playlist(request, template='playlists/reports.html'):
    vars = {}

    # report vars
    items = None
    fields = REPORT_FIELDS

    # default report
    if request.method == 'GET':
        to_date = datetime.now().date()
        from_date = to_date - timedelta(days=1)
        items = query_group_by_track_key(from_date, to_date)

        # default form
        form = PlaylistReportForm({'from_date': from_date, 'to_date': to_date})

    # check form data post
    elif request.method == 'POST':

        # generic search form
        form = PlaylistReportForm(data=request.POST)
        if form.is_valid():
            from_date = form.cleaned_data['from_date']
            to_date = form.cleaned_data['to_date']

            # special case to download report
            if request.POST.get('download') == 'Download':
                fname = "chirp-play-count_%s_%s" % (from_date, to_date)
                return http_send_csv_file(
                    fname, fields,
                    query_group_by_track_key(from_date, to_date))

            # generate report from date range
            if request.POST.get('search') == 'Search':
                items = query_group_by_track_key(from_date, to_date)

    # template vars
    vars['form'] = form

    return render_to_response(template,
                              vars,
                              context_instance=RequestContext(request))
Example #2
0
    def test_report_dates(self):
        selector = self.get_selector()
        playlist = ChirpBroadcast()

        def create_track(artist, album, track, label):
            track = PlaylistTrack(
                        playlist=playlist,
                        selector=selector,
                        freeform_artist_name=artist,
                        freeform_album_title=album,
                        freeform_track_title=track,
                        freeform_label=label)
            track.put()
            return track

        # default date
        d = datetime.datetime(2010,01,10,1,1,1)

        # album 'a', will be played twice
        albums = ['a','b','c','a']
        tracks = ['a','b','c']
        for album in albums:
            for track in tracks:
                s = "%s_%s" % (album,track)
                t = create_track("artist_"+s, "album_"+album, "track_"+track, "label_"+s)
                t.established = d
                t.put()

            # change date so each album is played once in a day
            # total of len(tracks) per day
            d = d - timedelta(days=1)

        # run report check against expected counts
        total_tracks = len(albums) * len(tracks)

        # date range to get all records
        from_date = datetime.datetime(2010,01,01,0,0,0)
        to_date = datetime.datetime(2010,01,20,0,0,0)

        # test query object recs
        pl = playlists_views.filter_tracks_by_date_range(from_date, to_date)
        self.assertEquals(total_tracks, pl.count())

        # test group by query, expect a total of 9 recs since album_a was played twice
        items = playlists_views.query_group_by_track_key(from_date, to_date)
        for i in items:
            if i['album_title'] is 'album_a':
                self.assertEquals(i['play_count'], 2)
        self.assertEquals(len(items), 9)

        # check timestamp is set correctly for same date range
        from_date = to_date = datetime.datetime(2010,01,10,0,0,0)
        pl = playlists_views.filter_tracks_by_date_range(from_date, to_date)
        self.assertEquals(len(tracks), pl.count())
Example #3
0
    def test_report_dates(self):
        selector = self.get_selector()
        playlist = ChirpBroadcast()

        def create_track(artist, album, track, label):
            track = PlaylistTrack(playlist=playlist,
                                  selector=selector,
                                  freeform_artist_name=artist,
                                  freeform_album_title=album,
                                  freeform_track_title=track,
                                  freeform_label=label)
            track.put()
            return track

        # default date
        d = datetime.datetime(2010, 01, 10, 1, 1, 1)

        # album 'a', will be played twice
        albums = ['a', 'b', 'c', 'a']
        tracks = ['a', 'b', 'c']
        for album in albums:
            for track in tracks:
                s = "%s_%s" % (album, track)
                t = create_track("artist_" + s, "album_" + album,
                                 "track_" + track, "label_" + s)
                t.established = d
                t.put()

            # change date so each album is played once in a day
            # total of len(tracks) per day
            d = d - timedelta(days=1)

        # run report check against expected counts
        total_tracks = len(albums) * len(tracks)

        # date range to get all records
        from_date = datetime.datetime(2010, 01, 01, 0, 0, 0)
        to_date = datetime.datetime(2010, 01, 20, 0, 0, 0)

        # test query object recs
        pl = playlists_views.filter_tracks_by_date_range(from_date, to_date)
        self.assertEquals(total_tracks, pl.count())

        # test group by query, expect a total of 9 recs since album_a was played twice
        items = playlists_views.query_group_by_track_key(from_date, to_date)
        for i in items:
            if i['album_title'] is 'album_a':
                self.assertEquals(i['play_count'], 2)
        self.assertEquals(len(items), 9)

        # check timestamp is set correctly for same date range
        from_date = to_date = datetime.datetime(2010, 01, 10, 0, 0, 0)
        pl = playlists_views.filter_tracks_by_date_range(from_date, to_date)
        self.assertEquals(len(tracks), pl.count())
def report_playlist(request, template='playlists/reports.html'):
    vars = {}

    # report vars
    items = None
    fields = REPORT_FIELDS

    # default report
    if request.method == 'GET':
        to_date = datetime.now().date()
        from_date = to_date - timedelta(days=1)
        items = query_group_by_track_key(from_date, to_date)

        # default form
        form = PlaylistReportForm({'from_date':from_date, 'to_date':to_date})

    # check form data post
    elif request.method == 'POST':

        # generic search form
        form = PlaylistReportForm(data=request.POST)
        if form.is_valid():
            from_date = form.cleaned_data['from_date']
            to_date = form.cleaned_data['to_date']


            # special case to download report
            if request.POST.get('download') == 'Download':
                fname = "chirp-play-count_%s_%s" % (from_date, to_date)
                return http_send_csv_file(fname, fields, query_group_by_track_key(from_date, to_date))

            # generate report from date range
            if request.POST.get('search') == 'Search':
                items = query_group_by_track_key(from_date, to_date)

    # template vars
    vars['form'] = form

    return render_to_response(template, vars,
            context_instance=RequestContext(request))