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