UniSquat_Python/objects.py

94 lines
2.4 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 # 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
# 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').
id : string
Identifiant 'unique' (avec un très faible risque de conflit) 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 = 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=5&calType=ical"