Browse Source

Permite colocar anexos em ocorrências na tela de Casas

dependabot/pip/requirements/pillow-11.3.0
Sesóstris Vieira 2 months ago
parent
commit
9b420f4424
  1. 40
      sigi/apps/casas/admin.py
  2. 24
      sigi/apps/casas/forms.py

40
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"<li><a href='{a.arquivo.url}'>{a.descricao}</a></li>"
for a in obj.anexo_set.all()
]
if anexos:
return "<ul>" + "".join(anexos) + "</ul>"
else:
return "Sem anexos"
@admin.register(TipoOrgao)
class TipoOrgaoAdmin(admin.ModelAdmin):

24
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

Loading…
Cancel
Save