Skip to content

Configuration

Le dossier conf contient les fichiers de configuration du projet (voir settings.py). Le projet propose plusieurs variables de configuration.

Variable Requis Type Description
CORE_MAX_FILES_CONCURRENTLY Non int Nombre maximum de files qu'un utilisateur peut avoir en cours.
CORE_MAX_MATERIEL_RECUPERE_PER_MONTH Non int Nombre maximum de matériels récupérés par mois.
CORE_MAX_MATERIEL_RECUPERE_PER_YEAR Non int Nombre maximum de matériels récupérés par an.
CORE_PRIORITY_GROUPS Non dict[str, int] Dictionnaire des groupes de priorité.
CORE_NOTIFY_EMAILS Non list[str] Liste des adresses email pour les notifications d'import.
CORE_NOTIFY_MIN_AMOUNT Non int Nombre minimum d'objets pour envoyer une notification.
CORE_KEEP_USER_DATA_DAYS Non int Nombre de jours à conserver les données utilisateur.
CORE_MATERIEL_PEREMPTION_DAYS Non int Nombre de jours avant la péremption d'un matériel.
CORE_RESERVATION_PEREMPTION_DAYS Non int Nombre de jours avant la péremption d'une réservation.

Limites

CORE_MAX_[...]

Les limites sont vérifiées aux actions suivantes :

  • réserver un matériel
  • rejoindre une file

Si une limite est dépassée, une exception est levée. L'utilisateur est informé de la limite dépassée.

Bonnes pratiques

Il est préférable de définir des limites élevées pour éviter les abus plutôt que de ne pas définir de limites.

Priorités

CORE_PRIORITY_GROUPS

Le dictionnaire CORE_PRIORITY_GROUPS permet de définir les groupes et leur priorité. Il est utilisé pour déterminer l'ordre de traitement des files.

Il est composé de clés de type str correspondant à un nom de groupe Django et de valeurs de type int correspondant à la priorité du groupe. Une priorité est un décalage absolu en jour (positif ou négatif).

Success

Si un groupe est défini dans CORE_PRIORITY_GROUPS mais qu'il n'existe pas dans la base de données, il est ignoré.

Algorithme

Les priorités sont calculées en fonction de la date de création de l'objet à laquelle on ajoute la priorité retenue (voir ci-dessous) de l'utilisateur à la date de réservation.

La priorité retenue est celle permettant le plus grand avantage pour l'utilisateur.

Si u4 appartient aux groupes g2 et g3, on retient la priorité -1 (g2).

Example
{
    'g1': 0, # Priorité normale
    'g2': -1, # Décalage de 1 jour avant, donc prioritaire
    'g3': 1, # Décalage de 1 jour après, donc retardé
}

u1 (du groupe g1) rejoint la file k le 10/01/2024 10h00. u2 (du groupe g2) rejoint la file k le 10/01/2024 10h00.

Virtuellement, u1 rejoint la file k le 09/01/2024 10h00.

u3 (du groupe g3) rejoint la file k le 10/01/2024 10h00.

Virtuellement, u3 rejoint la file k le 11/01/2024 10h00.

u2 est donc traité en premier (algorithme v24.5.9-beta).

Import

CORE_NOTIFY_EMAILS

La liste CORE_NOTIFY_EMAILS contient les adresses email pour les notifications d'import. Les notifications sont envoyées lorsqu'un import est effectué et que le nombre d'objets importés (avec succès) est supérieur ou égal à CORE_NOTIFY_MIN_AMOUNT.

CORE_NOTIFY_MIN_AMOUNT

Le nombre minimum d'objets pour envoyer une notification est défini par CORE_NOTIFY_MIN_AMOUNT.

Nettoyage

CORE_KEEP_USER_DATA_DAYS

Le nombre de jours à conserver les données utilisateur est défini par CORE_KEEP_USER_DATA_DAYS.

Fonctionnement :

  • suppression des attentes traitées ayant plus de CORE_KEEP_USER_DATA_DAYS jours (champ demande)
  • suppression des réservations ayant plus de CORE_KEEP_USER_DATA_DAYS jours (champ affectation_fin)
  • suppression des matériels récupérés il y a plus de CORE_KEEP_USER_DATA_DAYS jours (champ affectation_fin)
  • suppression des propriétés orphelines

Attention

Les données sont définitivement supprimées.

Warning

CORE_KEEP_USER_DATA_DAYS doit être supérieur à CORE_RESERVATION_PEREMPTION_DAYS + CORE_MAX_MATERIEL_RECUPERE_PER_YEAR pour éviter la suppression de données encore utiles.

Si CORE_KEEP_USER_DATA_DAYS est inférieur à CORE_MAX_MATERIEL_RECUPERE_PER_YEAR, les utilisateurs pourront récupérer plus de matériels que prévu.

Si CORE_KEEP_USER_DATA_DAYS est inférieur à CORE_RESERVATION_PEREMPTION_DAYS, les réservations pourront être supprimées avant leur date limite de récupération.

Péremption

CORE_MATERIEL_PEREMPTION_DAYS

Le nombre de jours avant la péremption d'un matériel est défini par CORE_MATERIEL_PEREMPTION_DAYS. Par défaut, il est défini à 2 ans. Il doit être supérieur à 0.

CORE_RESERVATION_PEREMPTION_DAYS

Le nombre de jours avant la péremption d'une réservation est défini par CORE_RESERVATION_PEREMPTION_DAYS. Par défaut, il est défini à 15 jours. Il doit être supérieur à 0.