示例#1
0
def ajax_add_link(request, link_type, obj_id):
    ''' 
    Formulario que agrega/edita links en AJAX
    ''' 
    if link_type == 'episode':
        episode = get_object_or_404(
            Episode,
            id=obj_id
        )
    elif link_type == 'season':
        season = get_object_or_404(
            Season,
            id=obj_id
        )
    if link_type == 'episode':
        Form = LinkForm
        link_info = {
            'episode': episode,
            'season': episode.season,
            'serie': episode.season.serie,
            'link_type': 'episode',
        }
    elif link_type == 'season':
        Form = LinkSeasonForm 
        link_info = {
            'season': season,
            'serie': season.serie,
            'link_type': 'season',
        }
    # Si es para editar, devolvemos la instancia del link ya existente ;)
    # Esto es solo para presentar el form, para el post viene mas adelante...
    if request.method == 'GET' and request.GET.get('edit') and request.GET.get('linkid'):
        linkid = request.GET.get('linkid')
        if link_type == 'episode':
            link = Link.objects.get(pk=linkid)
        elif link_type == 'season':
            link = SeasonLink.objects.get(pk=linkid)
        if request.user.username == link.user:
            form = Form(instance=link) 
            link_info.update({ 'form': form, 'edit': 'yes', 'link': link, })
            return link_info
    # Este es el formulario inicial, si el request.method es GET
    # pre-populamos con el episodio, que eso ya lo tenemos de la URL
    if request.method == 'GET':
        if link_type == 'episode':
            form = Form(initial={ 'episode':episode, 'url':'http://', }) 
        elif link_type == 'season':
            form = Form(initial={ 'season':season, 'url':'http://', }) 
        link_info.update({ 'form': form, })
        return link_info
    # Cuando se envia el formulario...
    if request.method == 'POST':
        # Capturamos lo que nos pasa, agregamos el episode
        # fecha de publicacion y usuario que hace la peticion
        user = User.objects.get(username=request.user.username)
        now = datetime.now()
        data = {
            'url': request.POST['url'], 
            'audio_lang': request.POST['audio_lang'], 
            'subtitle': request.POST['subtitle'], 
            'user': user,
            'pub_date': now,
        } 
        if link_type == 'episode':
            data.update({'episode': episode.pk}) 
            form = LinkForm(data)
        elif link_type == 'season':
            data.update({'season': season.pk}) 
            form = LinkSeasonForm(data)
        link_info.update({'form': form})
        if form.is_valid():
            # Comprobamos que el form sea correcta, lo procesamos
            if not form.cleaned_data['url'].startswith('http://'):  # TODO: agregar magnet/ed2k, otros URIs
                messages.error(request, 'URL invalida')
                return { 'mensaje' : 'Invalida' }
            # Audio Lang, Subtitle y Episode hay que pasarlos como instancias
            # Episode ya lo tenemos, vamos a buscar audio_lang
            lang = Languages.objects.get(pk=data['audio_lang'])
            # si en el POST encontramos el edit, pues esta editando :S
            if request.GET.get('edit'):
                if link_type == 'episode':
                    link = Link.objects.get(pk=request.GET.get('linkid'))
                elif link_type == 'season':
                    link = LinkSeason.objects.get(pk=request.GET.get('linkid'))
                # capturamos el link q esta editando y agregamos las modificaciones
                link.url=form.cleaned_data['url']
                link.audio_lang=lang
                link.user=user
                link.episode=episode
                link.pub_date=now
                if form.cleaned_data['subtitle']:
                    subt = Languages.objects.get(pk=data['subtitle'])
                    link.subtitle = subt
                try:
                    # El aguila esta en el nido
                    link.save()
                   # messages.info(request, 'Gracias')
                    return HttpResponse(simplejson.dumps({'mensaje': 'Gracias'}), mimetype='application/json')
                except:
                    return HttpResponse(simplejson.dumps({'mensaje': 'Error'}), mimetype='application/json')
            # sino, es un link nuevo
            else:
                if link_type == 'episode':
                    link = Link(
                        url=form.cleaned_data['url'],
                        audio_lang=lang,
                        user=user,
                        episode=episode,
                        pub_date=now,
                    )
                elif link_type == 'season':
                    link = LinkSeason(
                        url=form.cleaned_data['url'],
                        audio_lang=lang,
                        user=user,
                        season=season,
                        pub_date=now,
                    )
                if form.cleaned_data['subtitle']:
                    subt = Languages.objects.get(pk=data['subtitle'])
                    link.subtitle = subt
                link.save()
                #messages.info(request, 'Gracias')
                return HttpResponse(simplejson.dumps({'mensaje': 'Gracias'}), mimetype='application/json')
        else:
            if form.errors['url'] == [u'Ya existe Link con este URL.']:
                return HttpResponse(simplejson.dumps({'mensaje': 'Link duplicado'}), mimetype='application/json')
            else: 
                return HttpResponse(simplejson.dumps(form.errors), mimetype='application/json')
示例#2
0
文件: views.py 项目: marc0s/petateca
def add_link(request, serie_slug, season, episode):
    ''' 
    Formulario que agrega/edita links
    ''' 
    serie = get_object_or_404(Serie, slug_name=serie_slug)
    season = get_object_or_404(Season, serie=serie, season=season)
    episode = get_object_or_404(
        Episode,
        season=season,
        episode=episode
    )
    link_info = {
        'serie': serie,
        'episode': episode,
        'season': season,
    }
    # Si es para editar, devolvemos la instancia del link ya existente ;)
    # Esto es solo para presentar el form, para el post viene mas adelante...
    if request.method == 'GET' and request.GET.get('edit') and request.GET.get('linkid'):
        linkid = request.GET.get('linkid')
        link = Link.objects.get(pk=linkid)
        if request.user.username == link.user:
            form = LinkForm(instance=link) 
            link_info.update({ 'form': form, 'edit': 'yes', 'link': link, })
            return link_info
    # Este es el formulario inicial, si el request.method es GET
    # pre-populamos con el episodio, que eso ya lo tenemos de la URL
    if request.method == 'GET':
        form = LinkForm(initial={ 'episode':episode }) 
        link_info.update({ 'form': form, })
        return link_info
    # Cuando se envia el formulario...
    if request.method == 'POST':
        # Capturamos lo que nos pasa, agregamos el episode
        # fecha de publicacion y usuario que hace la peticion
        data = {
            'url': request.POST['url'], 
            'audio_lang': request.POST['audio_lang'], 
            'subtitle': request.POST['subtitle'], 
            'user': request.user.username, 
            'episode': episode.pk, 
            'pub_date': datetime.now(), 
        } 
        form = LinkForm(data)
        link_info.update({'form': form})
        if form.is_valid():
            if not form.cleaned_data['url'].startswith('http://'):  # TODO: agregar magnet/ed2k, otros URIs
                link_info.update({ 'message': 'URL Invalida',})
                return link_info
            # Audio Lang, Subtitle y Episode hay que pasarlos como instancias
            # Episode ya lo tenemos, vamos a buscar audio_lang
            lang = Languages.objects.get(pk=data['audio_lang'])
            # si en el POST encontramos el edit, pues esta editando :S
            if request.GET.get('edit'):
                print "editando un link existente"
                # capturamos el link q esta editando y agregamos las modificaciones
                link = Link.objects.get(pk=request.GET.get('linkid'))
                link.url=form.cleaned_data['url']
                link.audio_lang=lang
                link.user=form.cleaned_data['user']
                link.episode=episode
                link.pub_date=form.cleaned_data['pub_date']
                if form.cleaned_data['subtitle']:
                    subt = Languages.objects.get(pk=data['subtitle'])
                    link.subtitle = subt
                link.save()
                link_info.update({ 'message': 'Gracias',})
                return link_info
            # sino, es un link nuevo
            else:
                link = Link(
                    url=form.cleaned_data['url'],
                    audio_lang=lang,
                    user=form.cleaned_data['user'],
                    episode=episode,
                    pub_date=form.cleaned_data['pub_date'],
                )
                if form.cleaned_data['subtitle']:
                    subt = Languages.objects.get(pk=data['subtitle'])
                    link.subtitle = subt
                link.save()
                link_info.update({ 'message': 'Gracias',})
                return link_info
        else:
            link_info.update({ 'message': 'Error',})
            return link_info
示例#3
0
def ajax_add_link(request, link_type, obj_id):
    ''' 
    Formulario que agrega/edita links en AJAX
    '''
    if link_type == 'episode':
        episode = get_object_or_404(Episode, id=obj_id)
    elif link_type == 'season':
        season = get_object_or_404(Season, id=obj_id)
    if link_type == 'episode':
        Form = LinkForm
        link_info = {
            'episode': episode,
            'season': episode.season,
            'serie': episode.season.serie,
            'link_type': 'episode',
        }
    elif link_type == 'season':
        Form = LinkSeasonForm
        link_info = {
            'season': season,
            'serie': season.serie,
            'link_type': 'season',
        }
    # Si es para editar, devolvemos la instancia del link ya existente ;)
    # Esto es solo para presentar el form, para el post viene mas adelante...
    if request.method == 'GET' and request.GET.get('edit') and request.GET.get(
            'linkid'):
        linkid = request.GET.get('linkid')
        if link_type == 'episode':
            link = Link.objects.get(pk=linkid)
        elif link_type == 'season':
            link = SeasonLink.objects.get(pk=linkid)
        if request.user.username == link.user:
            form = Form(instance=link)
            link_info.update({
                'form': form,
                'edit': 'yes',
                'link': link,
            })
            return link_info
    # Este es el formulario inicial, si el request.method es GET
    # pre-populamos con el episodio, que eso ya lo tenemos de la URL
    if request.method == 'GET':
        if link_type == 'episode':
            form = Form(initial={
                'episode': episode,
                'url': 'http://',
            })
        elif link_type == 'season':
            form = Form(initial={
                'season': season,
                'url': 'http://',
            })
        link_info.update({
            'form': form,
        })
        return link_info
    # Cuando se envia el formulario...
    if request.method == 'POST':
        # Capturamos lo que nos pasa, agregamos el episode
        # fecha de publicacion y usuario que hace la peticion
        user = User.objects.get(username=request.user.username)
        now = datetime.now()
        data = {
            'url': request.POST['url'],
            'audio_lang': request.POST['audio_lang'],
            'subtitle': request.POST['subtitle'],
            'user': user,
            'pub_date': now,
        }
        if link_type == 'episode':
            data.update({'episode': episode.pk})
            form = LinkForm(data)
        elif link_type == 'season':
            data.update({'season': season.pk})
            form = LinkSeasonForm(data)
        link_info.update({'form': form})
        if form.is_valid():
            # Comprobamos que el form sea correcta, lo procesamos
            if not form.cleaned_data['url'].startswith(
                    'http://'):  # TODO: agregar magnet/ed2k, otros URIs
                messages.error(request, 'URL invalida')
                return {'mensaje': 'Invalida'}
            # Audio Lang, Subtitle y Episode hay que pasarlos como instancias
            # Episode ya lo tenemos, vamos a buscar audio_lang
            lang = Languages.objects.get(pk=data['audio_lang'])
            # si en el POST encontramos el edit, pues esta editando :S
            if request.GET.get('edit'):
                if link_type == 'episode':
                    link = Link.objects.get(pk=request.GET.get('linkid'))
                elif link_type == 'season':
                    link = LinkSeason.objects.get(pk=request.GET.get('linkid'))
                # capturamos el link q esta editando y agregamos las modificaciones
                link.url = form.cleaned_data['url']
                link.audio_lang = lang
                link.user = user
                link.episode = episode
                link.pub_date = now
                if form.cleaned_data['subtitle']:
                    subt = Languages.objects.get(pk=data['subtitle'])
                    link.subtitle = subt
                try:
                    # El aguila esta en el nido
                    link.save()
                    # messages.info(request, 'Gracias')
                    return HttpResponse(simplejson.dumps(
                        {'mensaje': 'Gracias'}),
                                        mimetype='application/json')
                except:
                    return HttpResponse(simplejson.dumps({'mensaje': 'Error'}),
                                        mimetype='application/json')
            # sino, es un link nuevo
            else:
                if link_type == 'episode':
                    link = Link(
                        url=form.cleaned_data['url'],
                        audio_lang=lang,
                        user=user,
                        episode=episode,
                        pub_date=now,
                    )
                elif link_type == 'season':
                    link = LinkSeason(
                        url=form.cleaned_data['url'],
                        audio_lang=lang,
                        user=user,
                        season=season,
                        pub_date=now,
                    )
                if form.cleaned_data['subtitle']:
                    subt = Languages.objects.get(pk=data['subtitle'])
                    link.subtitle = subt
                link.save()
                #messages.info(request, 'Gracias')
                return HttpResponse(simplejson.dumps({'mensaje': 'Gracias'}),
                                    mimetype='application/json')
        else:
            if form.errors['url'] == [u'Ya existe Link con este URL.']:
                return HttpResponse(simplejson.dumps(
                    {'mensaje': 'Link duplicado'}),
                                    mimetype='application/json')
            else:
                return HttpResponse(simplejson.dumps(form.errors),
                                    mimetype='application/json')