Пример #1
0
def admin_busca():
    logs = Logs()
    busca = request.args.get('search[value]')
    busca = '%' + busca + '%'
    inicio = int(request.args.get('start'))
    fim = int(request.args.get('length'))
    draw = int(request.args.get('draw'))
    resultados = logs.search(busca, inicio, fim)
    total = logs.total()
    filtrado = logs.count(busca)
    return data_tables_response(draw, total, filtrado, resultados)
Пример #2
0
def cadastrar():
    # Cadastro via ajax
    usuario = Usuario()
    usuario.nivel = Roles.usuario.value
    populate_from_request(usuario)

    if not Usuario.valid_pass(request.form['senha']):
        return json_response(message='A senha deve ter pelo menos 6 dígitos',
                             data=[]), 400

    if usuario.login_exists(usuario.cpf, 0):
        return json_response(message='O CPF já está em uso, utilize outro',
                             data=[]), 400

    usuario.senha = Usuario.hash(request.form['senha'])
    usuario.data_cadastro = datetime.datetime.now().strftime(
        "%Y-%m-%d %H:%M:%S")
    identifier = usuario.insert()
    if identifier > 0:
        Logs(0, usuario.identifier,
             usuario.nome + '(' + usuario.cpf + ')' + ' fez o cadastro',
             'usuario', usuario.identifier,
             datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")).insert()
        return json_response(message='Cadastrado realizado!',
                             data=[usuario],
                             redirect=url_for('usuarios.entrar')), 201
    else:
        return json_response(message='Não foi possível cadastrar sua conta',
                             data=[]), 400
Пример #3
0
def admin_editar(identifier: int):
    """ Edição de notícias """
    noticia = Noticia()
    noticia.select(identifier)
    auth = Auth()
    if noticia.identifier > 0:
        if auth.is_allowed('edita.noticia', noticia):
            populate_from_request(noticia)
            noticia.data_atualizacao = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            if noticia.update():
                imagens = get_uploaded_images()
                atual = ImagemNoticia()
                atuais = atual.select_by_parent(noticia.identifier)
                count = len(atuais)
                for imagem in imagens:
                    imagem.noticia_id = noticia.identifier
                    imagem.data_cadastro = noticia.data_atualizacao
                    imagem.ordem = count
                    imagem.insert()
                    count = count + 1
                Logs(0, auth.user.identifier,
                     auth.user.nome + '(' + auth.user.cpf + ')' + ' editou a notícia ' + noticia.titulo + ' [Cód. ' + noticia.identifier.__str__() + ']',
                     'noticia', noticia.identifier, datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")).insert()
                return json_response(message='Notícia atualizada!', data=[noticia],
                                     redirect=url_for('noticias.admin_edicao', identifier=noticia.identifier))
            else:
                return json_response(message='Não foi possível editar a notícia', data=[]), 400
        else:
            return json_response(message='Você não tem permissão para realizar esta ação', data=[]), 403
    else:
        return json_response(message='Notícia não encontrada', data=[]), 404
Пример #4
0
def admin_remover(identifier: int):
    usuario = Usuario()
    usuario.select(identifier)
    auth = Auth()
    if usuario.identifier > 0:
        if auth.is_allowed('remove.usuario', usuario):
            if usuario.delete():
                Logs(
                    0, auth.user.identifier, auth.user.nome + '(' +
                    auth.user.cpf + ')' + ' removeu o usuário ' +
                    usuario.nome + ' (' + usuario.cpf + ')', 'usuario',
                    usuario.identifier,
                    datetime.datetime.now().strftime(
                        "%Y-%m-%d %H:%M:%S")).insert()
                return json_response(message='Usuário removido!',
                                     data=[],
                                     redirect=url_for('usuarios.admin_lista'))
            else:
                return json_response(
                    message='Não foi possível remover o usuário', data=[]), 400
        else:
            return json_response(
                message='Você não tem permissão para realizar esta ação',
                data=[]), 403
    else:
        return json_response(message='Usuário não encontrado', data=[]), 404
Пример #5
0
def admin_editar(identifier: int):
    """ Edição de avisos """
    aviso = Aviso()
    aviso.select(identifier)
    auth = Auth()
    if aviso.identifier > 0:
        if auth.is_allowed('edita.aviso', aviso):
            populate_from_request(aviso)
            aviso.data_atualizacao = datetime.datetime.now().strftime(
                "%Y-%m-%d %H:%M:%S")
            if aviso.update():
                Logs(
                    0, auth.user.identifier, auth.user.nome + '(' +
                    auth.user.cpf + ')' + ' editou o aviso ' + aviso.titulo +
                    ' [Cód. ' + aviso.identifier.__str__() + ']', 'aviso',
                    aviso.identifier,
                    datetime.datetime.now().strftime(
                        "%Y-%m-%d %H:%M:%S")).insert()
                return json_response(message='Aviso atualizado!', data=[aviso])
            else:
                return json_response(message='Não foi possível editar o aviso',
                                     data=[]), 400
        else:
            return json_response(
                message='Você não tem permissão para realizar esta ação',
                data=[]), 403
    else:
        return json_response(message='Aviso não encontrado', data=[]), 404
Пример #6
0
def admin_cadastrar():
    """ Cadastro de usuários """
    auth = Auth()
    if auth.is_allowed('cadastra.usuario'):
        usuario = Usuario()
        populate_from_request(usuario)

        if not Usuario.valid_pass(request.form['senha']):
            return json_response(
                message='A senha deve ter pelo menos 6 dígitos', data=[]), 400

        if usuario.login_exists(usuario.cpf, 0):
            return json_response(message='O CPF já está em uso, utilize outro',
                                 data=[]), 400

        usuario.senha = Usuario.hash(request.form['senha'])
        usuario.data_cadastro = datetime.datetime.now().strftime(
            "%Y-%m-%d %H:%M:%S")
        if usuario.insert():
            Logs(
                0, auth.user.identifier, auth.user.nome + '(' + auth.user.cpf +
                ')' + ' cadastrou o usuário ' + usuario.nome + ' (' +
                usuario.cpf + ')', 'usuario', usuario.identifier,
                datetime.datetime.now().strftime(
                    "%Y-%m-%d %H:%M:%S")).insert()
            return json_response(message='Usuário cadastrado',
                                 data=[usuario],
                                 redirect=url_for('usuarios.admin_lista'))
        else:
            return json_response(
                message='Não foi possível cadastrar o usuário', data=[]), 400
    else:
        return json_response(
            message='Você não tem permissão para realizar esta ação',
            data=[]), 403
Пример #7
0
def admin_cadastrar():
    """ Cadastro de anúncios """
    auth = Auth()
    if auth.is_allowed('cadastra.anuncio'):
        anuncio = Anuncio()
        populate_from_request(anuncio)
        anuncio.data_cadastro = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        anuncio.usuario_id = auth.user.identifier
        # Apenas usuários que podem editar os anúncios já ficam aprovados
        anuncio.aprovado = auth.is_allowed('edita.anuncio')
        if anuncio.insert():
            imagens = get_uploaded_images()
            order = 0
            for imagem in imagens:
                imagem.anuncio_id = anuncio.identifier
                imagem.data_cadastro = anuncio.data_cadastro
                imagem.ordem = order
                imagem.insert()
                order = order + 1
            Logs(0, auth.user.identifier,
                 auth.user.nome + '(' + auth.user.cpf + ')' + ' cadastrou o anúncio ' + anuncio.titulo + ' [Cód. ' + anuncio.identifier.__str__() + ']',
                 'anuncio', anuncio.identifier, datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")).insert()
            return json_response(message='Anúncio cadastrado', data=[anuncio],
                                 redirect=url_for('anuncios.admin_edicao', identifier=anuncio.identifier))
        else:
            return json_response(message='Não foi possível cadastrar o anúncio', data=[]), 400
    else:
        return json_response(message='Você não tem permissão para realizar esta ação', data=[]), 403
Пример #8
0
def admin_editar(identifier: int):
    """ Edição de anúncios """
    anuncio = Anuncio()
    anuncio.select(identifier)
    auth = Auth()
    if anuncio.identifier > 0:
        if auth.is_allowed('edita.anuncio', anuncio):
            populate_from_request(anuncio)
            anuncio.data_atualizacao = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            if anuncio.update():
                imagens = get_uploaded_images()
                atual = ImagemAnuncio()
                atuais = atual.select_by_parent(anuncio.identifier)
                count = len(atuais)
                for imagem in imagens:
                    imagem.anuncio_id = anuncio.identifier
                    imagem.data_cadastro = anuncio.data_atualizacao
                    imagem.ordem = count
                    imagem.insert()
                    count = count + 1
                Logs(0, auth.user.identifier,
                     auth.user.nome + '(' + auth.user.cpf + ')' + ' editou o anúncio ' + anuncio.titulo + ' [Cód. ' + anuncio.identifier.__str__() + ']',
                     'anuncio', anuncio.identifier, datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")).insert()
                return json_response(message='Anúncio atualizado!', data=[anuncio],
                                     redirect=url_for('anuncios.admin_edicao', identifier=anuncio.identifier))
            else:
                return json_response(message='Não foi possível editar o anúncio', data=[]), 400
        else:
            return json_response(message='Você não tem permissão para realizar esta ação', data=[]), 403
    else:
        return json_response(message='Anúncio não encontrado', data=[]), 404
Пример #9
0
def admin_editar(identifier: int):
    """ Edição de banner """
    banner = Banner()
    banner.select(identifier)
    auth = Auth()
    if banner.identifier > 0:
        if auth.is_allowed('edita.universidade', banner):
            populate_from_request(banner)
            banner.data_atualizacao = datetime.datetime.now().strftime(
                "%Y-%m-%d %H:%M:%S")
            if banner.update():
                Logs(
                    0, auth.user.identifier, auth.user.nome + '(' +
                    auth.user.cpf + ')' + ' editou um banner [Cód. ' +
                    banner.identifier.__str__() + ']', 'banner',
                    banner.identifier,
                    datetime.datetime.now().strftime(
                        "%Y-%m-%d %H:%M:%S")).insert()
                return json_response(message='Banner atualizado!',
                                     data=[banner],
                                     redirect=url_for('banner.admin_lista'))
            else:
                return json_response(
                    message='Não foi possível editar o banner', data=[]), 400
        else:
            return json_response(
                message='Você não tem permissão para realizar esta ação',
                data=[]), 403
    else:
        return json_response(message='Banner não encontrado', data=[]), 404
Пример #10
0
def admin_cadastrar():
    """ Cadastro de banner """
    auth = Auth()
    banner = Banner()
    banners = banner.all()
    if auth.is_allowed('edita.universidade') and len(banners) < 10:
        populate_from_request(banner)
        banner.data_cadastro = datetime.datetime.now().strftime(
            "%Y-%m-%d %H:%M:%S")
        banner.usuario_id = auth.user.identifier
        banner.ordem = len(banners)
        if banner.insert():
            Logs(
                0, auth.user.identifier, auth.user.nome + '(' + auth.user.cpf +
                ')' + ' cadastrou um banner [Cód. ' +
                banner.identifier.__str__() + ']', 'banner', banner.identifier,
                datetime.datetime.now().strftime(
                    "%Y-%m-%d %H:%M:%S")).insert()
            return json_response(message='Banner cadastrado!',
                                 data=[banner],
                                 redirect=url_for('banner.admin_lista'))
        else:
            return json_response(message='Não foi possível cadastrar o banner',
                                 data=[]), 400
    else:
        return json_response(
            message='Você não tem permissão para realizar esta ação',
            data=[]), 403
Пример #11
0
def admin_remover(identifier: int):
    banner = Banner()
    banner.select(identifier)
    auth = Auth()
    if banner.identifier > 0:
        if auth.is_allowed('edita.universidade', banner):
            if banner.delete():
                Logs(
                    0, auth.user.identifier, auth.user.nome + '(' +
                    auth.user.cpf + ')' + ' removeu o banner [Cód. ' +
                    banner.identifier.__str__() + ']', 'banner',
                    banner.identifier,
                    datetime.datetime.now().strftime(
                        "%Y-%m-%d %H:%M:%S")).insert()
                return json_response(message='Banner removido!',
                                     data=[],
                                     redirect=url_for('banner.admin_lista'))
            else:
                return json_response(
                    message='Não foi possível remover o banner', data=[]), 400
        else:
            return json_response(
                message='Você não tem permissão para realizar esta ação',
                data=[]), 403
    else:
        return json_response(message='Banner não encontrado', data=[]), 404
Пример #12
0
def admin_cadastrar():
    """ Cadastro de notícias """
    auth = Auth()
    if auth.is_allowed('cadastra.noticia'):
        noticia = Noticia()
        populate_from_request(noticia)
        noticia.data_cadastro = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        noticia.usuario_id = auth.user.identifier
        if noticia.insert():
            imagens = get_uploaded_images()
            order = 0
            for imagem in imagens:
                imagem.noticia_id = noticia.identifier
                imagem.data_cadastro = noticia.data_cadastro
                imagem.ordem = order
                imagem.insert()
                order = order + 1
            Logs(0, auth.user.identifier,
                 auth.user.nome + '(' + auth.user.cpf + ')' + ' cadastrou a notícia ' + noticia.titulo + ' [Cód. ' + noticia.identifier.__str__() + ']',
                 'noticia', noticia.identifier, datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")).insert()
            return json_response(message='Notícia cadastrada', data=[noticia], redirect=url_for('noticias.admin_lista'))
        else:
            return json_response(message='Não foi possível cadastrar a notícia', data=[]), 400
    else:
        return json_response(message='Você não tem permissão para realizar esta ação', data=[]), 403
Пример #13
0
def admin_cadastrar():
    """ Cadastro de avisos """
    auth = Auth()
    if auth.is_allowed('cadastra.aviso'):
        aviso = Aviso()
        populate_from_request(aviso)
        aviso.data_cadastro = datetime.datetime.now().strftime(
            "%Y-%m-%d %H:%M:%S")
        aviso.usuario_id = auth.user.identifier
        if aviso.insert():
            Logs(
                0, auth.user.identifier, auth.user.nome + '(' + auth.user.cpf +
                ')' + ' cadastrou o aviso ' + aviso.titulo + ' [Cód. ' +
                aviso.identifier.__str__() + ']', 'aviso', aviso.identifier,
                datetime.datetime.now().strftime(
                    "%Y-%m-%d %H:%M:%S")).insert()
            return json_response(message='Aviso cadastrado!',
                                 data=[aviso],
                                 redirect=url_for('avisos.admin_lista'))
        else:
            return json_response(message='Não foi possível cadastrar o aviso',
                                 data=[]), 400
    else:
        return json_response(
            message='Você não tem permissão para realizar esta ação',
            data=[]), 403
Пример #14
0
def admin_remover(identifier: int):
    aviso = Aviso()
    aviso.select(identifier)
    auth = Auth()
    if aviso.identifier > 0:
        if auth.is_allowed('remove.aviso', aviso):
            if aviso.delete():
                Logs(
                    0, auth.user.identifier, auth.user.nome + '(' +
                    auth.user.cpf + ')' + ' removeu o aviso ' + aviso.titulo +
                    ' [Cód. ' + aviso.identifier.__str__() + ']', 'aviso',
                    aviso.identifier,
                    datetime.datetime.now().strftime(
                        "%Y-%m-%d %H:%M:%S")).insert()
                return json_response(message='Aviso removido!',
                                     data=[],
                                     redirect=url_for('avisos.admin_lista'))
            else:
                return json_response(
                    message='Não foi possível remover o aviso', data=[]), 400
        else:
            return json_response(
                message='Você não tem permissão para realizar esta ação',
                data=[]), 403
    else:
        return json_response(message='Aviso não encontrado', data=[]), 404
def admin_editar():
    """ Edição de universidade """
    universidade = Universidade()
    universidade.select(1)
    auth = Auth()
    if auth.is_allowed('edita.universidade'):
        populate_from_request(universidade)
        universidade.data_atualizacao = datetime.datetime.now().strftime(
            "%Y-%m-%d %H:%M:%S")
        if universidade.update():
            Logs(
                0, auth.user.identifier, auth.user.nome + '(' + auth.user.cpf +
                ')' + ' editou os dados da universidade ' + universidade.nome +
                ' [Cód. ' + universidade.identifier.__str__() + ']',
                'universidade', universidade.identifier,
                datetime.datetime.now().strftime(
                    "%Y-%m-%d %H:%M:%S")).insert()
            return json_response(
                message='Dados da universidade atualizados!',
                data=[universidade],
                redirect=url_for('universidade.admin_universidade'))
        else:
            return json_response(
                message='Não foi possível editar a universidade', data=[]), 400
    else:
        return json_response(
            message='Você não tem permissão para realizar esta ação',
            data=[]), 403
Пример #16
0
def admin_editar(identifier: int):
    """ Edição de usuários """
    usuario = Usuario()
    usuario.select(identifier)
    auth = Auth()
    if usuario.identifier > 0:
        if auth.is_allowed('edita.usuario', usuario):
            populate_from_request(usuario)
            # Apenas usuários que podem editar qualquer usuário (e não apenas si mesmo) podem alterar o nível de perm.
            if auth.is_allowed('edita.usuario') and 'nivel' in request.form:
                usuario.nivel = int(request.form['nivel'])

            # Se estiver alterando o próprio perfil, solicita senha
            if auth.user.identifier == usuario.identifier:
                if 'antiga' not in request.form or len(
                        request.form['antiga']) == 0:
                    return json_response(message='Informe sua senha atual',
                                         data=[]), 400
                elif not Usuario.check_hash(request.form['antiga'],
                                            usuario.senha):
                    return json_response(message='Senha atual incorreta',
                                         data=[]), 400

            if usuario.login_exists(usuario.cpf, usuario.identifier):
                return json_response(
                    message='O CPF já está em uso, utilize outro',
                    data=[]), 400

            # Altera senha apenas se for enviado um valor novo
            if 'senha' in request.form and len(request.form['senha']) > 0:
                if not Usuario.valid_pass(request.form['senha']):
                    return json_response(
                        message='A senha deve ter pelo menos 6 dígitos',
                        data=[]), 400
                else:
                    usuario.senha = Usuario.hash(request.form['senha'])
                    usuario.update_password()

            usuario.data_atualizacao = datetime.datetime.now().strftime(
                "%Y-%m-%d %H:%M:%S")
            if usuario.update():
                Logs(
                    0, auth.user.identifier, auth.user.nome + '(' +
                    auth.user.cpf + ')' + ' editou o usuário ' + usuario.nome +
                    ' (' + usuario.cpf + ')', 'usuario', usuario.identifier,
                    datetime.datetime.now().strftime(
                        "%Y-%m-%d %H:%M:%S")).insert()
                return json_response(message='Usuário atualizado!',
                                     data=[usuario])
            else:
                return json_response(
                    message='Não foi possível editar o usuário', data=[]), 400
        else:
            return json_response(
                message='Você não tem permissão para realizar esta ação',
                data=[]), 403
    else:
        return json_response(message='Usuário não encontrado', data=[]), 404
Пример #17
0
def migrate_database():
    print('Aguarde...')
    # Cria tabelas
    Usuario.create_table()
    Aviso.create_table()
    Noticia.create_table()
    ImagemNoticia.create_table()
    Anuncio.create_table()
    ImagemAnuncio.create_table()
    Universidade.create_table()
    Banner.create_table()
    Logs.create_table()
    # Adiciona usuários e dados da universidade
    Usuario.insert_dummy()
    Universidade.insert_dummy()
    Banner.insert_dummy()
    Aviso.insert_dummy()
    Noticia.insert_dummy()
    Anuncio.insert_dummy()
    print('Dados inseridos!')
Пример #18
0
def login():
    cpf = request.form.get('login')
    senha = request.form.get('senha')
    usuario = Usuario()
    usuario.select_by_login(cpf)
    if usuario.identifier > 0 and Usuario.check_hash(senha, usuario.senha):
        usuario.permanent = True
        session['user'] = usuario.serialize()
        session['time'] = time.time()
        Logs(0, usuario.identifier,
             usuario.nome + ' (' + usuario.cpf + ')' + ' entrou no sistema',
             'usuario', usuario.identifier,
             datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")).insert()
        return redirect(url_for('home.admin_home'))
    return redirect(url_for('usuarios.entrar', erro=1))
Пример #19
0
def admin_remover(identifier: int):
    noticia = Noticia()
    noticia.select(identifier)
    auth = Auth()
    if noticia.identifier > 0:
        if auth.is_allowed('remove.noticia', noticia):
            if noticia.delete():
                Logs(0, auth.user.identifier,
                     auth.user.nome + '(' + auth.user.cpf + ')' + ' removeu a notícia ' + noticia.titulo + ' [Cód. ' + noticia.identifier.__str__() + ']',
                     'noticia', noticia.identifier, datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")).insert()
                return json_response(message='Notícia removida!', data=[], redirect=url_for('noticias.admin_lista'))
            else:
                return json_response(message='Não foi possível remover a notícia', data=[]), 400
        else:
            return json_response(message='Você não tem permissão para realizar esta ação', data=[]), 403
    else:
        return json_response(message='Notícia não encontrada', data=[]), 404
Пример #20
0
def admin_imagem_remover(identifier: int):
    imagem = ImagemNoticia()
    imagem.select(identifier)
    auth = Auth()
    if imagem.identifier > 0:
        if auth.is_allowed('edita.noticia', imagem.get_parent()):
            if imagem.delete():
                noticia = imagem.get_parent()
                Logs(0, auth.user.identifier,
                     auth.user.nome + '(' + auth.user.cpf + ')' + ' removeu uma imagem da notícia ' + noticia.titulo + ' [Cód. ' + noticia.identifier.__str__() + ']',
                     'noticia', noticia.identifier, datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")).insert()
                return json_response(message='Imagem removida!', data=[],
                                     redirect=url_for('noticias.admin_edicao', identifier=imagem.noticia_id))
            else:
                return json_response(message='Não foi possível remover a imagem', data=[]), 400
        else:
            return json_response(message='Você não tem permissão para realizar esta ação', data=[]), 403
    else:
        return json_response(message='Imagem não encontrada', data=[]), 404
Пример #21
0
def admin_imagem_ordem():
    auth = Auth()
    if auth.is_allowed('edita.universidade'):
        ordem = request.form['ordem']
        lista = ordem.split(',')
        imagem = Banner()
        count = 0
        for item in lista:
            imagem.select(item)
            imagem.ordem = count
            imagem.update()
            count = count + 1
        Logs(
            0, auth.user.identifier, auth.user.nome + '(' + auth.user.cpf +
            ')' + ' alterou a ordem dos banners', 'banner', 0,
            datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")).insert()
        return json_response(message='Ordem atualizada!', data=[])
    else:
        return json_response(
            message='Você não tem permissão para realizar esta ação',
            data=[]), 403
Пример #22
0
def admin_imagem_ordem(identifier: int):
    noticia = Noticia()
    noticia.select(identifier)
    auth = Auth()
    if noticia.identifier > 0:
        if Auth().is_allowed('edita.noticia', noticia):
            ordem = request.form['ordem']
            lista = ordem.split(',')
            imagem = ImagemNoticia()
            count = 0
            for item in lista:
                imagem.select(item)
                imagem.ordem = count
                imagem.update()
                count = count + 1
            Logs(0, auth.user.identifier,
                 auth.user.nome + '(' + auth.user.cpf + ')' + ' alterou a ordem das imagens da notícia' + noticia.titulo + ' [Cód. ' + noticia.identifier.__str__() + ']',
                 'noticia', noticia.identifier, datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")).insert()
            return json_response(message='Ordem atualizada!', data=[])
        else:
            return json_response(message='Você não tem permissão para realizar esta ação', data=[]), 403
    else:
        return json_response(message='Notícia não encontrado', data=[]), 404