Referencias para desarrollo

Esta sección contiene documentación autogenerada a partir del código fuente.

Modelos

_images/models.png
class elecciones.models.AgrupacionCircuito(id, circuito, agrupacion)
Parámetros
exception DoesNotExist
exception MultipleObjectsReturned
class elecciones.models.AgrupacionCircuitos(*args, **kwargs)

Representa un conjunto de circuitos que se computarán juntos a los efectos de una proyección.

Parámetros
  • id (AutoField) – Id

  • nombre (CharField) – Nombre

  • proyeccion (ForeignKey to TecnicaProyeccion) – Proyeccion

  • minimo_mesas (PositiveIntegerField) – Minimo mesas

  • circuitos (ManyToManyField) – Circuitos

exception DoesNotExist
exception MultipleObjectsReturned
class elecciones.models.Carga(*args, **kwargs)

Es el contenedor de la carga de datos de un fiscal Define todos los datos comunes (fecha, fiscal, mesa, categoría) de una carga, y contiene un conjunto de objetos VotoMesaReportado para las opciones válidas en la mesa-categoría.

Parámetros
  • id (AutoField) – Id

  • created (AutoCreatedField) – Creado

  • modified (AutoLastModifiedField) – Modificado

  • invalidada (BooleanField) – Invalidada

  • tipo (CharField) – Tipo

  • origen (CharField) – Origen

  • mesa_categoria (ForeignKey to MesaCategoria) – Mesa categoria

  • fiscal (ForeignKey to Fiscal) – Fiscal

  • firma (CharField) – Firma

  • tomada_por_consolidador (DateTimeField) – Tomada por consolidador

  • procesada (BooleanField) – Procesada

exception DoesNotExist
exception MultipleObjectsReturned
actualizar_firma(forzar=False)

A partir del conjunto de reportes de la carga se genera una firma como un string

<id_opcion_A>-<votos_opcion_A>|<id_opcion_B>-<votos_opcion_B>…

Si esta firma iguala o coincide con la de otras cargas se marca consolidada.

listado_de_opciones()

Devuelve una lista de los ids de las opciones de esta carga.

opcion_votos()

Devuelve una lista de los votos para cada opción.

save(*args, **kwargs)

si el fiscal es troll, la carga nace invalidada y ya procesada

class elecciones.models.CargaOficialControl(*args, **kwargs)

Este modelo se agrega para guardar la fecha y hora del último registro de carga parcial oficial obtenido desde la planilla de cálculo de gdocs

Parámetros
  • id (AutoField) – Id

  • fecha_ultimo_registro (DateTimeField) – Fecha ultimo registro

  • categoria (ForeignKey to Categoria) – Categoria

exception DoesNotExist
exception MultipleObjectsReturned
exception elecciones.models.CargasIncompatiblesError

Error que se produce si se pide la resta entre dos cargas incompatibles

class elecciones.models.Categoria(*args, **kwargs)

Representa una categoría electiva, es decir, una «columna» del acta. Por ejemplo: Presidente y Vicepresidente, Intendente de La Matanza, etc)

Una categoría tiene habilitadas diferentes opciones que incluyen las partidarias (boletas) y blanco, nulo, etc.

Parámetros
  • id (AutoField) – Id

  • eleccion (ForeignKey to Eleccion) – Eleccion

  • categoria_general (ForeignKey to CategoriaGeneral) – Categoria general

  • distrito (ForeignKey to Distrito) – Distrito

  • seccion (ForeignKey to Seccion) – Seccion

  • slug (SlugField) – Slug

  • nombre (CharField) – Nombre

  • color (CharField) – Color. Color para CSS (ej, red o #FF0000)

  • back_color (CharField) – Back color. Color para CSS (ej, red o #FF0000)

  • activa (BooleanField) – Activa. Si no está activa, no se cargan datos para esta categoría y no se muestran resultados.

  • sensible (BooleanField) – Sensible. Solo pueden visualizar los resultados de esta cagtegoría con permisos especiales.

  • requiere_cargas_parciales (BooleanField) – Requiere cargas parciales

  • prioridad (PositiveIntegerField) – Prioridad

  • opciones (ManyToManyField) – Opciones

exception DoesNotExist
exception MultipleObjectsReturned
property electores

Devuelve la cantidad de electores habilitados para esta categoría

opciones_actuales(solo_prioritarias=False, excluir_optativas=False)

Devuelve las opciones asociadas a la categoría en el orden correspondiente. Determina el orden de la filas a cargar, tal como se definen en el acta.

classmethod para_mesas(mesas)

Devuelve el conjunto de categorías que son comunes a todas las mesas dadas.

Por ejemplo, permite mostrar links válidos a las distintas categorías para una sección o circuito. Por ejemplo, si filtramos el circuito 1J o cualquiera se sus subniveles (escuela, mesa) se debe mostrar la categoría a Intentendente de La Matanza, pero no a intendente de San Isidro.

class elecciones.models.CategoriaGeneral(*args, **kwargs)

A diferencia del modelo Categoria, éste representa una categoría sin asociación geográfica. Por ejemplo «Intendente», sin decir de dónde.

Sirve para poder de alguna manera agrupar a todas las categorías «Intendende de X», además de para permitir meter aquí atributos de visualización comunes a ellas, así como también nombres de columnas en, por ejemplo, el CSV.

Parámetros
  • id (AutoField) – Id

  • eleccion (ForeignKey to Eleccion) – Eleccion

  • slug (SlugField) – Slug

  • nombre (CharField) – Nombre

  • foto_ejemplo (VersatileImageField) – Foto ejemplo

  • height (PositiveIntegerField) – Image height

  • width (PositiveIntegerField) – Image width

exception DoesNotExist
exception MultipleObjectsReturned
class elecciones.models.CategoriaOpcion(id, categoria, opcion, orden, prioritaria)
Parámetros
  • id (AutoField) – Id

  • categoria (ForeignKey to Categoria) – Categoria

  • opcion (ForeignKey to Opcion) – Opcion

  • orden (PositiveIntegerField) – Orden. Orden en el acta

  • prioritaria (BooleanField) – Prioritaria

exception DoesNotExist
exception MultipleObjectsReturned
class elecciones.models.Circuito(*args, **kwargs)

Define el circuito, perteneciente a una sección

Distrito -> Sección -> Circuito -> Lugar de votación -> Mesa

Parámetros
  • id (AutoField) – Id

  • seccion (ForeignKey to Seccion) – Seccion

  • localidad_cabecera (CharField) – Localidad cabecera

  • numero (CharField) – Numero

  • nombre (CharField) – Nombre

  • electores (PositiveIntegerField) – Electores

exception DoesNotExist
exception MultipleObjectsReturned
class elecciones.models.ConfiguracionComputo(*args, **kwargs)

Definición de modos de computar resultados por distrito.

Parámetros
  • id (AutoField) – Id

  • nombre (CharField) – Nombre

  • fiscal (ForeignKey to Fiscal) – Fiscal

exception DoesNotExist
exception MultipleObjectsReturned
class elecciones.models.ConfiguracionComputoDistrito(*args, **kwargs)

Definición de modos de computar resultados para un distrito, de acuerdo a un usuario.

Parámetros
  • id (AutoField) – Id

  • configuracion (ForeignKey to ConfiguracionComputo) – Configuracion

  • distrito (ForeignKey to Distrito) – Distrito

  • agregacion (CharField) – Agregacion

  • opciones (CharField) – Opciones

  • proyeccion (ForeignKey to TecnicaProyeccion) – Proyeccion

exception DoesNotExist
exception MultipleObjectsReturned
class elecciones.models.Distrito(*args, **kwargs)

Define el distrito o circunscripción electoral. Es la subdivisión más grande en una carta marina. En una elección provincial el distrito es único.

Distrito -> Sección -> Circuito -> Lugar de votación -> Mesa

Parámetros
  • id (AutoField) – Id

  • numero (CharField) – Numero

  • nombre (CharField) – Nombre

  • electores (PositiveIntegerField) – Electores

exception DoesNotExist
exception MultipleObjectsReturned
get_secciones()

Todas las secciones del distrito ordenadas por número.

class elecciones.models.Eleccion(*args, **kwargs)

Es un modelo contenedor que representa, basicamente, un dia de elecciones.

Contiene categorías

La finalidad que tiene es permitir la persistencia de resultados de multiples elecciones (por ejemplo PASO, primarias, balotaje) para hacer análisis

Parámetros
  • id (AutoField) – Id

  • fecha (DateTimeField) – Fecha

  • nombre (CharField) – Nombre

exception DoesNotExist
exception MultipleObjectsReturned
class elecciones.models.LugarVotacion(*args, **kwargs)

Define el lugar de votación (escuela) que pertenece a un circuito y contiene mesas. Tiene un representación geoespacial (point).

Distrito -> Sección -> Circuito -> Lugar de votación -> Mesa

Parámetros
  • id (AutoField) – Id

  • circuito (ForeignKey to Circuito) – Circuito

  • nombre (CharField) – Nombre

  • direccion (CharField) – Direccion

  • barrio (CharField) – Barrio

  • ciudad (CharField) – Ciudad

  • numero (CharField) – Numero. Número de escuela

  • electores (PositiveIntegerField) – Electores

  • geom (PointField) – Geom

  • estado_geolocalizacion (PositiveIntegerField) – Estado geolocalizacion. Indicador (0-10) de que confianza hay en la geolozalización

  • calidad (CharField) – Calidad. calidad de la geolocalizacion

  • latitud (FloatField) – Latitud

  • longitud (FloatField) – Longitud

exception DoesNotExist
exception MultipleObjectsReturned
save(*args, **kwargs)

Save the current instance. Override this in a subclass if you want to control the saving process.

The “force_insert” and “force_update” parameters can be used to insist that the «save» must be an SQL insert or update (or equivalent for non-SQL backends), respectively. Normally, they should not be set.

class elecciones.models.Mesa(*args, **kwargs)

Define la mesa de votación que pertenece a un class:LugarDeVotación.

Sección -> Circuito -> Lugar de votación -> Mesa

Está asociada a una o más categorías electivas para los cuales el elector habilitado debe elegir.

Por ejemplo, la mesa 12 del circuito 1J de La Matanza, elige Presidente y Vice, Diputado de Prov de Buenos Aires e Intendente de La Matanza.

Parámetros
  • id (AutoField) – Id

  • numero (CharField) – Numero

  • es_testigo (BooleanField) – Es testigo

  • circuito (ForeignKey to Circuito) – Circuito

  • lugar_votacion (ForeignKey to LugarVotacion) – Lugar de votacion

  • url (URLField) – Url. url al telegrama

  • electores (PositiveIntegerField) – Electores

  • extranjeros (BooleanField) – Extranjeros

  • categorias (ManyToManyField) – Categorias

exception DoesNotExist
exception MultipleObjectsReturned
fotos()

Devuelve una lista de tuplas (titulo, foto) asociados a la mesa, incluyendo cualquier version editada de una foto, para aquellos attachements que esten consolidados

Este método se utiliza para alimentar las pestañas en la pantalla de carga de datos.

invalidar_asignacion_attachment()

Efecto de que esta mesa tenía un attachment asociado y ya no lo tiene. Hay que: invalidar todas las cargas, y borrar el orden de carga de las MesaCategoria para que no se tengan en cuenta en el scheduling

metadata()

Las opciones metadatas comunes a las distintas categorías de la misma mesa reúsan el valor reportado. Se cargan hasta que se consolide en alguna categoría y las siguientes cargas reusarán sus valores reportados.

Este método devuelve la lista de tuplas de (opción metadata, número) para alguna de las cargas consolidadas testigo de la mesa. El número es la cantidad de «votos».

classmethod obtener_mesa_en_circuito_seccion_distrito(mesa, circuito, seccion, distrito)

Valida si existe una mesa con dicho codigo en el circuito y seccion indicados

class elecciones.models.MesaCategoria(*args, **kwargs)

Modelo intermedio para la relación m2m Mesa.categorias mantiene el estado de las cargas

Parámetros
  • id (AutoField) – Id

  • status (StatusField) – Status

  • mesa (ForeignKey to Mesa) – Mesa

  • categoria (ForeignKey to Categoria) – Categoria

  • carga_testigo (ForeignKey to Carga) – Carga testigo

  • carga_oficial (ForeignKey to Carga) – Carga oficial

  • parcial_oficial (ForeignKey to Carga) – Parcial oficial

  • percentil (PositiveIntegerField) – Percentil

  • orden_de_llegada (PositiveIntegerField) – Orden de llegada

  • coeficiente_para_orden_de_carga (PositiveIntegerField) – Coeficiente para orden de carga

  • cant_fiscales_asignados (PositiveIntegerField) – Cant fiscales asignados

  • cant_asignaciones_realizadas (PositiveIntegerField) – Cant asignaciones realizadas

exception DoesNotExist
exception MultipleObjectsReturned
actualizar_coeficiente_para_orden_de_carga()

Actualiza self.coeficiente_para_orden_de_carga a partir de las prioridades por sección y categoría.

datos_previos(tipo_carga)

Devuelve un diccionario que contiene informacion confirmada (proveniente de campos de metadata o prioritarios compartidos) para «pre completar» una carga.

{opcion.id: cantidad_votos, …}

Si una opcion está en este diccionario, su campo votos se inicilizará con la cantidad de votos y será de sólo lectura, validando además que coincidan cuando la carga se guarda.

firma_count()

Devuelve un diccionario que agrupa por tipo de carga y firmas. Este método se usa para testing solamente. Por ejemplo:

{'total': {
    '1-10|2-2': 1,
    '1-10|2-1': 1'
 },
 'parcial': {
    '1-10': 1}
}
invalidar_cargas()

Por alguna razón, hay que marcar todas las cargas que se hicieron para esta MesaCategoria como inválidas.

recalcular_coeficiente_para_orden_de_carga()

Actualiza el valor de self.coeficiente_para_orden_de_carga a partir de las prioridades por sección y categoría, sin disparar el save correspondiente.

classmethod recalcular_coeficiente_para_orden_de_carga_para_categoria(categoria)

Recalcula el coeficiente_para_orden_de_carga de las MesaCategoria correspondientes a la categoría indicada que estén pendientes de carga. Se usa como acción derivada del cambio de prioridades en la categoría.

classmethod recalcular_coeficiente_para_orden_de_carga_para_seccion(seccion)

Recalcula el coeficiente_para_orden_de_carga de las MesaCategoria correspondientes a la sección indicada que estén pendientes de carga. Se usa como acción derivada del cambio de prioridades en la categoría.

class elecciones.models.MesaCategoriaQuerySet(model=None, query=None, using=None, hints=None)
anotar_prioridad_status()

Dados los status posibles anota el querset prioridad_status con un valor entero (0, 1, 2, …) que se corresponde con el índice del status en la constante config.PRIORIDAD_STATUS, que es configurable vía Constance. Sirve para poder ordenar por «prioridad de status»:

>>> qs.anotar_prioridad_status().order_by('prioridad_status')

Por defecto, esta prioridad sale del orden definido en settings.MC_STATUS_CHOICE.

con_carga_sensible_y_parcial_pendiente()

Devuelve las mesas categorías que tengan cargas parciales pendientes y que correspondan a categorías sensibles (que son las realmente prioritarias).

debug_mas_prioritaria()

Esta función invoca a ordenadas_por_prioridad() y además imprime los campos de orden. Sirve sólo para debuggear.

identificadas()

Filtra instancias que tengan orden de carga definido (que se produce cuando hay un primer attachment consolidado).

mas_prioritaria()

Devuelve la intancia más prioritaria del queryset.

redondear_cant_fiscales_asignados_y_de_asignaciones()

Redondea la cantidad de fiscales asignados y de asignaciones a múltiplos de settings.MIN_COINCIDENCIAS_CARGAS para que al asignar mesas no se pospongan indefinidamente mesas que fueron entregadas ya a algún fiscal.

siguiente()

Devuelve mesacat con carga pendiente más prioritaria

siguiente_para_ub()

Devuelve mesacat con carga pendiente más prioritaria

sin_cargas_del_fiscal(fiscal)

Excluye las instancias que tengan alguna carga del fiscal indicado.

sin_consolidar_por_csv()

Excluye las instancias consolidadas por CSV.

sin_consolidar_por_doble_carga()

Excluye las instancias consolidadas con doble carga.

sin_problemas()

Excluye las instancias que tengan problemas.

solo_de_cats_activas()

Excluye a las instancias de categorías no activas.

class elecciones.models.Opcion(*args, **kwargs)

Una opción es lo que puede elegir hacer el elector con voto para una categoría.

Incluye las opciones partidarias (que redundan en votos positivos) o blanco, nulo, etc, que son opciones no positivas y no asociadas a partidos. También pueden ser opciones de «metainformación» del acta, como totales de votos positivos, votos válidos, etc, que si bien pueden calcularse indirectamente a partir de otros datos, a veces se prefiere cargar para minimizar las decisiones en quien carga datos.

Más de una opción puede estar asociada al mismo partido, (por ejemplo varias listas de un espacio en una PASO) pero actualmente sus votos se computan agregados.

Parámetros
  • id (AutoField) – Id

  • tipo (CharField) – Tipo

  • nombre (CharField) – Nombre

  • nombre_corto (CharField) – Nombre corto

  • codigo (CharField) – Codigo. Código de opción

  • partido (ForeignKey to Partido) – Partido

  • codigo_dne (PositiveIntegerField) – Codigo dne. Nº asignado en la base de datos de resultados oficiales

exception DoesNotExist
exception MultipleObjectsReturned
property color

Devuelve el color del partido si existe o blanco. Permite destacar con un color la fila en la tabla de resultados

class elecciones.models.Partido(*args, **kwargs)

Representa un partido político o alianza, que contiene opciones.

Parámetros
  • id (AutoField) – Id

  • numero (PositiveIntegerField) – Numero

  • codigo (CharField) – Codigo. Código de partido

  • nombre (CharField) – Nombre

  • nombre_corto (CharField) – Nombre corto

  • color (CharField) – Color

  • referencia (CharField) – Referencia

exception DoesNotExist
exception MultipleObjectsReturned
class elecciones.models.Seccion(*args, **kwargs)

Define la sección electoral:

Distrito -> Sección -> Circuito -> Lugar de votación -> Mesa

Parámetros
  • id (AutoField) – Id

  • distrito (ForeignKey to Distrito) – Distrito

  • seccion_politica (ForeignKey to SeccionPolitica) – Seccion politica

  • numero (CharField) – Numero

  • nombre (CharField) – Nombre

  • electores (PositiveIntegerField) – Electores

  • prioridad_hasta_2 (PositiveIntegerField) – Prioridad hasta 2

  • prioridad_2_a_10 (PositiveIntegerField) – Prioridad 2 a 10

  • prioridad_10_a_100 (PositiveIntegerField) – Prioridad 10 a 100

  • cantidad_minima_prioridad_hasta_2 (PositiveIntegerField) – Cantidad minima prioridad hasta 2

exception DoesNotExist
exception MultipleObjectsReturned
get_circuitos()

Todos los circuitos de las sección ordenados por número.

class elecciones.models.SeccionPolitica(*args, **kwargs)

Define la sección política, que es una agrupación de nuestras secciones electorales, que se usa con fines políticos y para mostrar resultados.

En términos políticos, en especial para la PBA, nuestra Sección es un Municipio (eg, «La Matanza»), y esta sección política es «la tercera sección electoral».

Distrito -> Sección política -> Sección -> Circuito -> Lugar de votación -> Mesa

Parámetros
  • id (AutoField) – Id

  • distrito (ForeignKey to Distrito) – Distrito

  • numero (PositiveIntegerField) – Numero

  • nombre (CharField) – Nombre

exception DoesNotExist
exception MultipleObjectsReturned
class elecciones.models.TecnicaProyeccion(*args, **kwargs)

Representa una estrategia para agrupar circuitos para hacer proyecciones. Contiene una lista de AgrupacionCircuitos que debería en total cubrir a todos los circuitos correspondientes a la categoria que se desea proyectar.

Parámetros
  • id (AutoField) – Id

  • nombre (CharField) – Nombre

exception DoesNotExist
exception MultipleObjectsReturned
class elecciones.models.VotoMesaReportado(*args, **kwargs)

Representa una «celda» del acta a cargar, es decir, dada una carga que define mesa y categoria, existe una instancia de este modelo para cada opción y su correspondiente cantidad de votos.

Parámetros
  • id (AutoField) – Id

  • carga (ForeignKey to Carga) – Carga

  • opcion (ForeignKey to Opcion) – Opcion

  • votos (PositiveIntegerField) – Votos

exception DoesNotExist
exception MultipleObjectsReturned
elecciones.models.actualizar_electores(sender, instance=None, created=False, **kwargs)

Actualiza las denormalizaciones de cantidad de electores a nivel circuito, seccion y distrito cada vez que se crea o actualiza una instancia de mesa.

En general, esto sólo debería ocurrir en la configuración inicial del sistema.

elecciones.models.canonizar(valor)

Tomado prestado de adjuntos/csv_import, también está en managament/commands Pasa a mayúsculas y elimina espacios. Si se trata de un número, elimina los ceros previos.

class fiscales.models.CodigoReferido(id, created, modified, fiscal, codigo, activo)
Parámetros
  • id (AutoField) – Id

  • created (AutoCreatedField) – Creado

  • modified (AutoLastModifiedField) – Modificado

  • fiscal (ForeignKey to Fiscal) – Fiscal

  • codigo (CharField) – Codigo. Código con el que el fiscal puede referir a otres

  • activo (BooleanField) – Activo

exception DoesNotExist
exception MultipleObjectsReturned
classmethod fiscales_para(codigo, nombre=None, apellido=None)

Devuelve una lista de fiscales candidatos

save(*args, **kwargs)

Genera un código único de 4 dígitos alfanuméricos

class fiscales.models.Fiscal(*args, **kwargs)

Representa al usuario «data-entry» del sistema. Es una extensión del modelo auth.User

Parámetros
  • id (AutoField) – Id

  • estado (StatusField) – Estado

  • notas (TextField) – Notas. Notas internas, no se muestran

  • codigo_confirmacion (UUIDField) – Codigo confirmacion

  • email_confirmado (BooleanField) – Email confirmado

  • apellido (CharField) – Apellido

  • nombres (CharField) – Nombres

  • tipo_dni (CharField) – Tipo dni

  • dni (CharField) – Dni

  • puntaje_scoring_troll (IntegerField) – Puntaje scoring troll

  • troll (BooleanField) – Troll

  • user (OneToOneField to User) – User

  • seccion (ForeignKey to Seccion) – Seccion

  • session_key (CharField) – Session key

  • last_seen (DateTimeField) – Last seen

  • distrito (ForeignKey to Distrito) – Distrito

  • referente (ForeignKey to Fiscal) – Referente

  • referente_certeza (PositiveIntegerField) – Referente certeza. El código no era exacto?

  • referencia_confirmada (BooleanField) – Referencia confirmada

  • referente_nombres (CharField) – Referente nombres

  • referente_apellido (CharField) – Referente apellido

  • referido_por_codigos (CharField) – Referido por codigos

  • ingreso_alguna_vez (BooleanField) – Ingreso alguna vez

  • asignacion_ultima_tarea (DateTimeField) – Asignacion ultima tarea

  • attachment_asignado (ForeignKey to Attachment) – Attachment asignado

  • mesa_categoria_asignada (ForeignKey to MesaCategoria) – Mesa categoria asignada

  • distrito_afin (ForeignKey to Distrito) – Distrito afin

  • datos_de_contacto (GenericRelation) – Datos de contacto

exception DoesNotExist
exception MultipleObjectsReturned
asignar_attachment(attachment)

Asigna al fiscal un attachment para que trabaje en él.

Tiene como prerrequisito que se hayan hecho un llamado previo a limpiar_asignacion_previa() para desasignar la asignación anterior. No se hace aquí para evitar deadlocks (ver #317), se hace desde acciones.py en una transacción independiente.

asignar_mesa_categoria(mesa_categoria)

Asigna al fiscal una mesa_categoria para que trabaje en ella.

Tiene como prerrequisito que se hayan hecho un llamado previo a limpiar_asignacion_previa() para desasignar la asignación anterior. No se hace aquí para evitar deadlocks (ver #317), se hace desde acciones.py en una transacción independiente.

classmethod liberar_mesacategorias_y_attachments()

Toma a los fiscales cuya última tarea haya sido asignada más de settings.TIMEOUT_TAREAS minutos atrás y: - No se la desasigna para no perder el trabajo que el fiscal puede estar haciendo y “presentará” cuando haga el submit. - Pero sí le baja la cantidad de asignaciones a la mesacategoría y los attachments para que queden postergados por demasiado tiempo.

limpiar_asignacion_previa()

Este método se utiliza para que las mesa-categorías o attachments que tenga asignados el fiscal sean liberados cuando corresponda (por timeout o cuando se asigna uno nuevo).

No se la desasigna para no perder el trabajo que el fiscal puede estar haciendo y “presentará” cuando haga el submit.

marcar_como_troll(actor)

Un UE decidió, explícitamente, marcarme como troll

marcar_ingreso_alguna_vez()

Marca que el Fiscal efectivamente ya ingresó alguna vez. En principio la marca de ingreso_alguna_vez se usa para capacitar al validador.

quitar_marca_troll(actor, nuevo_scoring)

Un UE decidió, explícitamente, indicar que no soy troll

ultimo_codigo()

devuelve el último código activo

ultimo_codigo_url()

devuelve la url absoluta con último código activo

fiscales.models.crear_user_y_codigo_para_fiscal(sender, instance=None, created=False, update_fields=None, **kwargs)

Cuando se crea o actualiza una instancia de Fiscal en estado confirmado que no tiene usuario asociado, automáticamente se crea uno auth.User utilizando el DNI como username.

class adjuntos.models.Attachment(*args, **kwargs)

Guarda las fotos de ACTAS y otros documentos fuente desde los cuales se cargan los datos. Están asociados a una imágen que a su vez puede tener una versión editada.

Los attachments están asociados a mesas una vez que se clasifican.

No pueden existir dos instancias de este modelo con la misma foto, dado que el atributo digest es único.

Parámetros
  • id (AutoField) – Id

  • created (AutoCreatedField) – Creado

  • modified (AutoLastModifiedField) – Modificado

  • status (StatusField) – Status

  • mesa (ForeignKey to Mesa) – Mesa

  • email (ForeignKey to Email) – Email

  • mimetype (CharField) – Mimetype

  • parent (ForeignKey to Attachment) – Parent

  • foto (VersatileImageField) – Foto

  • foto_edited (VersatileImageField) – Foto edited

  • foto_digest (CharField) – Foto digest

  • height (PositiveIntegerField) – Image height

  • width (PositiveIntegerField) – Image width

  • subido_por (ForeignKey to Fiscal) – Subido por

  • identificacion_testigo (ForeignKey to Identificacion) – Identificacion testigo

  • pre_identificacion (ForeignKey to PreIdentificacion) – Pre identificacion

  • cant_fiscales_asignados (PositiveIntegerField) – Cant fiscales asignados

  • cant_asignaciones_realizadas (PositiveIntegerField) – Cant asignaciones realizadas

exception DoesNotExist
exception MultipleObjectsReturned
crear_pre_identificacion_si_corresponde()

Le asocia al attachment una PreIdentificacion con los datos del fiscal que la subió si no hay una previa.

save(*args, **kwargs)

Actualiza el hash de la imágen original asociada antes de guardar. Notar que esto puede puede producir una excepción si la imágen (el digest) ya es conocido en el sistema.

Además, crea una PreIdentificacion con los datos del Fiscal que lo subió si no hay una.

status_count(estado)

A partir del conjunto de identificaciones del attachment que tienen el estado parámetro devuelve una lista de tuplas (mesa_id, cantidad, cantidad que viene de csv). Sólo cuenta las no invalidadas.

Cuando status == “problema” el id de mesa es None

Por ejemplo (cuando estado == “identificada”):
[

(3, 2, 0), (4, 1, 1),

]

Hay 2 identificaciones para la mesa id==3 y 1 para la id==4, pero ésa tiene una identificación por CSV.

class adjuntos.models.AttachmentQuerySet(model=None, query=None, using=None, hints=None)
priorizadas()

Ordena por cantidad de fiscales trabajando en el momento, luego por cantidad de personas que alguna vez trabajaron, y por último por orden de llegada.

redondear_cant_fiscales_asignados_y_de_asignaciones()

Redondea la cantidad de fiscales asignados y de asignaciones a múltiplos de settings.MIN_COINCIDENCIAS_IDENTIFICACION para que al asignar mesas no se pospongan indefinidamente mesas que fueron entregadas ya a algún fiscal.

sin_identificar(fiscal_a_excluir=None, for_update=True)

Devuelve un conjunto de Attachments que no tienen identificación consolidada.

Se excluyen attachments que ya hayan sido clasificados por fiscal_a_excluir

class adjuntos.models.CSVTareaDeImportacion(id, created, modified, csv_file, status, errores, fiscal, mesas_total_ok, mesas_parc_ok)
Parámetros
  • id (AutoField) – Id

  • created (AutoCreatedField) – Creado

  • modified (AutoLastModifiedField) – Modificado

  • csv_file (FileField) – Csv file

  • status (StatusField) – Status

  • errores (TextField) – Errores

  • fiscal (ForeignKey to Fiscal) – Fiscal

  • mesas_total_ok (PositiveIntegerField) – Mesas total ok

  • mesas_parc_ok (PositiveIntegerField) – Mesas parc ok

exception DoesNotExist
exception MultipleObjectsReturned
class adjuntos.models.Email(*args, **kwargs)

Almacena la información de emails que entran al sistema y contienen attachments La persistencia de estos objetos no es estrictamente necesaria.

Ver elecciones.management.commands.importar_actas

Parámetros
  • id (AutoField) – Id

  • date (CharField) – Date

  • from_address (CharField) – From address

  • body (TextField) – Body

  • title (CharField) – Title

  • uid (PositiveIntegerField) – Uid

  • message_id (CharField) – Message id

exception DoesNotExist
exception MultipleObjectsReturned
class adjuntos.models.Identificacion(*args, **kwargs)

Es el modelo que guarda clasificaciones de actas para asociarlas a mesas

Parámetros
  • id (AutoField) – Id

  • created (AutoCreatedField) – Creado

  • modified (AutoLastModifiedField) – Modificado

  • status (StatusField) – Status

  • source (StatusField) – Source

  • fiscal (ForeignKey to Fiscal) – Fiscal

  • mesa (ForeignKey to Mesa) – Mesa

  • attachment (ForeignKey to Attachment) – Attachment

  • tomada_por_consolidador (DateTimeField) – Tomada por consolidador

  • procesada (BooleanField) – Procesada

  • invalidada (BooleanField) – Invalidada

exception DoesNotExist
exception MultipleObjectsReturned
save(*args, **kwargs)

Si el fiscal es troll, la identificación nace invalidada y ya procesada.

class adjuntos.models.PreIdentificacion(*args, **kwargs)

Este modelo se usa para asociar a los attachment información de identificación que no es completa. No confundir con Identificacion ni con el status de identificación de una mesa.

Parámetros
  • id (AutoField) – Id

  • created (AutoCreatedField) – Creado

  • modified (AutoLastModifiedField) – Modificado

  • fiscal (ForeignKey to Fiscal) – Fiscal

  • distrito (ForeignKey to Distrito) – Distrito

  • seccion (ForeignKey to Seccion) – Seccion

  • circuito (ForeignKey to Circuito) – Circuito

exception DoesNotExist
exception MultipleObjectsReturned
adjuntos.models.hash_file(file, block_size=65536)

Dado un objeto file-like (en modo binario), devuelve un hash digest único de 128 digitos hexadecimales

Utiliza el algoritmo de hashing blake2

>>> hash_file(open('messi.jpg', 'rb'))
'90554e1d519e0fc665fab042d7499a1bc9c191f2a13b0b2c369753dcb23b181866cb116007fc37a445421270e04912a46dbfb6a325cf27a2603eed45fc1d41b1'