File:  [Repository] / OSAS / OSA_system / OSAS_ids.py
Revision 1.7: download - view: text, annotated - select for diffs - revision graph
Wed Mar 3 13:02:54 2004 UTC (20 years, 4 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
moved templates to zpt

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

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