[sip/impression] On utilise l'api impression/digicode

This commit is contained in:
Valentin Samir 2013-06-17 20:54:46 +02:00
parent 0e5fa7d103
commit e0d37eb62a

View file

@ -1,34 +1,29 @@
#!/usr/bin/env python #!/usr/bin/env python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import os
import sys import sys
import random
from sh import grep,ErrorReturnCode_1
sys.path.append('/usr/scripts/') sys.path.append('/usr/scripts/')
import lc_ldap.shortcuts from lc_ldap.shortcuts import lc_ldap_admin
from lc_ldap.attributs import imprimeur, nounou from lc_ldap.attributs import imprimeur, nounou
from impression import digicode
conn=lc_ldap.shortcuts.lc_ldap_admin() conn=lc_ldap_admin()
code_path='/usr/scripts/var/digicode/'
try: try:
aid=int(sys.argv[1][1:]) aid=int(sys.argv[1][1:])
except ValueError:
sys.stdout.write('NONE')
exit(0)
adh = conn.search(u"aid=%s" % aid)[0] adh = conn.search(u"aid=%s" % aid)[0]
login = str(adh.get('uid',['NONE'])[0]) login = str(adh.get('uid',['NONE'])[0])
try: codes = digicode.get_codes(login)
sys.stdout.write(grep('-rl',login, code_path).split('/')[-1]) if codes:
except ErrorReturnCode_1: sys.stdout.write(codes[0])
else:
droits = [str(d) for d in adh.get('droits', [])] droits = [str(d) for d in adh.get('droits', [])]
if imprimeur in droits or nounou in droits: if imprimeur in droits or nounou in droits:
code = str(random.randint(100000, 999999)) code = digicode.gen_code(login)
while os.path.isfile(code_path + code):
code = str(random.randint(100000, 999999))
with open(code_path + code, 'w') as f:
f.write(login + '\n')
sys.stdout.write(str(code)) sys.stdout.write(str(code))
else: else:
sys.stdout.write('NONE') sys.stdout.write('NONE')
except ValueError, IndexError:
sys.stdout.write('NONE')