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))
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 })
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))
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
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]))
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'))
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))
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]))
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, })
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
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))
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, })
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))
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))
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))
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))
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 })
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'))
from django.contrib import admin from audiotracks.models import get_track_model class TrackAdmin(admin.ModelAdmin): pass admin.site.register(get_track_model(), TrackAdmin)
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))
#!/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
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)