Annotation of OSAS/OSA_system/OSAS_ids.py, revision 1.10

1.1       dwinter     1: """Generate and organize the institutes internal IDs
1.7       dwinter     2: DW 2003, itgroup
                      3: 
                      4: needs PgSQL
                      5: needs manual configuration at the moment
                      6: 
                      7: """
1.1       dwinter     8: 
                      9: from AccessControl import ClassSecurityInfo
1.8       dwinter    10: from Globals import InitializeClass,package_home
1.1       dwinter    11: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
                     12: from Products.PageTemplates.PageTemplate import PageTemplate
                     13: from OFS.SimpleItem import SimpleItem
1.6       dwinter    14: #from pyPgSQL import PgSQL
1.10    ! casties    15: import psycopg as PgSQL
1.9       casties    16: try:
                     17:     import psycopg2 as PgSQL
                     18: except:
                     19:     try:
                     20:         import psycopg as PgSQL
                     21:     except:
                     22:         import pgdb as PgSQL
                     23: 
1.1       dwinter    24: from Products.PageTemplates.PageTemplate import PageTemplate
                     25: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
                     26: 
                     27: import random
                     28: import types
                     29: import time
1.8       dwinter    30: import os.path
1.1       dwinter    31: 
                     32: class OSAS_idGenerator(SimpleItem):
                     33:     """Object zum Erzeugen und Registrieren von ID's"""
                     34: 
                     35:     def __init__(self, id,title):
                     36:         """init"""
                     37:         self.id=id
                     38:         self.title=title
1.10    ! casties    39:         
        !            40:         self.dsn = "dbname=osas_ids user=archiver"
1.1       dwinter    41: 
                     42:     meta_type="OSAS_idGenerator"
                     43: 
                     44:     def getOSASId(self):
                     45:         """erzeuge ID"""
                     46:         id=self.generateId()
                     47:         print "ID",id
                     48:         while self.idExists(id):
                     49:             id=self.generateId()
                     50:         return id
                     51: 
                     52:     def registerID(self,id,date,name):
                     53:         """registrieren der id"""
                     54: 
                     55:         if self.idExists(id):
                     56:             return "ERROR: id - %s - already exists" %id
                     57:         
1.10    ! casties    58:         conn=PgSQL.connect(self.dsn)
1.1       dwinter    59:         curs=conn.cursor()
                     60: 
                     61:         curs.execute("INSERT INTO institutesIds (id,date,name)  VALUES ('%s','%s','%s')" % (id,date,name))
                     62:         
                     63:         conn.commit()
                     64: 
                     65:         return "OK: id - %s - registered" %id
                     66:     
                     67:     def idExists(self,id):
                     68:         """Existiert eine ID"""
1.10    ! casties    69:         conn=PgSQL.connect(self.dsn)
1.1       dwinter    70:         curs=conn.cursor()
                     71: 
                     72:         founds=curs.execute("SELECT id FROM institutesIds WHERE id='%s'"%id) 
                     73:         conn.commit()
                     74:         
                     75:         if not founds==None:
                     76:             return True
                     77:         else:
                     78:             return False
                     79:         
                     80:     def index_html(self):
                     81:         """ID generator"""
1.8       dwinter    82:         pt=PageTemplateFile(os.path.join(package_home(globals()),"zpt","OSAS_ids.zpt")).__of__(self)
1.1       dwinter    83:         return pt()
                     84: 
                     85:     def giveIdsOut(self,number,RESPONSE=None):
                     86:         """Ausgabe von ID's"""
                     87:         number=int(number)
                     88:         ids=[]
                     89: 
                     90:         for i in range(number):
                     91:             ids.append(self.getOSASId())
                     92: 
                     93:         if RESPONSE:
                     94:             self.REQUEST.SESSION['ids']=ids
1.8       dwinter    95:             pt=PageTemplateFile(os.path.join(package_home(globals()),"zpt","OSAS_printIDs.zpt")).__of__(self)
1.1       dwinter    96:             return pt()
                     97:         else:
                     98:             return ids
                     99: 
                    100:     def registerIdsOut(self,ids,name=None,IdDate=None,RESPONSE=None):
                    101:         """Registriere IDS"""
                    102:         #print "TYPES",type(ids)
                    103:         #import datetime
                    104:         
                    105:         if not name:
                    106:             name="Anon"
                    107: 
                    108:         if not IdDate:
                    109:             IdDate=time.strftime("%Y%m%d",time.localtime())
                    110:             
                    111:         if type(ids) is types.ListType:
                    112:             
                    113:             for id in ids:
                    114:                 #print "id",id
                    115:                 self.registerID(id,IdDate,name)
                    116:             self.REQUEST.SESSION['ids']=ids
                    117:         else:
                    118:             self.registerID(ids,IdDate,name)
                    119:             self.REQUEST.SESSION['ids']=[ids]
                    120: 
                    121:         if RESPONSE:
1.8       dwinter   122:             pt=PageTemplateFile(os.path.join(package_home(globals()),"zpt","OSAS_registrationIdsDone.zpt")).__of__(self)
1.1       dwinter   123:             return pt()
                    124:         else:
                    125:             return self.REQUEST.SESSION['ids']
                    126: 
                    127: 
                    128:     def generateId(self):
                    129:         """Zufällige ID"""
                    130:         driEncode={ 0:'0',
                    131:                     1:'1',
                    132:                     2:'2',
                    133:                     3:'3',
                    134:                     4:'4',
                    135:                     5:'5',
                    136:                     6:'6',
                    137:                     7:'7',
                    138:                     8:'8',
                    139:                     9:'9',
                    140:                     10:'A',
                    141:                     11:'B',
                    142:                     12:'C',
                    143:                     13:'D',
                    144:                     14:'E',
                    145:                     15:'F',
                    146:                     16:'G',
                    147:                     17:'H',
                    148:                     18:'K',
                    149:                     19:'M',
                    150:                     20:'N',
                    151:                     21:'P',
                    152:                     22:'Q',
                    153:                     23:'R',
                    154:                     24:'S',
                    155:                     25:'T',
                    156:                     26:'U',
                    157:                     27:'V',
                    158:                     28:'W',
                    159:                     29:'X',
                    160:                     30:'Y',
                    161:                     31:'Z'
                    162:                     }
                    163:         
                    164:         random.seed()
                    165:         x=[]
                    166:         for i in range(7):
                    167:             x.append(random.randint(0,31))
                    168: 
                    169:         sum=0
                    170:         for i in range(7):
                    171:             sum+=(i+1)*x[i]
                    172:             print i
                    173:         c=sum % 31
                    174:         id=""
                    175:         for i in range(7):
                    176:             id+=driEncode[x[i]]
                    177:         id+=driEncode[c]
                    178:         return id
                    179:         
                    180: def manage_AddOSAS_idGeneratorForm(self):
                    181:     """Erzeuge idGenerator"""
1.8       dwinter   182:     pt=PageTemplateFile(os.path.join(package_home(globals()),"zpt","AddOSAS_idGenerator.zpt")).__of__(self)
1.1       dwinter   183:     return pt()
                    184: 
                    185: def manage_AddOSAS_idGenerator(self,id,title=None,RESPONSE=None):
                    186:     """add the OSAS_root"""
                    187:     newObj=OSAS_idGenerator(id,title)
                    188:     self._setObject(id,newObj)
                    189:     if RESPONSE is not None:
                    190:         RESPONSE.redirect('manage_main')
                    191: 
                    192: 
                    193: 
                    194: 
                    195:     
                    196:         
                    197: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>