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>