diff --git a/sip/code_impression.py b/sip/code_impression.py index 72ea3a21..a4b75228 100755 --- a/sip/code_impression.py +++ b/sip/code_impression.py @@ -1,19 +1,34 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +import os import sys +import random from sh import grep,ErrorReturnCode_1 sys.path.append('/usr/scripts/') import lc_ldap.shortcuts +from lc_ldap.attributs import imprimeur, nounou conn=lc_ldap.shortcuts.lc_ldap_admin() +code_path='/usr/scripts/var/digicode/' try: aid=int(sys.argv[1][1:]) except ValueError: sys.stdout.write('NONE') exit(0) -login=conn.search(u"aid=%s" % aid)[0]['uid'][0] +adh = conn.search(u"aid=%s" % aid)[0] +login = str(adh.get('uid',['NONE'])[0]) try: - sys.stdout.write(grep('-r',login,'/usr/scripts/var/digicode/').split('/')[-1].split(':')[0]) -except ErrorReturnCode_1: sys.stdout.write('NONE') + sys.stdout.write(grep('-rl',login, code_path).split('/')[-1]) +except ErrorReturnCode_1: + droits = [str(d) for d in adh.get('droits', [])] + if imprimeur in droits or nounou in droits: + code = str(random.randint(100000, 999999)) + 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)) + else: + sys.stdout.write('NONE')