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))
def save(self, *args, **kwargs): if not self.hash: self.hash = gen_hash(self.id) if self.is_deleted: self.url = self.url + u" (Deleted)" super(Link, self).save(*args, **kwargs)