98 lines
2.5 KiB
Python
98 lines
2.5 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)
|
|
|
|
dept_name : string
|
|
Le nom du département auquel la salle appartient
|
|
"""
|
|
def __init__(self, name, start, end, is_free, dept_name="DEFAULT DEPT") :
|
|
self.name = name
|
|
self.start = start
|
|
self.end = end
|
|
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 # 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"
|