99 lines
2.4 KiB
Python
99 lines
2.4 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
Created on Sat May 7 17:29:11 2022
|
|
|
|
@author: antoine
|
|
"""
|
|
|
|
################
|
|
### UniSquat ###
|
|
################
|
|
|
|
"""
|
|
Indique toutes les salles disponibles dans les différents départements de
|
|
l'Université de Strasbourg.
|
|
"""
|
|
|
|
# Modules
|
|
import random # Nécessaire pour la génération d'ID des salles
|
|
|
|
# Constantes
|
|
ID_CHARS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" # Caractères disponibles pour la création d'ID
|
|
ID_LEN = 4 # Nombres de caractères composant l'ID
|
|
|
|
|
|
### Fichier contenant les classes des salles et des départements ###
|
|
|
|
|
|
# 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é.
|
|
|
|
is_free : bool
|
|
Indique si la salle est libre ('True') ou non ('False').
|
|
|
|
count : int
|
|
Compte le nombre d'occurences de la salle dans l'emploi du temps;
|
|
|
|
id : string
|
|
Identifiant 'unique' ( avec un très faible risque de collision ) de la salle ( généré à partir de son nom )
|
|
"""
|
|
|
|
def __init__(self, name, start, end, is_free) :
|
|
self.name = name
|
|
self.start = start
|
|
self.end = end
|
|
self.is_free = is_free
|
|
self.id = self.getId(name)
|
|
|
|
def getId(self,name):
|
|
random.seed(name)
|
|
id = ""
|
|
for i in range(ID_LEN):
|
|
id+=random.choice(ID_CHARS)
|
|
return id # A peu près une chance sur 15 millions d'être unique, je considère ça viable
|
|
|
|
|
|
class Dept :
|
|
"""
|
|
Classe 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 = link
|
|
self.rooms = rooms
|