UniSquat_Python/objects.py
antux18 430e8938a2 Réécriture complète du code pour la recherche des salles pour des résultats exacts.
Ajouts de propriétés à la classe Room.
Ajout d'une constante pour l'utilisation du cache.
Corrections mineures.
2024-02-11 18:25:16 +01:00

111 lines
2.9 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sat May 7 17:29:11 2022
@author: antoine
"""
################
### UniSquat ###
################
# Une application pour afficher les salles libres dans les différents
# départements de l'Université de Strasbourg.
### Définition des objets ###
# Modules :
import random
# Constantes :
# Caractères disponibles pour la création d'ID :
ID_CHARS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
# Nombres de caractères composant l'ID :
ID_LEN = 4
# Objets :
class Room :
"""
Structure des salles.
Attributes
----------
name : string
Le nom de la salle.
start : datetime.datetime
Salle occupée : heure de début de la prochaine période de disponibilité.
Salle libre : inutilisé (vaut la date du jour à 00:00).
end : datetime.datetime
Salle occupée : heure de fin de la prochaine période de disponibilité.
Salle libre : heure de fin de disponibilité (inutilisé s'il n'y en a
pas (vaut alors la date du jour à 23:59:59)).
nostart : bool
Indique si la salle a un début de disponibilité ('False' dans le cas
des salles libres).
noend : bool
Indique si la salle a une fin de disponibilité ('False' dans le cas
où la salle est dispo pour le reste de la journée).
is_free : bool
Indique si la salle est libre ('True') ou non ('False').
id : string
Identifiant 'unique' de la salle (généré à partir de son nom).
(Cet identifiant a environ une chance sur 15 millions d'être unique).
dept_name : string
Le nom du département auquel la salle appartient.
"""
def __init__(self, name, start, end, nostart, noend, is_free,
dept_name="DEFAULT DEPT") :
self.name = name
self.start = start
self.end = end
self.nostart = nostart
self.noend = noend
self.is_free = is_free
self.id = self.getId(name)
self.dept_name = dept_name
def getId(self, name) :
random.seed(name)
id = ""
for i in range(ID_LEN) :
id += random.choice(ID_CHARS)
return id
class Dept :
"""
Structure des départements.
Attributes
----------
ident : int
Identifiant du département.
name : string
Nom du département.
link : string
Lien qui permet d'accéder au fichier iCal du département.
rooms : list
La liste des salles de ce département.
"""
def __init__(self, ident, name, link, rooms) :
self.ident = ident
self.name = name
self.link = self.genlink(link)
self.rooms = rooms
def genlink(self, link) :
return "https://adecons.unistra.fr/jsp/custom/modules/plannings/anonymous_cal.jsp?resources="+link.strip()+"&projectId=1&calType=ical"