antux18
430e8938a2
Ajouts de propriétés à la classe Room. Ajout d'une constante pour l'utilisation du cache. Corrections mineures.
111 lines
2.9 KiB
Python
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" |