Exemple #1
0
def add_tracks(request, artist, album):
    artist = get_object_or_404(Artist, slug__iexact=artist)
    album = get_object_or_404(Album, slug__iexact=album, artist=artist)

    if album.tracks.all():
        #has tracks we redirect to edit
        return HttpResponseRedirect(reverse('edit-tracks', args=[artist.slug, album.slug]))

    TrackFormSet = formset_factory(TrackForm, formset=BaseTrackFormSet, extra=5)
    if request.method == 'POST':
        formset = TrackFormSet(request.POST)
        if formset.is_valid():
            cleaned_data = formset.cleaned_data
            for data in cleaned_data:
                track = Track()
                track.track_number = data['track_number'] 
                track.title = data['title']
                track.duration = data['duration']
                track.uploader = request.user
                track.album = album
                track.save()
                add_object.send(sender=inspect.stack()[0][3], instance=track, action="Add")
                messages.success(request, "Tracks added for %(album)s" % {'album': album})
                return HttpResponseRedirect(reverse('album-detail', args=[artist.slug, album.slug]))
    else:
        formset = TrackFormSet()
    return render_to_response('submissions/addtracks.html', {
        'artist': artist,
        'album': album,
        'formset': formset,
    }, context_instance=RequestContext(request))
Exemple #2
0
def add_artist(request, template='submissions/addartist.html'):
    """
    View for adding new artist to the website.
    """
    user = request.user
    if request.method == 'POST':
        form = ArtistForm(request.POST, request.FILES)
        if form.is_valid():
            cd = form.cleaned_data
            artist = form.save(commit=False) #modelform requires all fields (we need to prefill excluded)
            artist.uploader = user
            artist.is_valid = True #because a user is adding we need to review this first
            artist.save()
            add_object.send(sender=inspect.stack()[0][3], instance=artist, action="Add")
            messages.success(request, "Artist added successfully.")
            return HttpResponseRedirect(reverse('artist-detail', args=[artist.slug]))
    else:
        form = ArtistForm()
    return render_to_response(template, {
        'form': form,
    }, context_instance=RequestContext(request))
Exemple #3
0
def add_link(request, artist, album):
    """
    View for adding an link to the website.
    Allows multiple links to be added via formset.
    """
    artist = Artist.objects.get(slug__iexact=artist)
    album = Album.objects.get(slug__iexact=album, artist=artist)
    LinkFormSet = formset_factory(LinkForm, formset=BaseLinkFormSet)
    if request.method == 'POST':
        formset = LinkFormSet(request.POST)
        if formset.is_valid():
            cleaned_data = formset.cleaned_data
            for data in cleaned_data:
                try:
                    #for every data dict try to save an Link
                    link = Link(
                        url = data['url'],
                        url_type = data['url_type'],
                        bitrate = data['bitrate'],
                        format = data['format'],
                        album = album,
                        hash = gen_hash(data['url']),
                        uploader = request.user,
                    ) 
                    link.save()
                    add_object.send(sender=inspect.stack()[0][3], instance=link, action="Add")
                except IntegrityError:
                    messages.error(request, "It seems there was a duplicate link for this album.")
                    return HttpResponseRedirect(reverse('add-link', args=[artist.slug, album.slug]))
            messages.success(request, "Links added successfully for \"%s\"!" % (album.name,))
            return HttpResponseRedirect(reverse('album-detail', args=[artist.slug, album.slug]))
    else:
        formset = LinkFormSet()
    return render_to_response('submissions/addlink.html', {
        'artist': artist,
        'album': album,
        'formset': formset,
    }, context_instance=RequestContext(request))