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