Esempio n. 1
0
def configuracao(request):
    """Configuração de usuário"""

    cidadao = Cidadao("","")
    cidadao = request.db["usrTree"][authenticated_userid(request)]	
	#verificar se cidadão está preenchido
    appstruct = record_to_appstruct(cidadao)	
	
    esquema = FormConfigurar().bind(request=request)
    esquema.title = "Configuração de usuário"	
    form = deform.Form(esquema, buttons=('Salvar', 'Excluir'))

    if 'Salvar' in request.POST:
        # Validação do formulário
        cidadao = merge_session_with_post(cidadao, request.POST.items())	
        appstruct = record_to_appstruct(cidadao)		
        try:
            esquema = FormConfigurar().bind(request=request)
            esquema.title = "Configuração de usuário"		
            form = deform.Form(esquema, buttons=('Salvar', 'Excluir'))		
            form.render(appstruct)  		
	
            appstruct = form.validate(request.POST.items())
        except deform.ValidationFailure as e:
            return {'form': e.render()}
        
        transaction.commit()		
        return HTTPFound(location=request.route_url('usuario'))
    elif 'Excluir' in request.POST:
        del request.db["usrTree"][authenticated_userid(request)]
        transaction.commit()
        headers = forget(request)
        return HTTPFound(location=request.route_url('inicial'))		
    else:
        # Apresentação do formulário	
        return{'form':form.render(appstruct)}	
Esempio n. 2
0
def orcamento(request):
    """
    Página de um orçamento individual
    """	
    id = int(request.matchdict['id'])	

    esquemaFoto = FormOrcFoto().bind(request=request)
    esquemaFoto.title = "Foto"
    formFoto = deform.Form(esquemaFoto, buttons=('Upload Foto',))	

    esquemaVideo = FormOrcVideo().bind(request=request)
    esquemaVideo.title = "Video"
    formVideo = deform.Form(esquemaVideo, buttons=('Upload Video',))		
	
    esquemaSeguir = FormSeguirAtv().bind(request=request)
    esquemaSeguir.title = "Seguir atualizações"
    formSeguir = deform.Form(esquemaSeguir, buttons=('Salvar',))
	
    esquema = FormOrcamento().bind(request=request)
    #esquema.title = "Comentários"
    form = deform.Form(esquema, buttons=('Enviar',))	
	
    esquemaResp = FormOrcamentoResp().bind(request=request)
    #esquema.title = "Resposta"
    formResp = deform.Form(esquemaResp, buttons=('Responder',))	
	
    #atv_orc = Atividade_orcamento("","")
    atv_orc = Atividade()
    #modificar o orçamento a ser exibido na página	
    atv_orc = request.db["atvTree"][id]	
	#atividade vinda do mapa
    #atv_orc = request.db["orcTree"]
	#atv_orc = request.db["atvTree"]

    #esquema para colocar o id nos forms das respostas
    # envia para o template uma lista com forms de resposta	
    i = 0
    formsResps = []	

	#criar forulários de respostas ao conetários já existentes
	#cada form tem um id, para identificarmos qual é o comentário e sua resposta respectiva
    for coment in atv_orc.midia_coment:
        formResp = deform.Form(esquemaResp, buttons=('Responder',), formid=str(i))
        formsResps.append(formResp.render())		
        i = i + 1		 
		
    cidadao = Cidadao("","")	
    if (authenticated_userid(request)):
        cidadao = request.db["usrTree"][authenticated_userid(request)]		
	
    if 'Upload_Foto' in request.POST:
        if (not authenticated_userid(request)):
            request.session.flash(u"Você deve estar logado para inserir conteúdos no site")				
            return HTTPFound(location=request.route_url('login'))		
	
        try:
            formFoto.validate(request.POST.items())
        except deform.ValidationFailure as e:
		
            return {'form': e.render()}
			
		#3 linhas abaixo se repetindo para os 3 forms.... como otimizar??
        dadosSite = request.db['dadosSite']
        #chama função para inserir na lista de atualizações		
        Dados_site.addAtual(dadosSite, atv_orc) 
        Dados_site.addFoto(dadosSite)
		
        foto = Midia_foto(request.POST.get('foto'), datetime.now(), authenticated_userid(request))		
        Atividade_cidadao.addFoto(atv_orc, foto)
        transaction.commit() 	
			
        return HTTPFound(location=request.route_url('orcamentoId', id=id))	
    elif 'Upload_Video' in request.POST:
        if (not authenticated_userid(request)):
            request.session.flash(u"Você deve estar logado para inserir conteúdos no site")				
            return HTTPFound(location=request.route_url('login'))		
	
        try:
            formVideo.validate(request.POST.items())
        except deform.ValidationFailure as e:
            return {'form': e.render()}
		
		#colocar dentro de try catch		
	    #3 linhas abaixo se repetindo para os 3 forms.... como otimizar??
        dadosSite = request.db['dadosSite']
        #chama função para inserir na lista de atualizações		
        Dados_site.addAtual(dadosSite, atv_orc) 
        Dados_site.addVideo(dadosSite)			
		
        video = Midia_video(request.POST.get('video'), datetime.now(), authenticated_userid(request))
		#bolar alguma validação de lnk?
        #colocar essas funções no model		
        video.link = video.linkOrig.replace('.com/','.com/embed/')		
        video.link = video.linkOrig.replace('watch?v=','embed/')				
		
        Atividade_cidadao.addVideo(atv_orc, video)		
        transaction.commit()				
		
        return HTTPFound(location=request.route_url('orcamentoId', id=id))		

    elif 'Enviar' in request.POST:
        if (not authenticated_userid(request)):
            request.session.flash(u"Você deve estar logado para inserir conteúdos no site")		
            return HTTPFound(location=request.route_url('login'))		
	
        try:
            esquema = FormOrcamento().bind(request=request)
            form = deform.Form(esquema, buttons=('Enviar',))
            form.render()			
            form.validate(request.POST.items())
        except deform.ValidationFailure as e:
            print "form de comentário deu erro"			
            return {'form': e.render()}				
		#3 linhas abaixo se repetindo para os 3 forms.... como otimizar??
		
	
		
        dadosSite = request.db['dadosSite']
        #chama função para inserir na lista de atualizações		
        Dados_site.addAtual(dadosSite, atv_orc)
        Dados_site.addComent(dadosSite)	

        coment = Midia_comentario(request.POST.get('comentario'), datetime.now(), authenticated_userid(request))

        Atividade_cidadao.addComent(atv_orc, coment)	
        transaction.commit()	
        return HTTPFound(location=request.route_url('orcamentoId', id=id))	

    elif 'Responder' in request.POST:
	
        if (not authenticated_userid(request)):
            request.session.flash(u"Você deve estar logado para inserir conteúdos no site")				
            return HTTPFound(location=request.route_url('login'))		
	
        try:
            esquemaResp = FormOrcamentoResp().bind(request=request)
            formResp = deform.Form(esquemaResp, buttons=('Responder',))	
            formResp.render()	

            formResp.validate(request.POST.items())
        except deform.ValidationFailure as e:			
            return {'form': e.render()}			
		
		#pega o id do form que enviou a resposta do comentário
        posted_formid = int(request.POST['__formid__'])		
        		
		#3 linhas abaixo se repetindo para os 3 forms.... como otimizar??
        dadosSite = request.db['dadosSite']
        #chama função para inserir na lista de atualizações		
        Dados_site.addAtual(dadosSite, atv_orc)
        Dados_site.addComent(dadosSite)	

        coment = Midia_comentario(request.POST.get('resposta'), datetime.now(), authenticated_userid(request))
        transaction.commit()		

		#adiciona a resposta ao comentário pai, conforme o id do form de resposta
        comentPai = atv_orc.midia_coment[posted_formid] 
        comentPai.respostas.append(coment)		
        comentPai._p_changed = 1	
		
        transaction.commit()	
        return HTTPFound(location=request.route_url('orcamentoId', id=id))			
    elif 'Salvar' in request.POST:
        if (not authenticated_userid(request)):
            request.session.flash(u"Você deve estar logado para inserir conteúdos no site")				
            return HTTPFound(location=request.route_url('login'))		
	
        try:
            formSeguir.validate(request.POST.items())
        except deform.ValidationFailure as e:
            return {'form': e.render()}	
        
        Cidadao.addSeguir(cidadao, atv_orc, request.POST.get('seguir'))	
        transaction.commit()

        return HTTPFound(location=request.route_url('orcamentoId', id=id))		
    else: 
        seguirAtv = cidadao.pontos_a_seguir	
        #verifica se o usuário logado está seguindo a atividade    	    
        if atv_orc.atividade in seguirAtv:
            appstruct = {'seguir':True,}  
        else:
            appstruct = {'seguir':False,} 
			  		
        appstructOrc = record_to_appstruct(atv_orc)
	
        return {
            'orcamento': atv_orc,		
            'form': form.render(appstruct=appstructOrc),
            'coments': atv_orc.midia_coment,
            'formResp': formsResps,
            'formVideo': formVideo.render(),
            'videos': atv_orc.midia_video,		
            'fotos': atv_orc.midia_foto,				
            'formFoto': formFoto.render(),
            'formSeguir': formSeguir.render(appstruct=appstruct),		
			#enviar o midia_foto assim que estiverem cadastradas no banco
        }