#!/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"