Esempio n. 1
0
def mixtape_edit(request, tracklist_id):

    context = get_rankings(request)
    context.update(get_nav_context())

    tracklist = get_object_or_404(Tracklist, pk=tracklist_id)
    if tracklist.owner.user == request.user:
        if request.POST:
            title = request.POST.get('title')
            if title:
                tracklist.title = title

            string_tags = request.POST.get('tags')
            tracklist.tags.clear()
            if string_tags:
                tags = parseTags(string_tags)
                for tag_name in tags:
                    if Tag.objects.filter(name=tag_name):
                        tag = get_object_or_404(Tag, name=tag_name)
                        tracklist.tags.add(tag)
                    else:
                        tag = Tag(name=tag_name)
                        tag.save()
                        tracklist.tags.add(tag)

            for i, track in enumerate(tracklist.tracks_initial.all()):
                url = request.POST.get('url_'+str(i+1))
                validate = URLValidator()
                try:
                    validate(url)
                    track.url = url
                    track.artist = request.POST.get('artist_'+str(i+1))
                    track.name = request.POST.get('name_'+str(i+1))
                    track.save()
                except ValidationError, e:
                    tracklist_queryset = Tracklist.objects.all()
                    tracklist_list = tracklist_queryset.distinct().order_by('-date_latest_edit')[:10]
                    context.update({
                        'error_message_url': "Your track url is not valid. Please try again!",
                        'tracklist':tracklist,
                        })
                    return render_to_response('hip_engine/mixtape_edit.html', context, context_instance=RequestContext(request))

            tracklist.save()

            return HttpResponseRedirect(reverse('hip_engine.views.mixtape_display', args=(tracklist_id,)))
        
        context.update({"tracklist":tracklist,})
        return render_to_response('hip_engine/mixtape_edit.html', context, context_instance=RequestContext(request))
Esempio n. 2
0
def mixtape_create(request):
    userto = request.POST.get('tracklist-userto')
    if not userto:
        profile_me = request.user.get_profile()
        profile_queryset = request.user.get_profile().get_following()
        tracklist_queryset = Tracklist.objects.filter(owner__in=profile_queryset)|Tracklist.objects.filter(userto__in=profile_queryset)|profile_me.tracklists_created.all()|profile_me.tracklists_contributed.all()
        tracklist_list = tracklist_queryset.distinct().order_by('-date_latest_edit')[:10]

        context = {
            'tracklist_list':tracklist_list,
            'error_message_userto': "You must select at least one contributor. Click the 'New Mixtape' button to start over.",
        }
        context.update(get_generic_context(request))
        context.update(get_rankings(request))

        return render_to_response('hip_engine/feed.html', context, context_instance=RequestContext(request))

    tracklist_form = TracklistForm(request.POST, prefix='tracklist', username=request.user.username)
    if tracklist_form.is_valid():
        tracklist = tracklist_form.save()
        for i_str in ["_1","_2","_3"]:
                url = request.POST.get('url'+i_str)
                artist = request.POST.get('artist'+i_str)
                name = request.POST.get('name'+i_str)
                if url:
                    validate = URLValidator()
                    try:
                        validate(url)
                        track = Track(url=url)
                        if artist:
                            track.artist = artist
                        if name:
                            track.name = name
                        track.save()
                        tracklist.tracks_initial.add(track)
                    except ValidationError, e:
                        tracklist_queryset = Tracklist.objects.all()
                        tracklist_list = tracklist_queryset.distinct().order_by('-date_latest_edit')[:10]
                        context = {
                            'tracklist_form':tracklist_form,
                            'tracklist_list':tracklist_list,
                            'error_message_url': "Some track urls are invalid, please check them. Click the 'New Mixtape' button to start over.",
                        }
                        context.update(get_nav_context())
                        context.update(get_rankings(request))

                        return render_to_response('hip_engine/feed.html', context, context_instance=RequestContext(request))
    
        title = request.POST.get('title')
        if title:
            tracklist.title = title

        event = Event(main_profile = request.user.get_profile(), event_type = "creation")
        event.save()
        tracklist.latest_event = event
        tracklist.date_latest_edit = timezone.now()

        string_tags = request.POST.get('tags')
        if string_tags:
            tags = parseTags(string_tags)
            for tag_name in tags:
                if Tag.objects.filter(name=tag_name):
                    tag = get_object_or_404(Tag, name=tag_name)
                    tracklist.tags.add(tag)
                else:
                    tag = Tag(name=tag_name)
                    tag.save()
                    tracklist.tags.add(tag)

        tracklist.save()