Ejemplo n.º 1
0
def track_detail(request, track_slug, username=None):
    params = {'slug': track_slug}
    params['user__username'] = username
    track = get_object_or_404(get_track_model(), **params)
    return render_to_response("audiotracks/detail.html",
                              {'username': username, 'track': track},
                              context_instance=RequestContext(request))
Ejemplo n.º 2
0
def track_detail(request, track_slug, username=None):
    params = {'slug': track_slug}
    params['user__username'] = username
    track = get_object_or_404(get_track_model(), **params)
    return render(request, "audiotracks/detail.html", {
        'username': username, 'track': track
    })
Ejemplo n.º 3
0
def index(request):
    
    names = get_track_model().objects.values('artist').annotate(total=Count('artist')).distinct().order_by('artist')
    
    ncols = 3
    
    columns = []
    
    count = names.count()
    
    csize = count / ncols
    
    remains = count % ncols
    
    current = 0
    
    for _ in range(ncols):
        if current > count:
            break
        end = current + csize
        if remains:
            end += 1
            remains -= 1
            
        if end > count:
            end = count
        
        columns.append(names[current:end])
        current = end   
    
    
    return render_to_response("artist/index.html", { 'artists': names, 'columns': columns }, context_instance = RequestContext(request))
Ejemplo n.º 4
0
def track_detail(request, track_slug, username=None):
    params = {'slug': track_slug}
    params['user__username'] = username
    track = get_object_or_404(get_track_model(), **params)
    return render(request, "audiotracks/detail.html", {
        'username': username,
        'track': track
    })
Ejemplo n.º 5
0
    def clean_slug(self):
        new_slug = self.cleaned_data['slug']
        if new_slug != self.instance._original_slug:
            params = {'slug': new_slug}
            params['user'] = self.instance.user
            if get_track_model().objects.filter(**params).count():
                raise forms.ValidationError("This URL is already taken.")

        return new_slug
Ejemplo n.º 6
0
def add_like(request, track_slug, username=None):
    track = get_track_model().objects.get(slug=track_slug)
    likes = Like.objects.filter(Q(user_id=request.user.id) & Q(track=track))
    if (likes.count() == 0):
        like = Like()
        like.user = request.user
        like.track = track
        like.save()

    return HttpResponseRedirect(urlresolvers.reverse('track_detail', args=[username, track_slug]))
Ejemplo n.º 7
0
def add_track_in_playlist(request, track_slug, username=None):
    track = get_track_model().objects.get(slug=track_slug)
    playlist = get_playlist(request)
    if playlist == None:
        playlist = Playlist(user=request.user, name=u'Плейлист_' + request.user.username)
        playlist.save()
    if not track in playlist.tracks.all():
        playlist.tracks.add(track)
    playlist.save()
    return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
Ejemplo n.º 8
0
def artist(request, name):

    tracks = get_track_model().objects.filter(
        artist=name).order_by('-created_at')

    return render_to_response("artist/artist.html", {
        'tracks': tracks,
        'artist': name
    },
                              context_instance=RequestContext(request))
Ejemplo n.º 9
0
def add_comment(request, track_slug, username=None):
    if request.method == "POST":
        track = get_track_model().objects.get(slug=track_slug)
        if ('comment' in request.POST and request.POST['comment']):
            comment = Comment(text=request.POST['comment'], user=request.user, track=track)
            comment.save()

    #if p.has_key('text') and p['text']:
     #   comment = Comment(user=request.user, track=track, text=p['text'], rating=0)
      #  comment.save()

    return HttpResponseRedirect(urlresolvers.reverse('track_detail', args=[username, track_slug]))
Ejemplo n.º 10
0
def index(request, username=None, page_number=None):
    tracks = get_track_model().objects
    if username:
        tracks = tracks.filter(user__username=username)
    tracks = tracks.order_by('-created_at').all()
    page, tracks = paginate(tracks, page_number)
    base_path = urlresolvers.reverse(
        'audiotracks',
        args=[username] if username is not None else [])
    return render(request, "audiotracks/latest.html", {
        'username': username, 'tracks': tracks, 'page': page,
        'base_path': base_path,
    })
Ejemplo n.º 11
0
def m3u(request, username=None):
    tracks = get_track_model().objects
    if username:
        tracks = tracks.filter(user__username=username)
    tracks = tracks.order_by('-created_at').all()
    response = HttpResponse(content_type="audio/x-mpequrl")
    site = RequestSite(request)
    filename = "playlist-%s.m3u" % (site.name if username is None
                                    else username)
    response['Content-Disposition'] = 'attachment; filename=%s' % filename
    for track in tracks:
        url = 'http://%s/%s' % (site.domain, track.audio_file.url.strip("/"))
        response.write(url + "\n")
    return response
Ejemplo n.º 12
0
def m3u(request, username=None):
    tracks = get_track_model().objects
    if username:
        tracks = tracks.filter(user__username=username)
    tracks = tracks.order_by('-created_at').all()
    response = HttpResponse(content_type="audio/x-mpequrl")
    site = RequestSite(request)
    filename = "playlist-%s.m3u" % (site.name
                                    if username is None else username)
    response['Content-Disposition'] = 'attachment; filename=%s' % filename
    for track in tracks:
        url = 'http://%s/%s' % (site.domain, track.audio_file.url.strip("/"))
        response.write(url + "\n")
    return response
Ejemplo n.º 13
0
def search_track(request, username=None, page_number=None):
    if ('q' in request.GET and request.GET['q']):
        q = request.GET['q']
        tracks = get_track_model().objects.filter(Q(artist__name__icontains=q) | Q(title__icontains=q))
        if username:
            tracks = tracks.filter(user__username=username)
        tracks = tracks.order_by('-created_at').all()
        page, tracks = paginate(tracks, page_number)
        base_path = urlresolvers.reverse(
            'search_track',
            args=[username] if username is not None else [])
        return render_to_response("audiotracks/searchresults.html", {
            'username': username, 'tracks': tracks, 'page': page,
            'base_path': base_path, 'q': q,
        }, context_instance=RequestContext(request))
Ejemplo n.º 14
0
def index(request, username=None, page_number=None):
    tracks = get_track_model().objects
    if username:
        tracks = tracks.filter(user__username=username)
    tracks = tracks.order_by('-created_at').all()
    page, tracks = paginate(tracks, page_number)
    base_path = urlresolvers.reverse(
        'audiotracks', args=[username] if username is not None else [])
    return render(
        request, "audiotracks/latest.html", {
            'username': username,
            'tracks': tracks,
            'page': page,
            'base_path': base_path,
        })
Ejemplo n.º 15
0
def track_detail(request, track_slug, username=None):
    params = {'slug': track_slug}
    params['user__username'] = username
    track = get_object_or_404(get_track_model(), **params)
    comments = Comment.objects.filter(track_id=track.id)

    likes = Like.objects.filter(Q(user_id=request.user.id) & Q(track=track))
    if (likes.count() > 0):
        like = likes[0]
    else:
        like = None
    likeCount = Like.objects.filter(track=track).count()

    playlist = get_playlist(request)
    return render_to_response("audiotracks/detail.html",
                              {'username': username, 'track': track, 'comments': comments,
                               'like': like, 'likeCount': likeCount,
                               'playlist': playlist},
                              context_instance=RequestContext(request))
Ejemplo n.º 16
0
def index(request, username=None, page_number=None):
    tracks = get_track_model().objects
    if request.method == 'GET' and 'search_text' in request.GET:
        search_text=request.GET['search_text']
        if search_text=="" or search_text==None:
            if username:
                tracks = tracks.filter(user__username=username)
            tracks = tracks.order_by('-created_at').all()
            page, tracks = paginate(tracks, page_number)
            base_path = urlresolvers.reverse(
                'audiotracks',
                args=[username] if username is not None else [])
            return render_to_response("audiotracks/latest.html", {
                'username': username, 'tracks': tracks, 'page': page,
                'base_path': base_path,
            }, context_instance=RequestContext(request))
        else:
            if username:
                tracks = tracks.filter(Q(user__username=username) | Q(title__search=search_text) | Q(artist__search=search_text))
            tracks = tracks.order_by('-created_at').filter(Q(title__search=search_text) | Q(artist__search=search_text))
            print tracks
            page, tracks = paginate(tracks, page_number)
            base_path = urlresolvers.reverse(
                'audiotracks',
                args=[username] if username is not None else [])
            return render_to_response("audiotracks/latest.html", {
                'username': username, 'tracks': tracks, 'page': page,
                'base_path': base_path,'search_text':search_text,
            }, context_instance=RequestContext(request))

   
    else:
        if username:
            tracks = tracks.filter(user__username=username)
        tracks = tracks.order_by('-created_at').all()
        page, tracks = paginate(tracks, page_number)
        base_path = urlresolvers.reverse(
            'audiotracks',
            args=[username] if username is not None else [])
        return render_to_response("audiotracks/latest.html", {
            'username': username, 'tracks': tracks, 'page': page,
            'base_path': base_path,
        }, context_instance=RequestContext(request))
Ejemplo n.º 17
0
def top_tracks(request, username=None, page_number=None):
    tracks = get_track_model().objects.all()
    tracksAndLikes = {track: Like.objects.filter(track=track).count() for track in tracks}
    tracksAndLikes = OrderedDict(sorted(tracksAndLikes.items(), key=lambda x:x[1]))
    tracks = tracksAndLikes.keys()
    likes = tracksAndLikes.values()
    tracks.reverse()
    likes.reverse()
    if (len(tracks) > 100):
        tracks = tracks[:100]
        likes = likes[:100]
    page, tracks = paginate(tracks, page_number)
    playlist = get_playlist(request)
    base_path = urlresolvers.reverse(
        'top_tracks',
        args=[username] if username is not None else [])
    return render_to_response("audiotracks/top_100.html", {
        'username': username, 'tracks': tracks, 'page': page, 'playlist':playlist,
        'base_path': base_path,
    }, context_instance=RequestContext(request))
Ejemplo n.º 18
0
def index(request):

    names = get_track_model().objects.values('artist').annotate(
        total=Count('artist')).distinct().order_by('artist')

    ncols = 3

    columns = []

    count = names.count()

    csize = count / ncols

    remains = count % ncols

    current = 0

    for _ in range(ncols):
        if current > count:
            break
        end = current + csize
        if remains:
            end += 1
            remains -= 1

        if end > count:
            end = count

        columns.append(names[current:end])
        current = end

    return render_to_response("artist/index.html", {
        'artists': names,
        'columns': columns
    },
                              context_instance=RequestContext(request))
Ejemplo n.º 19
0
def artist(request, name):
    
    tracks = get_track_model().objects.filter(artist = name).order_by('-created_at')
    
    return render(request, "artist/artist.html", {'tracks': tracks, 'artist': name })
Ejemplo n.º 20
0
def delete_track_from_playlist(request, track_slug, username=None):
    track = get_track_model().objects.get(slug=track_slug)
    playlist = get_playlist(request)
    playlist.tracks.remove(track)
    playlist.save()
    return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
Ejemplo n.º 21
0
from django.contrib import admin
from audiotracks.models import get_track_model


class TrackAdmin(admin.ModelAdmin):
    pass


admin.site.register(get_track_model(), TrackAdmin)
Ejemplo n.º 22
0
def artist(request, name):
    
    tracks = get_track_model().objects.filter(artist = name).order_by('-created_at')
    
    return render_to_response("artist/artist.html", {'tracks': tracks, 'artist': name }, context_instance = RequestContext(request))
Ejemplo n.º 23
0
#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import mimetypes

from django.conf import settings
from django.contrib.syndication.views import Feed
from django.contrib.auth.models import User
from django.shortcuts import get_object_or_404
from django.utils.translation import ugettext_lazy as _
from django.contrib.sites.models import Site

from audiotracks.models import get_track_model
Track = get_track_model()

ITEMS_PER_FEED = getattr(settings, 'AUDIOTRACKS_PODCAST_LIMIT', 10)


class AllTracks(Feed):

    def link(self):
        return self.request.build_absolute_uri("/")

    def title(self):
        return _("%s Podcast") % self._get_site_name()

    def description(self):
        return _("All audio tracks posted on %s") % self._get_site_name()

    def get_object(self, request):
        self.request = request
Ejemplo n.º 24
0
class ArtistAdmin(admin.ModelAdmin):
    list_display = ["name"]
    search_fields = ["name"]


class GenreAdmin(admin.ModelAdmin):
    list_display = ["name"]
    search_fields = ["name"]


class PlaylistAdmin(admin.ModelAdmin):
    list_display = ["name", "user"]
    search_fields = ["user", "name"]


class CommentAdmin(admin.ModelAdmin):
    list_display = ["text", "user", "track"]
    search_fields = ["user", "track", "text"]


class LikeAdmin(admin.ModelAdmin):
    list_display = ["track", "user"]
    search_fields = ["track", "user"]

admin.site.register(get_track_model(), TrackAdmin)
admin.site.register(Artist, ArtistAdmin)
admin.site.register(Genre, GenreAdmin)
admin.site.register(Playlist, PlaylistAdmin)
admin.site.register(Comment, CommentAdmin)
admin.site.register(Like, LikeAdmin)