Beispiel #1
0
        def form_valid(self, form):
            norma_antiga = NormaJuridica.objects.get(pk=self.kwargs['pk'])

            # Feito desta forma para que sejam materializados os assuntos
            # antigos
            assuntos_antigos = set(norma_antiga.assuntos.all())

            dict_objeto_antigo = norma_antiga.__dict__
            self.object = form.save()
            dict_objeto_novo = self.object.__dict__

            atributos = [
                'tipo_id', 'numero', 'ano', 'data', 'esfera_federacao',
                'complemento', 'materia_id', 'numero', 'data_publicacao',
                'data_vigencia', 'veiculo_publicacao',
                'pagina_inicio_publicacao', 'pagina_fim_publicacao', 'ementa',
                'indexacao', 'observacao', 'texto_integral'
            ]

            for atributo in atributos:
                if dict_objeto_antigo[atributo] != dict_objeto_novo[atributo]:
                    self.object.user = self.request.user
                    self.object.ip = get_client_ip(self.request)
                    self.object.save()
                    break

            # Campo Assuntos não veio no __dict__, então é comparado
            # separadamente
            assuntos_novos = set(self.object.assuntos.all())
            if assuntos_antigos != assuntos_novos:
                self.object.user = self.request.user
                self.object.ip = get_client_ip(self.request)
                self.object.save()

            return super().form_valid(form)
Beispiel #2
0
        def get_initial(self):
            initial = super().get_initial()

            initial['user'] = self.request.user
            initial['ip'] = get_client_ip(self.request)

            tz = timezone.get_current_timezone()
            initial['ultima_edicao'] = tz.localize(datetime.now())

            username = self.request.user.username
            try:
                self.logger.debug(
                    'user='******'. Tentando obter objeto de modelo da esfera da federação.'
                )
                esfera = sapl.base.models.AppConfig.objects.last(
                ).esfera_federacao
                initial['esfera_federacao'] = esfera
            except:
                self.logger.error(
                    'user='******'. Erro ao obter objeto de modelo da esfera da federação.')
                pass
            initial['complemento'] = False
            return initial
Beispiel #3
0
 def get_initial(self):
     initial_data = {}
     initial_data['user_anulacao'] = self.request.user.username
     initial_data['ip_anulacao'] = get_client_ip(self.request)
     return initial_data
Beispiel #4
0
 def get_initial(self):
     initial_data = {}
     initial_data['user_anulacao'] = self.request.user.username
     initial_data['ip_anulacao'] = get_client_ip(self.request)
     return initial_data
Beispiel #5
0
def votante_view(request):
    logger = logging.getLogger(__name__)
    username = request.user.username

    # Pega o votante relacionado ao usuário
    template_name = 'painel/voto_nominal.html'
    context = {}
    context_vars = {}

    try:
        logger.debug('user='******'. Tentando obter objeto Votante com user={}.'.format(
                         request.user))
        votante = Votante.objects.get(user=request.user)
    except ObjectDoesNotExist:
        logger.error(
            "user="******". Usuário (user={}) não cadastrado como votante na tela de parlamentares. "
            "Contate a administração de sua Casa Legislativa!".format(
                request.user))
        msg = _(
            "Usuário não cadastrado como votante na tela de parlamentares. Contate a administração de sua Casa Legislativa!"
        )
        context.update({'error_message': msg})

        return render(request, template_name, context)
    context_vars = {'votante': votante}
    context = {'head_title': str(_('Votação Individual'))}

    # Verifica se usuário possui permissão para votar
    if 'parlamentares.can_vote' in request.user.get_all_permissions():
        context, context_vars = can_vote(context, context_vars, request)
        logger.debug("user="******". Verificando se usuário {} possui permissão para votar."
                     .format(request.user))
    else:
        logger.error(
            "user="******". Usuário {} sem permissão para votar.".format(request.user))
        context.update({
            'permissao': False,
            'error_message': 'Usuário sem permissão para votar.'
        })

    # Salva o voto
    if request.method == 'POST':
        if context_vars['ordem_dia']:
            try:
                logger.info(
                    "user="******". Tentando obter objeto VotoParlamentar para parlamentar={} e ordem={}."
                    .format(context_vars['parlamentar'],
                            context_vars['ordem_dia']))
                voto = VotoParlamentar.objects.get(
                    parlamentar=context_vars['parlamentar'],
                    ordem=context_vars['ordem_dia'])
            except ObjectDoesNotExist:
                logger.error(
                    "user="******". Erro ao obter VotoParlamentar para parlamentar={} e ordem={}. Criando objeto."
                    .format(context_vars['parlamentar'],
                            context_vars['ordem_dia']))
                voto = VotoParlamentar.objects.create(
                    parlamentar=context_vars['parlamentar'],
                    voto=request.POST['voto'],
                    user=request.user,
                    ip=get_client_ip(request),
                    ordem=context_vars['ordem_dia'])
            else:
                logger.info(
                    "user="******". VotoParlamentar para parlamentar={} e ordem={} obtido com sucesso."
                    .format(context_vars['parlamentar'],
                            context_vars['ordem_dia']))
                voto.voto = request.POST['voto']
                voto.ip = get_client_ip(request)
                voto.user = request.user
                voto.save()

        elif context_vars['expediente']:
            try:
                logger.info(
                    "user="******". Tentando obter objeto VotoParlamentar para parlamentar={} e expediente={}."
                    .format(context_vars['parlamentar'],
                            context_vars['expediente']))
                voto = VotoParlamentar.objects.get(
                    parlamentar=context_vars['parlamentar'],
                    expediente=context_vars['expediente'])
            except ObjectDoesNotExist:
                logger.error(
                    "user="******". Erro ao obter VotoParlamentar para parlamentar={} e expediente={}. Criando objeto."
                    .format(context_vars['parlamentar'],
                            context_vars['expediente']))
                voto = VotoParlamentar.objects.create(
                    parlamentar=context_vars['parlamentar'],
                    voto=request.POST['voto'],
                    user=request.user,
                    ip=get_client_ip(request),
                    expediente=context_vars['expediente'])
            else:
                logger.info(
                    "user="******". VotoParlamentar para parlamentar={} e expediente={} obtido com sucesso."
                    .format(context_vars['parlamentar'],
                            context_vars['expediente']))
                voto.voto = request.POST['voto']
                voto.ip = get_client_ip(request)
                voto.user = request.user
                voto.save()

        return HttpResponseRedirect(reverse('sapl.painel:voto_individual'))

    return render(request, template_name, context)
Beispiel #6
0
def votante_view(request):
    # Pega o votante relacionado ao usuário
    template_name = 'painel/voto_nominal.html'
    try:
        votante = Votante.objects.get(user=request.user)
    except ObjectDoesNotExist:
        raise Http404()

    context = {'head_title': str(_('Votação Individual'))}

    # Verifica se usuário possui permissão para votar
    if 'parlamentares.can_vote' in request.user.get_all_permissions():
        context.update({'permissao': True})

        # Pega sessão
        sessao, msg = votacao_aberta(request)

        if sessao and not msg:
            pk = sessao.pk
            context.update({'sessao_id': pk})
            context.update({
                'sessao': sessao,
                'data': sessao.data_inicio,
                'hora': sessao.hora_inicio
            })

            # Inicializa presentes
            presentes = []

            # Verifica votação aberta
            # Se aberta, verifica se é nominal. ID nominal == 2
            ordem_dia = get_materia_aberta(pk)
            expediente = get_materia_expediente_aberta(pk)

            materia_aberta = None
            if ordem_dia:
                materia_aberta = ordem_dia
                presentes = PresencaOrdemDia.objects.filter(
                    sessao_plenaria_id=pk).values_list('parlamentar_id',
                                                       flat=True).distinct()
            elif expediente:
                materia_aberta = expediente
                presentes = SessaoPlenariaPresenca.objects.filter(
                    sessao_plenaria_id=pk).values_list('parlamentar_id',
                                                       flat=True).distinct()

            if materia_aberta:
                if not materia_aberta.registro_aberto:
                    if materia_aberta.tipo_votacao == VOTACAO_NOMINAL:
                        context.update({
                            'materia': materia_aberta.materia,
                            'ementa': materia_aberta.materia.ementa
                        })

                        parlamentar = votante.parlamentar
                        parlamentar_presente = False
                        if parlamentar.id in presentes:
                            parlamentar_presente = True
                        else:
                            context.update({
                                'error_message':
                                'Não há presentes na Sessão com a '
                                'matéria em votação.'
                            })

                        if parlamentar_presente:
                            voto = []
                            if ordem_dia:
                                voto = VotoParlamentar.objects.filter(
                                    ordem=ordem_dia)
                            elif expediente:
                                voto = VotoParlamentar.objects.filter(
                                    expediente=expediente)

                            if voto:
                                try:
                                    voto = voto.get(parlamentar=parlamentar)
                                    context.update(
                                        {'voto_parlamentar': voto.voto})
                                except ObjectDoesNotExist:
                                    context.update({
                                        'voto_parlamentar':
                                        'Voto não '
                                        'computado.'
                                    })
                        else:
                            context.update({
                                'error_message':
                                'Você não está presente na '
                                'Ordem do Dia/Expediente em votação.'
                            })
                    else:
                        context.update({
                            'error_message':
                            'A matéria aberta não é do tipo '
                            'votação nominal.'
                        })
                else:
                    context.update({
                        'error_message':
                        'A votação para esta matéria já encerrou.'
                    })
            else:
                context.update(
                    {'error_message': 'Não há nenhuma matéria aberta.'})

        elif not sessao and msg:
            return HttpResponseRedirect('/')

        else:
            context.update(
                {'error_message': 'Não há nenhuma sessão com matéria aberta.'})

    else:
        context.update({
            'permissao': False,
            'error_message': 'Usuário sem permissão para votar.'
        })

    # Salva o voto
    if request.method == 'POST':
        if ordem_dia:
            try:
                voto = VotoParlamentar.objects.get(parlamentar=parlamentar,
                                                   ordem=ordem_dia)
            except ObjectDoesNotExist:
                voto = VotoParlamentar.objects.create(
                    parlamentar=parlamentar,
                    voto=request.POST['voto'],
                    user=request.user,
                    ip=get_client_ip(request),
                    ordem=ordem_dia)
            else:
                voto.voto = request.POST['voto']
                voto.ip = get_client_ip(request)
                voto.user = request.user
                voto.save()

        elif expediente:
            try:
                voto = VotoParlamentar.objects.get(parlamentar=parlamentar,
                                                   expediente=expediente)
            except ObjectDoesNotExist:
                voto = VotoParlamentar.objects.create(
                    parlamentar=parlamentar,
                    voto=request.POST['voto'],
                    user=request.user,
                    ip=get_client_ip(request),
                    expediente=expediente)
            else:
                voto.voto = request.POST['voto']
                voto.ip = get_client_ip(request)
                voto.user = request.user
                voto.save()

        return HttpResponseRedirect(reverse('sapl.painel:voto_individual'))

    return render(request, template_name, context)
Beispiel #7
0
def votante_view(request, pk):
    if not Votante.objects.filter(user=request.user).exists():
        raise Http404('Você não tem permissão para votar')

    context = {'head_title': str(_('Votação Individual')), 'sessao_id': pk}

    # Pega sessão
    sessao = SessaoPlenaria.objects.get(pk=pk)
    context.update({
        'sessao': sessao,
        'data': sessao.data_inicio,
        'hora': sessao.hora_inicio
    })

    # Inicializa presentes
    presentes = []

    # Verifica votação aberta
    # Se aberta, verifica se é nominal. ID nominal == 2
    ordem_dia = get_materia_aberta(pk)
    expediente = get_materia_expediente_aberta(pk)
    materia = None

    if ordem_dia:
        materia = ordem_dia.materia
        if ordem_dia.tipo_votacao == VOTACAO_NOMINAL:
            context.update({'materia': materia, 'ementa': materia.ementa})
            presentes = PresencaOrdemDia.objects.filter(sessao_plenaria_id=pk)
        else:
            context.update(
                {'materia': 'A matéria aberta não é votação nominal.'})
    elif expediente:
        materia = expediente.materia
        if expediente.tipo_votacao == VOTACAO_NOMINAL:
            context.update({'materia': materia, 'ementa': materia.ementa})
            presentes = SessaoPlenariaPresenca.objects.filter(
                sessao_plenaria_id=pk)
        else:
            context.update(
                {'materia': 'A matéria aberta não é votação nominal.'})
    else:
        context.update(
            {'materia': 'Nenhuma matéria com votação nominal aberta.'})

    # Verifica se usuário possui permissão para votar
    if 'parlamentares.can_vote' in request.user.get_all_permissions():
        context.update({'permissao': True})
    else:
        context.update({'permissao': False})

    # Verifica se usuário está presente na sessão
    try:
        votante = Votante.objects.get(user=request.user)
    except ObjectDoesNotExist:
        context.update({
            'error_message':
            'Erro ao recuperar parlamentar ligado ao usuário'
        })
    else:
        parlamentar = votante.parlamentar
        context.update({'presente': False})
        if len(presentes) > 0:
            for p in presentes:
                if p.parlamentar.id == parlamentar.id:
                    context.update({'presente': True})
                    break
        else:
            context.update({
                'error_message':
                'Nenhuma matéria com votação nominal aberta.'
            })

    # Recupera o voto do parlamentar logado
    try:
        voto = VotoNominal.objects.get(sessao=sessao,
                                       parlamentar=parlamentar,
                                       materia=materia)
    except ObjectDoesNotExist:
        context.update({'voto_parlamentar': 'Voto não computado.'})
    else:
        context.update({'voto_parlamentar': voto.voto})

    # Salva o voto
    if request.method == 'POST':
        try:
            voto = VotoNominal.objects.get(sessao=sessao,
                                           parlamentar=parlamentar,
                                           materia=materia)
        except ObjectDoesNotExist:
            voto = VotoNominal.objects.create(sessao=sessao,
                                              parlamentar=parlamentar,
                                              materia=materia,
                                              voto=request.POST['voto'],
                                              ip=get_client_ip(request),
                                              user=request.user)
        else:
            voto.voto = request.POST['voto']
            voto.ip = get_client_ip(request)
            voto.save()
        return HttpResponseRedirect(
            reverse('sapl.painel:voto_individual', kwargs={'pk': pk}))

    return render(request, 'painel/voto_nominal.html', context)
Beispiel #8
0
def votante_view(request):
    # Pega o votante relacionado ao usuário
    template_name = 'painel/voto_nominal.html'
    context = {}
    context_vars = {}

    try:
        votante = Votante.objects.get(user=request.user)
    except ObjectDoesNotExist:
        msg = _("Usuário não cadastrado como votante na tela de parlamentares. Contate a administração de sua Casa Legislativa!")
        context.update({
            'error_message':msg
        })

        return render(request, template_name, context)
    context_vars = {'votante': votante}
    context = {'head_title': str(_('Votação Individual'))}

    # Verifica se usuário possui permissão para votar
    if 'parlamentares.can_vote' in request.user.get_all_permissions():
        context, context_vars = can_vote(context, context_vars, request)

    else:
        context.update({'permissao': False,
                        'error_message': 'Usuário sem permissão para votar.'})

    # Salva o voto
    if request.method == 'POST':
        if context_vars['ordem_dia']:
            try:
                voto = VotoParlamentar.objects.get(
                    parlamentar=context_vars['parlamentar'],
                    ordem=context_vars['ordem_dia'])
            except ObjectDoesNotExist:
                voto = VotoParlamentar.objects.create(
                    parlamentar=context_vars['parlamentar'],
                    voto=request.POST['voto'],
                    user=request.user,
                    ip=get_client_ip(request),
                    ordem=context_vars['ordem_dia'])
            else:
                voto.voto = request.POST['voto']
                voto.ip = get_client_ip(request)
                voto.user = request.user
                voto.save()

        elif context_vars['expediente']:
            try:
                voto = VotoParlamentar.objects.get(
                    parlamentar=context_vars['parlamentar'],
                    expediente=context_vars['expediente'])
            except ObjectDoesNotExist:
                voto = VotoParlamentar.objects.create(
                    parlamentar=context_vars['parlamentar'],
                    voto=request.POST['voto'],
                    user=request.user,
                    ip=get_client_ip(request),
                    expediente=context_vars['expediente'])
            else:
                voto.voto = request.POST['voto']
                voto.ip = get_client_ip(request)
                voto.user = request.user
                voto.save()

        return HttpResponseRedirect(
            reverse('sapl.painel:voto_individual'))

    return render(request, template_name, context)