Exemple #1
0
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()
Exemple #2
0
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)
Exemple #3
0
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()
Exemple #4
0
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()
Exemple #5
0
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()
Exemple #6
0
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()
Exemple #7
0
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()
Exemple #8
0
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()
Exemple #9
0
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
                   
Exemple #10
0
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()
Exemple #11
0
# -*- 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"