File:  [Repository] / OSAS / OSA_system / OSAS_ids.py
Revision 1.10: download - view: text, annotated - select for diffs - revision graph
Mon Mar 5 17:58:06 2007 UTC (17 years, 3 months ago) by casties
Branches: MAIN
CVS tags: HEAD
update to psycopg connect string

    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: import psycopg as PgSQL
   16: try:
   17:     import psycopg2 as PgSQL
   18: except:
   19:     try:
   20:         import psycopg as PgSQL
   21:     except:
   22:         import pgdb as PgSQL
   23: 
   24: from Products.PageTemplates.PageTemplate import PageTemplate
   25: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
   26: 
   27: import random
   28: import types
   29: import time
   30: import os.path
   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
   39:         
   40:         self.dsn = "dbname=osas_ids user=archiver"
   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:         
   58:         conn=PgSQL.connect(self.dsn)
   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"""
   69:         conn=PgSQL.connect(self.dsn)
   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"""
   82:         pt=PageTemplateFile(os.path.join(package_home(globals()),"zpt","OSAS_ids.zpt")).__of__(self)
   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
   95:             pt=PageTemplateFile(os.path.join(package_home(globals()),"zpt","OSAS_printIDs.zpt")).__of__(self)
   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:
  122:             pt=PageTemplateFile(os.path.join(package_home(globals()),"zpt","OSAS_registrationIdsDone.zpt")).__of__(self)
  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"""
  182:     pt=PageTemplateFile(os.path.join(package_home(globals()),"zpt","AddOSAS_idGenerator.zpt")).__of__(self)
  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>