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))
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))
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))