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