diff --git a/sigi/apps/ocorrencias/admin.py b/sigi/apps/ocorrencias/admin.py index d0159f9..2c55cc9 100644 --- a/sigi/apps/ocorrencias/admin.py +++ b/sigi/apps/ocorrencias/admin.py @@ -3,11 +3,11 @@ from django.contrib import admin from django.contrib.admin.views.main import ChangeList from django.utils.translation import ugettext as _ -from filters import OcorrenciaListFilter +from sigi.apps.ocorrencias.filters import OcorrenciaListFilter from sigi.apps.ocorrencias.models import Ocorrencia, Comentario, Anexo, Categoria, TipoContato from sigi.apps.servidores.models import Servidor from sigi.apps.utils.base_admin import BaseModelAdmin - +from sigi.apps.casas.admin import GerentesInterlegisFilter class ComentarioViewInline(admin.TabularInline): model = Comentario @@ -66,9 +66,11 @@ class OcorrenciaAdmin(BaseModelAdmin): list_display = ('data_criacao', 'casa_legislativa', 'get_municipio', 'get_uf', 'assunto', 'prioridade', 'status', 'data_modificacao', 'setor_responsavel',) - list_filter = (OcorrenciaListFilter, 'status', 'prioridade', - 'categoria__nome', 'setor_responsavel__nome', - 'casa_legislativa__gerentes_interlegis',) + list_filter = ( + OcorrenciaListFilter, 'status', 'prioridade', 'categoria__nome', + 'setor_responsavel__nome', + ('casa_legislativa__gerentes_interlegis', GerentesInterlegisFilter), + ) search_fields = ('casa_legislativa__search_text', 'assunto', 'servidor_registro__nome_completo', 'descricao', 'resolucao', 'ticket',) diff --git a/sigi/apps/ocorrencias/filters.py b/sigi/apps/ocorrencias/filters.py index de4d775..e8b9b80 100644 --- a/sigi/apps/ocorrencias/filters.py +++ b/sigi/apps/ocorrencias/filters.py @@ -11,6 +11,8 @@ class OcorrenciaListFilter(admin.SimpleListFilter): parameter_name = 'minhas' def lookups(self, request, model_admin): + if request.user.servidor is None: + return None return ( ('S', _(u'Atribuídos ao meu setor')), ('M', _(u'Registrados por mim')), @@ -18,7 +20,8 @@ class OcorrenciaListFilter(admin.SimpleListFilter): ) def queryset(self, request, queryset): - servidor = Servidor.objects.get(user=request.user) + servidor = request.user.servidor + # servidor = Servidor.objects.get(user=request.user) if self.value() == 'S': return queryset.filter(setor_responsavel=servidor.servico) elif self.value() == 'M': diff --git a/sigi/apps/ocorrencias/models.py b/sigi/apps/ocorrencias/models.py index 873f731..5e88def 100644 --- a/sigi/apps/ocorrencias/models.py +++ b/sigi/apps/ocorrencias/models.py @@ -60,8 +60,6 @@ class Ocorrencia(models.Model): on_delete=models.CASCADE, verbose_name=_(u'Casa Legislativa') ) - casa_legislativa.convenio_uf_filter = True - casa_legislativa.convenio_cl_tipo_filter = True data_criacao = models.DateField(_(u'Data de criação'), null=True, blank=True, auto_now_add=True) data_modificacao = models.DateField(_(u'Data de modificação'), null=True, blank=True, auto_now=True) categoria = models.ForeignKey( @@ -75,9 +73,7 @@ class Ocorrencia(models.Model): verbose_name=_(u"Tipo de contato") ) assunto = models.CharField(_(u'Assunto'), max_length=200) - assunto.grupo_filter = True status = models.IntegerField(_(u'Status'), choices=STATUS_CHOICES, default=1,) - status.multichoice_filter = True prioridade = models.IntegerField(_(u'Prioridade'), choices=PRIORITY_CHOICES, default=3, ) descricao = models.TextField(_(u'descrição'), blank=True,) resolucao = models.TextField(_(u'resolução'), blank=True,) diff --git a/sigi/apps/servidores/management/commands/mescla_servidor.py b/sigi/apps/servidores/management/commands/mescla_servidor.py new file mode 100644 index 0000000..9f23dfb --- /dev/null +++ b/sigi/apps/servidores/management/commands/mescla_servidor.py @@ -0,0 +1,68 @@ +# coding: utf-8 +from django.contrib.auth.models import User, Group +from sigi.apps.servidores.models import Servidor +from django.core.management.base import BaseCommand + +class Command(BaseCommand): + help = u'Transfere os dados do servidor OLD para o servidor NEW.' + args = u'old_id new_id' + + def handle(self, *args, **options): + if len(args) != 2: + self.stderr.write(u"Informe old_id e new_id") + return + + old_id = args[0] + new_id = args[1] + + old = Servidor.objects.get(id=old_id) + new = Servidor.objects.get(id=new_id) + + self.stdout.write(self.style.WARNING( + u"Transferir dados de {old_name} para {new_name}".format( + old_name=old.nome_completo, + new_name=new.nome_completo + ) + )) + + self.stdout.write(u"\t* Transferindo a carteira de atendimento...") + for casa in old.casas_que_gerencia.all(): + new.casas_que_gerencia.add(casa) + old.casas_que_gerencia.remove(casa) + + self.stdout.write(u"\t* Transferindo ocorrências registradas...") + old.ocorrencia_set.all().update(servidor_registro=new) + + self.stdout.write(u"\t* Transferindo comentários de ocorrências...") + old.comentario_set.all().update(usuario=new) + + self.stdout.write(u"\t* Transferindo convênios geridos...") + old.convenio_set.all().update(servidor_gestao=new) + + self.stdout.write(u"\t* Transferindo convênios acompanhados...") + old.convenio_set.all().update(acompanha=new) + + self.stdout.write(u"\t* Transferindo participação em eventos...") + old.equipe_evento.all().update(membro=new) + + self.stdout.write(u"\t* Transferindo convites para eventos...") + old.convite_set.all().update(servidor=new) + + self.stdout.write(u"\t* Transferindo diagnósticos...") + old.diagnostico_set.all().update(responsavel=new) + + self.stdout.write(u"\t* Transferindo participação em diagnósticos...") + old.equipe_set.all().update(membro=new) + + self.stdout.write(u"\t* Transferindo dados de autenticação...") + + if new.user: + old.user.logentry_set.all().update(user=new) + old.user.delete() + else: + new.user = old.user + new.save() + old.user = None + old.save() + + self.stdout.write(u"Concluído!") \ No newline at end of file