Esempio n. 1
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))
Esempio n. 2
0
 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)