File:  [Repository] / OSAS / OSA_system / OSAS_ids.py
Revision 1.8: download - view: text, annotated - select for diffs - revision graph
Wed May 4 14:31:24 2005 UTC (19 years, 1 month ago) by dwinter
Branches: MAIN
CVS tags: HEAD
zope2.7 anpassungenCVS: ----------------------------------------------------------------------

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

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