Sistema de Informações Gerenciais do Interlegis
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

160 lines
3.7 KiB

from django.db import models
from django.contrib import admin
from django.utils.safestring import mark_safe
from django.utils.translation import gettext as _
from sigi.apps.servidores.models import Servidor, Servico
from sigi.apps.servidores.filters import ServicoFilter
class ServicoInline(admin.TabularInline):
model = Servico
fields = [
"nome",
"sigla",
"responsavel",
]
autocomplete_fields = [
"responsavel",
]
class ServidorInline(admin.TabularInline):
model = Servidor
fields = (
"imagem_foto",
"nome_completo",
"is_active",
)
readonly_fields = (
"imagem_foto",
"nome_completo",
"is_active",
)
def has_add_permission(self, request, obj):
return False
def has_delete_permission(self, request, obj):
return False
def imagem_foto(sels, servidor):
if servidor.foto:
return mark_safe(
f'<img src="{servidor.foto.url}" style="height: 60px; '
f'width: 60px; border-radius: 50%;">'
)
else:
return ""
imagem_foto.short_description = _("foto")
def is_active(self, servidor):
if servidor.user:
return servidor.user.is_active
else:
return False
is_active.admin_order_field = "user__is_active"
is_active.boolean = True
is_active.short_description = _("ativo")
@admin.register(Servico)
class ServicoAdmin(admin.ModelAdmin):
list_display = ["sigla", "nome", "subordinado", "responsavel"]
list_filter = [
ServicoFilter,
]
search_fields = [
"nome",
"sigla",
]
autocomplete_fields = [
"subordinado",
"responsavel",
]
inlines = [
ServicoInline,
ServidorInline,
]
@admin.register(Servidor)
class ServidorAdmin(admin.ModelAdmin):
list_display = (
"imagem_foto",
"nome_completo",
"apelido",
"is_active",
"servico",
"cargo",
)
list_display_links = (
"imagem_foto",
"nome_completo",
)
list_filter = (
"user__is_active",
"externo",
"servico",
)
search_fields = (
"nome_completo",
"apelido",
"cargo",
"user__email",
"user__first_name",
"user__last_name",
"user__username",
"servico__nome",
"servico__sigla",
)
autocomplete_fields = ("user",)
fieldsets = (
(
None,
{
"fields": (
"user",
"nome_completo",
"apelido",
"foto",
"servico",
"cargo",
"moodle_userid",
)
},
),
(
_("outros órgãos"),
{
"fields": ("externo", "orgao_origem", "qualificacoes"),
},
),
)
def lookup_allowed(self, lookup, value, request):
return super().lookup_allowed(lookup, value, request) or lookup in [
"user__is_active__exact"
]
def is_active(self, servidor):
if servidor.user:
return servidor.user.is_active
else:
return False
is_active.admin_order_field = "user__is_active"
is_active.boolean = True
is_active.short_description = _("ativo")
def imagem_foto(sels, servidor):
if servidor.foto:
return mark_safe(
f'<img src="{servidor.foto.url}" style="height: 60px; '
f'width: 60px; border-radius: 50%;">'
)
else:
return ""
imagem_foto.short_description = _("foto")