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