diff --git a/sigi/apps/casas/admin.py b/sigi/apps/casas/admin.py index 7ef6cc4..9991e67 100644 --- a/sigi/apps/casas/admin.py +++ b/sigi/apps/casas/admin.py @@ -15,7 +15,7 @@ from djbs import djbs_constants as djbsc from import_export import resources from import_export.admin import ExportActionMixin from import_export.fields import Field -from sigi.apps.casas.forms import OrgaoForm +from sigi.apps.casas.forms import OrgaoForm, OcorrenciaInlineForm from sigi.apps.casas.models import Orgao, Funcionario, TipoOrgao from sigi.apps.casas.filters import ( GerentesInterlegisFilter, @@ -146,7 +146,7 @@ class ParlamentarInline(admin.TabularInline): class FuncionarioInline(admin.StackedInline): model = Funcionario - djbs_cols = "1" + stacked_cols = "1" fields = ( ("desativado", "ult_alteracao"), "setor", @@ -302,21 +302,25 @@ class ServicoInline(admin.TabularInline): class OcorrenciaInline(admin.StackedInline): model = Ocorrencia + form = OcorrenciaInlineForm + stacked_cols = 1 fields = ( - "data_criacao", - "data_modificacao", - "categoria", - "tipo_contato", + ("data_criacao", "data_modificacao"), + ("categoria", "tipo_contato"), "assunto", - "prioridade", - "status", - "ticket", - "descricao", - "resolucao", + ("prioridade", "status", "ticket"), + ("descricao", "resolucao"), "servidor_registro", + ("anexo", "descricao_anexo"), + "get_anexos", ) autocomplete_fields = ("categoria", "tipo_contato") - readonly_fields = ["data_criacao", "data_modificacao", "servidor_registro"] + readonly_fields = [ + "data_criacao", + "data_modificacao", + "servidor_registro", + "get_anexos", + ] ordering = ("-data_modificacao",) extra = 0 show_change_link = True @@ -332,6 +336,18 @@ class OcorrenciaInline(admin.StackedInline): return super().has_change_permission(request, obj) return False + @admin.display(description=_("Anexos")) + @mark_safe + def get_anexos(self, obj): + anexos = [ + f"
  • {a.descricao}
  • " + for a in obj.anexo_set.all() + ] + if anexos: + return "" + else: + return "Sem anexos" + @admin.register(TipoOrgao) class TipoOrgaoAdmin(admin.ModelAdmin): diff --git a/sigi/apps/casas/forms.py b/sigi/apps/casas/forms.py index 3866b58..8c6ad46 100644 --- a/sigi/apps/casas/forms.py +++ b/sigi/apps/casas/forms.py @@ -3,6 +3,7 @@ from django.core.exceptions import ValidationError from django.utils.translation import gettext as _ from localflavor.br.forms import BRZipCodeField from sigi.apps.casas.models import Funcionario, Orgao +from sigi.apps.ocorrencias.models import Ocorrencia, Anexo from sigi.apps.servidores.models import Servidor from sigi.apps.utils import valida_cnpj @@ -109,3 +110,26 @@ class CnpjErradoForm(forms.Form): required=False, initial=False, ) + + +class OcorrenciaInlineForm(forms.ModelForm): + anexo = forms.FileField(label=_("Adicionar anexo"), required=False) + descricao_anexo = forms.CharField( + label=_("Descrição do novo anexo"), max_length=70, required=False + ) + + class Meta: + model = Ocorrencia + fields = "__all__" + + def save(self, commit=True): + instance = super().save(commit=False) + arquivo = self.cleaned_data["anexo"] + descricao = self.cleaned_data["descricao_anexo"] + if arquivo: + anexo = Anexo(arquivo=arquivo, descricao=descricao) + instance.anexo_set.add(anexo, bulk=False) + self.cleaned_data["anexo"] = None + if commit: + instance.save() + return instance