summaryrefslogtreecommitdiff
path: root/EDT STABLE
diff options
context:
space:
mode:
authorGaspard Coulet <gaspard.coulet@mines-ales.org>2021-04-28 23:10:56 +0200
committerGaspard Coulet <gaspard.coulet@mines-ales.org>2021-04-28 23:10:56 +0200
commitf63e7370340a7381cdc1ea8edfe18d494a4b50a7 (patch)
treedb93d3458c065da1d7d3507e28a30bc603f1d46c /EDT STABLE
Initial commit
Diffstat (limited to 'EDT STABLE')
-rw-r--r--EDT STABLE/add.py23
-rw-r--r--EDT STABLE/index.py47
-rw-r--r--EDT STABLE/printedt.py74
-rw-r--r--EDT STABLE/style.css114
4 files changed, 258 insertions, 0 deletions
diff --git a/EDT STABLE/add.py b/EDT STABLE/add.py
new file mode 100644
index 0000000..a85a8d0
--- /dev/null
+++ b/EDT STABLE/add.py
@@ -0,0 +1,23 @@
+#!/usr/bin/python2.7
+# coding: utf8
+import re,sys,cgi,cgitb
+
+cgitb.enable()
+print ('Content-type:text/html')
+print
+print ('<!doctype html><html lang="fr"> <head> <meta charset="utf-8"><link rel="stylesheet" type="text/css" href="style.css"><title> Emploi du temps UM fds</title></head><body>')
+formulaire = cgi.FieldStorage()
+txt=u"<div class='cadreform'><h2> Ajouter un emploi du temps</h2> <div class='formulaire'><p> Cette section sert à renseigner un nom et un ID pour un emploi du temps, ces paires sont stockés sous la forme : </p><div class='center'>'XXXX:semestre-annee-parcours-groupe-'<br>Où XXXX est l'ID de l'EDT </div><br><p> Si le besoin se présente, on remplace les espaces par des 'underscore': '_' ('tiret-du-huit' comme dirait votre grand-mère). <br> Pour ce qui est de l'ID, il faut le chercher sur l'ENT (promis c'est la derniere fois que vous avez besoin d'aller sur cette plateforme à l'accessibilité proche de zéro), une fois sur"
+txt+=u" ADE web planning ( <a href='https://planning-ade.umontpellier.fr/direct/index.jsp?projectId=54&login=visuFDS&password=12345678&displayConfName=Web&showTree=true&top=parent' >lien ici</a>), trouvez votre fichier d'EDT, selectionnez le, et cliquez sur l'icone d'export en bas à gauche, celui avec un calendrier et une petite flèche, verifier que 'Icalendar' est coché, puis cliquez sur 'Générer URL', vous n'avez plus qu'à copier le lien qui s'affiche, à le coller ici (à gauche), et à preciser le chemin pour y accéder, exemple 'Sem_2-L1-Série_1-Groupe_A' ( à droite) <br> <form action='add.py' method='get'> ID :<input type='text' name='ID'> Intitulé : <input type='text' name='recherche' value='"+formulaire.getvalue('recherche').decode('utf8')+u"'><br><br><input type='submit' name='Ajouter' value='Ajouter'></form></div></div></body></html>'"
+print(txt.encode('utf8'))
+if formulaire.getvalue('recherche')!=None:
+ if formulaire.getvalue('ID')!= None:
+ ID = re.search('resources=([0-9,]*)',formulaire.getvalue('ID')).group(1)
+ testID= re.search('^[0-9,]*$',ID)
+ if testID :
+ testIntit = re.search('^[0-9a-zA-Z-_éè]*(.)$',formulaire.getvalue('recherche'))
+ if testIntit:
+ fichier = open('edtnum','a')
+ fichier.write(testID.group(0)+":"+testIntit.group(0)+"\n")
+ print("<meta http-equiv='refresh' content='0; URL=index.py?recherche="+testIntit.group(0)+"'>")
+ fichier.close()
diff --git a/EDT STABLE/index.py b/EDT STABLE/index.py
new file mode 100644
index 0000000..524f82e
--- /dev/null
+++ b/EDT STABLE/index.py
@@ -0,0 +1,47 @@
+#!/usr/bin/python2.7
+# coding: utf8
+import cgitb,cgi,re,sys,arrow
+
+cgitb.enable()
+print ('Content-type:text/html')
+print
+print ('<!doctype html><html lang="fr"> <head> <meta charset="utf-8"><link rel="stylesheet" type="text/css" href="style.css"><title> Emploi du temps UM fds</title></head><body>')
+formulaire = cgi.FieldStorage()
+fichier = open('edtnum','rw')
+if formulaire.getvalue('recherche')==None:
+# print ('<form action="index.py" method="get"><input type="text" name="recherche"><input type="submit"></form>')
+ print("<div class='cadreform'><h2>Trouvez votre groupe</h2><div class='formulaire'><form action='index.py' method='get'><select name='recherche' class='selecteur'>")
+ i=0;
+ dico={}
+ for line in fichier.readlines():
+ ligne=line.split(':')
+ texte=ligne[1].split('-',1)
+ dico[texte[0]]=texte[0]
+ for key in dico:
+ print("<option>"+key+"-")
+ print("</select><br><br><input type='submit' value='parcourir'></form></div></div><div class='cadreform'><h2> S'il vous est impossible d'accéder à votre EDT, ajouter le!</h2><div class='formulaire'><form action='add.py' method='get'><input type='radio' name='recherche' value='"+"Sem_"+"' class='hidden' checked><input type='submit' value='Mon dossier est absent'></form></div></div>")
+
+else :
+ ancienpath=formulaire.getvalue('recherche')
+ dico={}
+ for line in fichier.readlines():
+ texte = re.search('^[^:]*:('+ancienpath+"[^-]+)",line)
+ if texte :
+ dico[texte.group(1)]=texte.group(1)
+ if dico!={}:
+ print("<div class='cadreform'><h2>Trouvez votre groupe</h2><div class='formulaire'><form action='index.py' method='get'><select name='recherche' class='selecteur'>")
+ for key in dico :
+ print("<option>"+key+"-")
+ print("</select><br><br><br><input type='submit' value='parcourir'></form></div></div><div class='cadreform'><h2> S'il vous est impossible d'accéder à votre EDT, ajouter le!</h2><div class='formulaire'><form action='add.py' method='get'><input type='radio' name='recherche' value='"+ancienpath+"' class='hidden' checked><input type='submit' value='Mon dossier est absent'></form></div></div>")
+ if dico == {} :
+ print('<div class="cadreform"><h2> Sélectionner la durée</h2><div class="formulaire"><form action="printedt.py" method="get"><br><input type="radio" name="duration" value="1" checked> 1 semaine<br><input type="radio" name="duration" value="2"> 2 semaine<br><input type="radio" name="duration" value="3"> 3 semaine<br><input type="radio" name="duration" value="4"> 4 semaine<br><br><input type="submit" name="recherche" value='+formulaire.getvalue('recherche')+'></form></div></div>')
+print("<div class='cadreform'><h2> Comment ca marche ?</h2><div class='formulaire'><p>Composez votre nom d'EDT dans la premiere section, appuyez sur 'Parcourir' pour avancer d'un cran et voir ainsi les niveaux (L1, L2...) puis les domaines (EEA,Chimie...) ou Série (A,B,C), pour les L1, puis les groupes.<br> -Si vous trouvez votre groupe, faites 'Parcourir' une fois de plus, choisissez le nombre de semaine à partir d'ajd que vous voulez, et validez, voila <br> -Si votre groupe ne semble pas accessible à partir d'un certain point, rendez-vous dans la seconde section, ce que vous devrez y faire sera expliqué, notez que l'ajout d'un EDT est plus pratique sur un ordinateur et peux vous prendre quelques minutes</p></div></div>")
+print("<div class='cadreform'><h2> Pourquoi je voudrais utiliser ce truc ?</h2><div class='formulaire'><p> Sachez tout d'abord que je suis un étudiant à la fds, qui comme beaucoup j'imagine, trouve très chiant de devoir chercher son edt via l'ent à chaque fois qu'il est actualisé. <br>Ici, il vous suffit de placer votre EDT en favoris, et de l'ouvrir à chaque fois que vous en avez besoin.<br> Par ailleurs, l'EDT ici fourni est fraichement prélevé, et donc toujours à jour, aussi, s'il vous arrivait de vouloir consulter votre EDT et de vous rendre compte que le site prévu à cet effet est très souvent hors-service, vous serez ravis d'apprendre que cette plateforme est doté d'un système contre cela, vous aurez toujours au pire le dernier EDT consulté pour chaque groupe de disponible</p></div></div>")
+print("<div class='cadreform'><h2> Détails techniques, si ca peut vous interesser</h2><div class='formulaire'><p>Tout ce bidûle est fait en Python CGI, tourne sur un serveur, et repose, pour ce qui est de son efficacité, sur la variété des étudiants l'utilisant, puisque je vous demande à vous de fournir les ID des groupes d'EDT ( d'ailleurs si j'arrive à trouver un moyen de me passer des utilisateurs, j'en serais ravi)<br> La partie du système qui me semble la plus interessante est le parcours recursif des paires ID:Nom que l'on voit à l'oeuvre dans le parcours pour selectionner un groupe, je ne vais pas non plus vous dire que le reste c'était easy, mais c'est vraiment la partie que je juge la plus stylé, de mes yeux de jeune apprenti informaticien<br> Si des gens trouvent ce site utile, ou simplement si j'ai du temps à perdre, je considererai le fait de réaliser une application android qui irait avec ( faut que je rajoute une fonctionnalité pour ne pas afficher les")
+print(" cours passés d'ailleurs, mais flemme ( pour l'instant ))</p></div></div>")
+
+print('<p> Made by <a href="https://twitter.com/Gaspard_c">@Gaspard_c</a></p></body></html>')
+print('</body></html>')
+fichier.close()
+# idee : laissez les utilisateurs creer des pack d'evenements, en notant les champs de recherche associes et la date de derniere visite, si la date de derniere visite est superieure a 7 jours, on supprime le pack
+# sinon, si le pack existe, on le refresh toutes les heures
diff --git a/EDT STABLE/printedt.py b/EDT STABLE/printedt.py
new file mode 100644
index 0000000..37a66be
--- /dev/null
+++ b/EDT STABLE/printedt.py
@@ -0,0 +1,74 @@
+#!/usr/bin/python2.7
+# coding: utf8
+import cgitb,cgi,re,sys,arrow
+from ics import Calendar,Event
+from urllib2 import urlopen # import requests
+
+def letsparse (info,nbweeks):
+ url = "https://planning-ade.umontpellier.fr/jsp/custom/modules/plannings/anonymous_cal.jsp?resources="+info+"&projectId=54&calType=ical&nbWeeks="+nbweeks
+ page = urlopen(url).read()
+ line = page[0]
+ if line == "<" :
+ fichier2= open("./anticrash/"+info+'.ics','r')
+ c = Calendar(fichier2.read().decode('utf8'))
+ cestunbackup = 1
+ else :
+ save=open("./anticrash/"+info+'.ics','w')
+ save.write(page)
+ c = Calendar(page.decode('utf8'))
+ cestunbackup=0
+ printevent(c.events,cestunbackup)
+ return
+def printday(day):
+ print("<div class='cadreday'><div class='day'>"+ day.format('DD/MM')+"</div></div>")
+
+def printevent(eventpack, cestunbackup):
+ oldday = 0
+ print("<div class='cadreinfo'><div class='info'><h2>Info</h2><p> Vous pouvez enregister cette page en favoris, pour être sûr de retrouver rapidement votre EDT</p></div></div>")
+ if (cestunbackup==1):
+ backup = u"<div class='cadreinfo'><div class='info'><h2>Info</h2> <p> L'EDT affiché actuellement est un backup ( le site de la fac semble etre down ): "+ eventpack[0].description[len(eventpack[0].description)-28:len(eventpack[0].description)-1]+ u"</p></div></div>"
+ print(backup.encode('utf8'))
+ for e in eventpack:
+ if e.duration.total_seconds() == 3600*1+30*60:
+ lg =0
+ elif e.duration.total_seconds() == 3600*3+15*60:
+ lg=1
+ elif e.duration.total_seconds() == 3600*5:
+ lg=2
+ else :
+ lg=0
+ if (e.begin.to('local').day != oldday) :
+ printday(e.begin.to('local'))
+ oldday=e.begin.to('local').day
+ txt = u"<div class='cadre'><div class='event'><h2>"+e.name+u"</h2>"
+ if lg > 0:
+ txt=txt+u"<br><br><br>"
+ if lg == 2 :
+ txt+=u"<br><br><br>"
+ txt=txt+u"<p>"+e.description[0:len(e.description)-30]
+ if lg > 0:
+ txt=txt+u"<br><br><br>"
+ if lg == 2 :
+ txt+=u"<br><br><br>"
+ txt=txt+u"<br>"+e.location+u"<br>"
+ print(txt.encode('utf8'))
+ print(e.begin.to('local').format('DD/MM HH:mm')+"<br>")
+ print(u"</p></div></div>")
+
+
+cgitb.enable()
+print ('Content-type:text/html')
+print
+print ('<!doctype html><html lang="fr"> <head>')
+formulaire = cgi.FieldStorage()
+if formulaire.getvalue('recherche')==None:
+ print("<meta http-equiv='refresh' content='1; URL=index.py'>")
+else :
+ print('<meta charset="utf-8"><link rel="stylesheet" type="text/css" href="style.css"><title> Emploi du temps UM fds</title></head><body>')
+ fichier = open('edtnum','r')
+ for line in fichier.readlines():
+ res= re.search('^([^:]*):'+formulaire.getvalue('recherche')+'$',line)
+ if res:
+ letsparse(res.group(1),formulaire.getvalue('duration'))
+ fichier.close()
+ print('<p> Made by <a href="https://twitter.com/Gaspard_c">@Gaspard_c</a></p></body></html>')
diff --git a/EDT STABLE/style.css b/EDT STABLE/style.css
new file mode 100644
index 0000000..4333a4c
--- /dev/null
+++ b/EDT STABLE/style.css
@@ -0,0 +1,114 @@
+body {
+ background-color: #68696E;
+ text-align: center;
+ font-family: Arial, Helvetica, sans-serif;
+}
+
+h1 {
+ color: black;
+ margin-left: auto;
+ text-align: center;
+}
+.event h2 {
+ background-color : #23377F;
+ margin : 0% 0% 0% 0%;
+}
+.event p {
+ margin: 0.5% 0% 0% 0%;
+}
+.event {
+ background-color : #313B3D;
+ padding : 0% 0% 0% 0%;
+ color : white;
+ margin: 0% 0% 0% 0%;
+}
+.info h2{
+ background-color : #23377F;
+ margin : 0% 0% 0% 0%;
+}
+.cadre{
+ background-color : #B7BAC3;
+ margin : 1% 20% 1% 20%;
+ padding : 0% 0% 0% 0.7%;
+ color : white;
+
+}
+.info {
+ background-color:#313B3D;
+ color : white;
+ padding : 0.5% 1% 0.5% 1%;
+}
+.cadreinfo{
+ float:left;
+ background-color : #B7BAC3;
+ padding : 0% 0% 0% 0.5%;
+ margin : 2% 1% 4% 2%;
+ color : white;
+ width:10%;
+
+}
+
+.day {
+ background-color: #313B3D;
+ color:white;
+ margin-left: auto;
+ margin-right: auto;
+ margin-top:2%;
+ margin-bottom:2%;
+ padding: 0.5% 0.5% 0.5% 0.5%;
+}
+
+.cadreday{
+ background-color : #23377F;
+ padding:0% 1% 0% 1%;
+ width:8%;
+ margin-top: 1%;
+ margin-left: auto;
+ margin-right: auto;
+ margin-bottom: 1%;
+}
+.formulaire form{
+ margin:1% 0% 1% 0%;
+}
+.formulaire {
+ background-color: #313B3D;
+ margin-left:0.5%;
+ margin-right:0.5%;
+ margin-top: 0%;
+ margin-bottom: 0.5%;
+ color : white;
+ padding: 1% 1% 1% 1%;
+}
+.info p {
+ text-align: justify;
+}
+.center {
+ text-align: center;
+}
+.formulaire p {
+ text-align: justify;
+}
+.formulaire h2{
+ background-color : #23377F;
+ margin : 0% 0% 1% 0%;
+ width:100%;
+ float:left;
+}
+.cadreform h2{
+ background-color : #23377F;
+ margin : 0% 0% 0% 0%;
+ width:100%;
+}
+.cadreform{
+ background-color : #B7BAC3;
+ padding : 0% 0% 0% 0%;
+ margin-top : 5%;
+ margin-left: auto;
+ margin-right: auto;
+ color : white;
+ width:60%;
+ padding-bottom: 0.1%;
+}
+.hidden{
+ display: none;
+}