1: """Generate and organize the institutes internal IDs
2: DW 2003, itgroup """
3:
4: from AccessControl import ClassSecurityInfo
5: from Globals import InitializeClass
6: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
7: from Products.PageTemplates.PageTemplate import PageTemplate
8: from OFS.SimpleItem import SimpleItem
9: from pyPgSQL import PgSQL
10: #import pgdb as PgSQL
11: from Products.PageTemplates.PageTemplate import PageTemplate
12: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
13:
14: import random
15: import types
16: import time
17:
18: class OSAS_idGenerator(SimpleItem):
19: """Object zum Erzeugen und Registrieren von ID's"""
20:
21: def __init__(self, id,title):
22: """init"""
23: self.id=id
24: self.title=title
25:
26: meta_type="OSAS_idGenerator"
27:
28: def getOSASId(self):
29: """erzeuge ID"""
30: id=self.generateId()
31: print "ID",id
32: while self.idExists(id):
33: id=self.generateId()
34: return id
35:
36: def registerID(self,id,date,name):
37: """registrieren der id"""
38:
39: if self.idExists(id):
40: return "ERROR: id - %s - already exists" %id
41:
42:
43: #conn=PgSQL.connect("127.0.0.1 dbname=osas_ids user=dwinter")
44:
45:
46: conn=PgSQL.connect("127.0.0.1:osas_ids:dwinter")
47:
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>