forked from ScoDoc/DocScoDoc
82 lines
2.9 KiB
Python
82 lines
2.9 KiB
Python
|
#!/usr/bin/env python
|
||
|
# -*- mode: python -*-
|
||
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
"""Exemple connexion sur ScoDoc et utilisation de l'API
|
||
|
|
||
|
Attention: cet exemple est en Python 2.
|
||
|
Voir example-api-1.py pour une version en Python3 plus moderne.
|
||
|
"""
|
||
|
|
||
|
import urllib, urllib2
|
||
|
|
||
|
# A modifier pour votre serveur:
|
||
|
BASEURL = "https://scodoc.xxx.net/ScoDoc/RT/Scolarite"
|
||
|
USER = "XXX"
|
||
|
PASSWORD = "XXX"
|
||
|
|
||
|
values = {'__ac_name' : USER,
|
||
|
'__ac_password' : PASSWORD,
|
||
|
}
|
||
|
|
||
|
# Configure memorisation des cookies:
|
||
|
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
|
||
|
urllib2.install_opener(opener)
|
||
|
|
||
|
data = urllib.urlencode(values)
|
||
|
|
||
|
req = urllib2.Request(BASEURL, data) # this is a POST http request
|
||
|
response = urllib2.urlopen(req)
|
||
|
|
||
|
# --- Use API
|
||
|
|
||
|
# Affiche la liste des formations en format XML
|
||
|
req = urllib2.Request(BASEURL+'/Notes/formation_list?format=xml' )
|
||
|
response = urllib2.urlopen(req)
|
||
|
print response.read()[:100] # limite aux 100 premiers caracteres...
|
||
|
|
||
|
# Recupere la liste de tous les semestres:
|
||
|
req = urllib2.Request(BASEURL+'/Notes/formsemestre_list?format=json') # format json
|
||
|
response = urllib2.urlopen(req)
|
||
|
js_data = response.read()
|
||
|
|
||
|
# Plus amusant: va retrouver le bulletin de notes du premier etudiant (au hasard donc) du premier semestre (au hasard aussi)
|
||
|
try:
|
||
|
import json # Attention: ceci demande Python >= 2.6
|
||
|
except:
|
||
|
import simplejson as json # python2.4 with simplejson installed
|
||
|
|
||
|
data = json.loads(js_data) # decode la reponse JSON
|
||
|
if not data:
|
||
|
print "Aucun semestre !"
|
||
|
else:
|
||
|
formsemestre_id = str(data[0]['formsemestre_id'])
|
||
|
# Obtient la liste des groupes:
|
||
|
req = urllib2.Request(BASEURL+'/Notes/formsemestre_partition_list?format=json&formsemestre_id='+formsemestre_id) # format json
|
||
|
response = urllib2.urlopen(req)
|
||
|
js_data = response.read()
|
||
|
data = json.loads(js_data)
|
||
|
group_id = data[0]['group'][0]['group_id'] # premier groupe (normalement existe toujours)
|
||
|
# Liste les étudiants de ce groupe:
|
||
|
req = urllib2.Request(BASEURL+'/Notes/group_list?format=json&with_codes=1&group_id='+group_id) # format json
|
||
|
response = urllib2.urlopen(req)
|
||
|
js_data = response.read()
|
||
|
data = json.loads(js_data)
|
||
|
# Le code du premier étudiant:
|
||
|
if not data:
|
||
|
print "pas d'etudiants dans ce semestre !"
|
||
|
else:
|
||
|
etudid = data[0]['etudid']
|
||
|
# Récupère bulletin de notes:
|
||
|
req = urllib2.Request(BASEURL+'/Notes/formsemestre_bulletinetud?formsemestre_id='+formsemestre_id+'&etudid=' + etudid + '&format=xml') # format XML ici !
|
||
|
response = urllib2.urlopen(req)
|
||
|
xml_bulletin = response.read()
|
||
|
print '----- Bulletin de notes en XML:'
|
||
|
print xml_bulletin
|
||
|
# Récupère la moyenne générale:
|
||
|
import xml.dom.minidom
|
||
|
doc = xml.dom.minidom.parseString(xml_bulletin)
|
||
|
moy = doc.getElementsByTagName('note')[0].getAttribute('value') # une chaine unicode
|
||
|
print '\nMoyenne generale: ', moy
|
||
|
|