#!/bin/bash /usr/scripts/python.sh
# -*- coding: utf-8 -*-
"""
 etat_imprimante.py

     Récupère, filtre et formate l'état actuel de l'imprimante

 Copyright (c) 2006, 2007, 2008, 2009 by Cr@ns (http://www.crans.org)

"""

import BeautifulSoup
import requests
import HTMLParser
import sys
from gestion.hptools import snmp

STATUS_URL = 'https://imprimante.adm.crans.org/hp/device/DeviceStatus/Index'
CA = '/etc/ssl/certs/cacert.org.pem'

class ErreurCommunication(Exception):
    """Si une erreur est survenue lors de la communication avec l'imprimante"""
    pass

def etat():
    return \
     ["L'imprimante est en test. L'interfaçage n'est pas encore terminé.",
      "Une notification de fin d'impression est envoyée par mail, avec les codes nécessaires pour aller récupérer vos documents.",
      _http_status()]

def _http_status():
    try:
        req = requests.get(STATUS_URL, verify=CA)
        doc = BeautifulSoup.BeautifulSoup(req.text)
        status_tag = doc.find(attrs={'id': 'MachineStatus'})
        h = HTMLParser.HTMLParser()
        return h.unescape(status_tag.text)
    except:
        raise ErreurCommunication()

if __name__ == '__main__':
    for x in etat():
        print x
