#!/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 = 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=8&calType=ical"