administrador app owns the three models that form the administrative backbone of SIGEP: Evento, ConfiguracionSistema, and AuditoriaLog. Every other app references administrador.Evento as a foreign key for anything event-scoped.
Evento
Represents a single academic event. All other scoped data — ponencias, projects, rubrics, spaces, and inscriptions — references anEvento via a foreign key.
Fields
Event title. Max 200 characters.
Full event description. Stored as
TextField with no length limit.Event date. Stored as
DateField.Venue or location name. Max 150 characters.
Maximum attendance capacity.
PositiveIntegerField. Defaults to 0 (unlimited / not yet set).Publication state. Defaults to
BORRADOR. See choices below.| Value | Display label |
|---|---|
BORRADOR | Borrador |
PUBLICADO | Publicado |
CERRADO | Cerrado |
The user who created the event. Nullable — set to
null when the user is deleted (SET_NULL).Set automatically on creation (
auto_now_add).Updated automatically on every save (
auto_now).Only events with
estado = PUBLICADO are visible to speakers and participants. The puede_editar() method on Ponencia and ProyectoParticipante checks this value to gate document uploads.ConfiguracionSistema
A simple key/value store for platform-wide settings. Use it to hold values that administrators need to change at runtime without a code deployment — for example, registration deadlines, feature flags, or external service URLs.Fields
Unique setting key. Max 100 characters. Uniqueness is enforced at the database level.
Setting value. Max 255 characters. All values are stored as plain strings; cast in application code as needed.
Updated automatically on every save (
auto_now).The user who last changed this setting. Nullable — set to
null when the user is deleted (SET_NULL).AuditoriaLog
An append-only audit table. Every significant action in the platform — including all authentication events — writes a row here. Rows are never updated in place.Fields
The authenticated user who performed the action. Nullable —
null for anonymous or failed-login events.Human-readable action label. Max 255 characters. For auth events the format is
AUTENTICACION | LOGIN_EXITOSO, AUTENTICACION | LOGOUT, or AUTENTICACION | LOGIN_FALLIDO | usuario=<identifier>.App or subsystem that generated the log entry. Max 80 characters. Indexed. Example:
AUTENTICACION.Short action type code. Max 80 characters. Indexed. Example:
LOGIN, LOGOUT, LOGIN_FALLIDO.Name of the affected model or entity. Max 120 characters. Example:
Sesion, Evento.Primary key of the affected object as a string. Max 60 characters. May be empty for non-object actions.
Outcome of the action. Indexed. Defaults to
EXITOSO.| Value | Display label |
|---|---|
EXITOSO | Exitoso |
FALLIDO | Fallido |
ADVERTENCIA | Advertencia |
Arbitrary JSON payload with additional context. Defaults to an empty dict. For auth events, contains
path and, for failed logins, identidad.Set automatically on creation (
auto_now_add). Indexed descending.Client IP address. Respects the
X-Forwarded-For header. Nullable.Raw
User-Agent string from the request. Truncated to 2000 characters for auth events. Nullable.Automatic authentication logging
You do not need to write audit entries for authentication events manually. Theadministrador app connects three Django signals at import time:
| Signal | accion_tipo | resultado |
|---|---|---|
user_logged_in | LOGIN | EXITOSO |
user_logged_out | LOGOUT | EXITOSO |
user_login_failed | LOGIN_FALLIDO | FALLIDO |