def pessoa_artigos(): from pessoa_utils import get_pessoa pessoa = get_pessoa(request,db,auth) or redirect pessoal = pessoa == get_pessoa(request,db,auth,force_auth=True) artigos = db(((db.autor.pessoa_id==pessoa.pessoa.id) & \ (db.versao.id==db.autor.versao_id) &\ (db.artigo.id==db.versao.artigo_id))).select(db.artigo.ALL,groupby=db.artigo.id) return locals()
def inscricao(): atividade = atividade_record or redirect(URL('index')) ##Se a atividade está inserida em um evento então a inscrição só pode ser feita por lá! if db(db.atividade_subatividades.subatividade_id==atividade.id).count(): mestra=db(db.atividade_subatividades.subatividade_id==atividade.id).select().first().mestra_id return redirect(URL('atividades','inscricao',args=(mestra.slug,))) tipo = request.args(1) editar = request.get_vars.get('editar') if tipo=='pessoal' or not tipo: from inscricao_utils import inscricao_pessoal from pessoa_utils import get_pessoa acesso = request.get_vars.get('acesso','restrito1') if acesso == 'restrito': pessoa = get_pessoa(request,db,auth,force_auth=True) return inscricao_pessoal(request,db,atividade,pessoa,insc_grupo=False,editar=editar,tipo=tipo) elif 1: ##Checar permissão do usuário logado pessoa = db.pessoa[request.post_vars.get("pessoa",pessoa)] if request.post_vars.get("pessoa") else None # response.views = 'atividades/inscricao_administrador.html' # pessoa = get_pessoa(request,db,auth,force_auth=True) return inscricao_pessoal(request,db,atividade,pessoa,insc_grupo=False,editar=editar,tipo=tipo)
def send_message(): master = db(db.mensagem.hash==request.get_vars.get('master')).select().first() de = get_pessoa(request,db,auth,force_auth=True) db.mensagem.assunto.default = request.post_vars.get('assunto') or request.get_vars.get('assunto') db.mensagem.de.default = de.pessoa.id db.mensagem.master.default = master db.mensagem.de.readable=db.mensagem.de.writable=False form = SQLFORM(db.mensagem,_action=URL('default','send_message',vars=request.get_vars)) destinatario=request.get_vars.get('destinatario') if master: destinatarios = db(((db.mensagem.id==master.id) | (db.mensagem.master==master)) & (db.mensagem_destinatarios.mensagem_id==db.mensagem.id) & (db.mensagem_destinatarios.pessoa_id!=de.pessoa.id) & (db.pessoa.id==db.mensagem_destinatarios.pessoa_id)).select(db.pessoa.ALL,distinct=True) elif destinatario: destinatarios = db(db.pessoa.id==destinatario).select() else: destinatarios = db(db.pessoa.id==0).select() destinatario = destinatarios.first() if form.process().accepted: mensagem = form.vars.id for pessoa in destinatarios: db.mensagem_destinatarios.validate_and_insert(mensagem_id=mensagem,pessoa_id=pessoa) session.flash = 'Mensagem enviada com sucesso' next = request.vars.get('next') redirect(next or URL('default','inbox') ) return locals()
def junte_se_a_nos(): response.title = "Junte-se a nós" from pessoa_utils import get_pessoa from pendform_utils import PendForm grupo = grupo_record or redirect(URL('index')) pessoa = get_pessoa(request,db,auth,force_auth=True) print grupo # if pessoa.is_integrante(): # pass #return HttpResponseRedirect(reverse('grupo_detail',args=(pessoa.get_grupo().slug,)) ) edicao=True submit_value = 'Enviar' juntarse_grupo = db((db.juntarse_grupo.grupo_id==grupo.id) & (db.juntarse_grupo.pessoa_id==pessoa.pessoa.id)).select().first() pendedform_id = juntarse_grupo.form_id if juntarse_grupo else None pendedform = PendForm(db, pendedform=db(db.pendedform.id==pendedform_id).select().first(), table_name='integrante') if juntarse_grupo: submit_value = "Salvar" response.flash = u"Sua solicitação já foi enviada. Você poderá modificá-la abaixo ou então aguardar até que um dos integrantes de seu grupo valide sua solicitação. Para cancelar a sua solicitação, clique em 'Cancelar'." form = pendedform.form form.vars.grupo_id=grupo.id form.vars.pessoa_id=pessoa.pessoa.id if form.validate(): from general_utils import mail_schedule pendedform.create_or_update(form.vars) id_j = db.juntarse_grupo.update_or_insert(grupo_id=grupo.id, pessoa_id=pessoa.id, form_id=pendedform.pendedform_id, rejeitada=False) url = URL('grupos','validar_inclusao',args=(grupo.slug,id_j),scheme=True, host=True) message = HTML(P("%s solicitou sua inclusão no grupo. Caso esta pessoa faça parte de seu grupo, proceda a validação." %pessoa.nome), P("Segue link para validação:",A(url,_href=url)) ) subject=u'Solicitação de Inclusão no Grupo' mail_id = db.mailmessage.update_or_insert( (db.mailmessage.subject==subject) & (db.mailmessage.message==message) & (db.mailmessage.mail_to==grupo.email), subject=subject,message=message,mail_to=grupo.email) mail = db((db.mailmessage.subject==subject) & (db.mailmessage.message==message) & (db.mailmessage.mail_to==grupo.email)).select().first() acao_grupo = db.acao_grupo.insert(titulo="Enviando solicitacao para email do grupo",user_id=auth.user) mail_schedule(mail,db,auth.user,acao_grupo) response.flash = u"Solicitação enviada com sucesso. Aguarde até que algum integrante do grupo autentique sua solicitação. Obrigado." return locals()
def message(): # Uma vez aberta a mensagem ele será considerada como lida reader = get_pessoa(request,db,auth,force_auth=True) # adicionar permissoes de leitura mensagem = db(db.mensagem.hash==request.vars.get('message')).select().first() mensagens_relacionadas = db(((db.mensagem.master==mensagem.id) | (db.mensagem.id==mensagem.id)) & \ (((db.mensagem_destinatarios.mensagem_id==db.mensagem.id) & (db.mensagem_destinatarios.pessoa_id==reader.pessoa.id)) | (db.mensagem.de==reader.pessoa.id)) ).select(db.mensagem.ALL,orderby=~db.mensagem.hora,distinct=True) for m in mensagens_relacionadas: if not db((db.mensagem_readers.mensagem_id==m.id) & \ (db.mensagem_readers.pessoa_id==reader.pessoa.id)).count(): db.mensagem_readers.insert(mensagem_id=m.id, pessoa_id=reader.pessoa.id) return locals()
def nova_reuniao(): from pessoa_utils import get_pessoa pessoa = get_pessoa(request,db,auth,force_auth=True) grupo = grupo_record or redirect(URL('index')) reunioes_set = db((db.reuniao.grupo_id==grupo.id) & (db.reuniao.termino==None)) if reunioes_set.count(): response.flash = H3("Antes de inicar uma nova reunião você deverá encerrar essa reunião") redirect(URL('grupos',"encerra_reuniao", args=(grupo.slug,reunioes_set.select(db.reuniao.ALL).first().hash)) ) response.title="Iniciando reunião" db.reuniao.pauta_id.requires=IS_IN_DB(db(db.pauta.grupo_id==grupo.id),'pauta.id',db.pauta._format) form = SQLFORM(db.reuniao,fields=['pauta_id'],formstyle='bootstrap' ) (form.vars.grupo_id,form.vars.secretario_id) = (grupo.id,pessoa.pessoa.id) if form.process().accepted: response.flash = T('Reunião criada com sucesso') reuniao = db.reuniao(form.vars.id) redirect(URL('grupos','reuniao',args=(grupo.slug,reuniao.hash)) ) return locals()
def pessoa_atividades(): from pessoa_utils import get_pessoa from atividade_utils import (frequencia_participacao,listas_feitas, pessoa_get_certificados,certifica_inscrito) pessoa = get_pessoa(request,db,auth,force_auth=True) pessoa = pessoa or redirect(URL('index')) q_ativ = (db.inscrito.pessoa_id==pessoa.pessoa.id) & \ (db.atividade.id==db.inscrito.atividade_id) & \ (db.atividade_periodo.atividade_id==db.atividade.id) ##Atividades Previstas ativ_prev = db( q_ativ & (db.atividade_periodo.inicio >= request.now) ).select(groupby=db.atividade.id) ativ_real = db( q_ativ & (db.atividade_periodo.inicio < request.now) ).select(groupby=db.atividade.id) ativ_orga = db( (db.atividade_organizador.atividade_id==db.atividade.id) & \ (db.atividade_organizador.pessoa_id==pessoa.pessoa.id) ).select(groupby=db.atividade.id) # if ativ_p.filter(confirmado=False,atividade__conf=True).count(): # Verifica se todas as atividades ja foram ou nao confirmadas # confirmacao='pendente' return locals()
def topico(): from pessoa_utils import get_pessoa pessoa = get_pessoa(request, db,auth, force_auth=True).pessoa reuniao = db(db.reuniao.hash==request.args(0)).select().first() or redirect(URL('default','index',args=(grupo.slug,))) grupo = reuniao.grupo_id topico = db(db.topico.hash==request.args(1)).select().first() edicao = request.get_vars.get('edicao',False) reuniao_link = URL('grupos','reuniao',args=(grupo.slug,reuniao.hash),vars=request.get_vars) em_pauta = False ##True se o tópico estiver na pauta da reuniao em questão if topico: em_pauta = bool(reuniao.topicos_set(db.topico.id==topico.id).count()) if em_pauta: response.title = "Editando Tópico:" else: response.title = "Discutindo Tópico:" else: response.title = "Criando novo Tópico:" fields=[db.topico.encerrado] if topico and (topico.responsaveis_set().count() or topico.limite): fields.append(db.topico.data_acao) form = SQLFORM(db.topico,topico,showid=False) form.vars.grupo_id = grupo.id if topico: historico = topico.posts_set(db.post.closed==False).select() post = historico.first() ##Populando os dados iniciais do formulario db.topico.data_acao.default=topico.data_acao db.topico.encerrado.default=topico.encerrado db.post.texto.default=post.texto if post else '' fields.append(db.post.texto) submit_button='Atualizar' if em_pauta else "Salvar e adicionar à Pauta" pForm = SQLFORM.factory(*fields,formstyle="bootstrap",submit_button=submit_button) pForm.add_button('Cancelar', reuniao_link,_class="btn") pForm[0][-1][1]['_class']='btn btn-primary pull-right' if pForm.process().accepted: post_data = dict(topico_id=topico.id,autor_id = pessoa.id) post_data.update(**db.post._filter_fields(pForm.vars)) db.post.update_or_insert((db.post.id==(post.id if post else 0)),**post_data) topico.update_record(encerrado=pForm.vars.encerrado,data_acao=pForm.vars.data_acao) #Se o tópico não esta em pauta adicione-o if not em_pauta: db.reuniao_topicos.insert(reuniao_id=reuniao.id,topico_id=topico.id) session.flash = "Tópico atualizado com sucesso" redirect(reuniao_link) if form.process().accepted: if not topico: db.reuniao_topicos.insert(reuniao_id=reuniao.id,topico_id=form.vars.id) db.topico_pautas.insert(topico_id=form.vars.id,pauta_id=reuniao.pauta_id) session.flash = "Tópico criado com sucesso" else: session.flash = "Tópico atualizado com sucesso" redirect(reuniao_link) return locals()
from pessoa_utils import get_pessoa global unreaded db.pessoa._after_update.append( lambda s,f: s.update_naive( miniatura=db.pessoa.miniatura.compute(s.select().first()) ) ) SQLFORM.formstyles.table3cols = bootstrap3 pessoa = get_pessoa(request, db,auth,force_auth=True) unreaded = None if pessoa: total_messages = db( (db.mensagem_destinatarios.pessoa_id==pessoa.pessoa.id) & (db.mensagem.id==db.mensagem_destinatarios.mensagem_id) ).count(distinct=True) readed_message = db( (db.mensagem_readers.mensagem_id==db.mensagem.id) & (db.mensagem_readers.pessoa_id==pessoa.pessoa.id) & ~(db.mensagem.de==pessoa.pessoa.id) ).count(distinct=True, cache=(cache.ram, 60)) unreaded = total_messages - readed_message
def pessoa(): print get_pessoa(request, db, auth), auth.is_logged_in(), 888898282988 if not get_pessoa(request, db, auth): redirect(URL('index') ) from myutils import render_fields,copydata response.title = "Perfil" layout='simple_layout.html' if 'desmiss' in request.vars else 'layout.html' action = request.vars.get('action','') if action=='criar': response.title = "Nova Pessoa" form = SQLFORM(db.pessoa_fisica,upload=URL('download')) elif action=='editar': response.title = 'Editar Pessoa' response.view = "default/pessoa_edit.html" pessoa = get_pessoa(request, db, auth, render=False) if request.env.request_method=="POST": if request.vars.foto=='': request.vars.pop('foto') else: request.vars.update({'foto':db.pessoa.foto.store(request.vars.foto, request.vars.foto.filename)}) ret = db(db.pessoa.id==pessoa.pessoa.id)\ .validate_and_update(**db.pessoa._filter_fields(request.vars)) ret.update(db(db.pessoa_fisica.id==pessoa.pessoa_fisica.id)\ .validate_and_update(**db.pessoa_fisica._filter_fields(request.vars))) pessoa = pessoa_record = db(db.pessoa.id==pessoa.pessoa.id).select().first() if not ret.errors: redirect(URL('default','pessoa',args=(pessoa.slug)) ) response.flash='Dados Atualizados com sucesso' # form = SQLFORM(db.pessoa_fisica,p.pessoa_fisica,upload=URL('download'),showid=False) # form = SQLFORM.factory(db.pessoa,db.pessoa_fisica,table_name='pessoa', # upload=URL('download'), # uploadfolder=os.path.join(request.folder,'uploads','users','photos')) else: pessoa_record = get_pessoa(request,db,auth,render=True) # if action in ('editar','criar'): # if form.process().accepted: # if action=='criar': # id = db.pessoa.insert(**db.pessoa._filter_fields(form.vars)) # form.vars.pessoa_id=id # id = db.pessoa_fisica.insert(**db.pessoa_fisica._filter_fields(form.vars)) # response.flash='Pessoa cadastrada com sucesso' # else: # pessoa_record.pessoa.update_record(**db.pessoa._filter_fields(form.vars)) # pessoa_record.pessoa_fisica.update_record(**db.pessoa_fisica._filter_fields(form.vars)) # response.flash='Dados Atualizados com sucesso' # redirect(URL('default','pessoa')) # dbg.set_trace() return locals()
# -*- coding: utf-8 -*- from pessoa_utils import get_pessoa, get_mensagem from portal_utils import portal_menu pessoa_record = get_pessoa(request, db, auth) response.subtitle = pessoa_record.pessoa.nome if pessoa_record else "Anônimo" def index(): """ return auth.wiki() """ response.subtitle = "Um caminho para a comunicação universitária" response.flash = T("Welcome to web2py!") return locals() def home(): return locals() def pessoa(): print get_pessoa(request, db, auth), auth.is_logged_in(), 888898282988 if not get_pessoa(request, db, auth): redirect(URL('index') ) from myutils import render_fields,copydata response.title = "Perfil"