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