File:  [Repository] / OSAS / OSA_system / OSAS_ids.py
Revision 1.9: download - view: text, annotated - select for diffs - revision graph
Fri Jan 19 17:16:25 2007 UTC (17 years, 5 months ago) by casties
Branches: MAIN
CVS tags: HEAD
fixed PgSQL imports to work with psycopg2

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

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