annotate managePurls/manageIndexMetaPURLs.py @ 20:cf4503528b5e

searchsolr neue function, zun?chst nur f?r text-url-path
author dwinter
date Tue, 29 Jan 2013 16:51:28 +0100
parents cce127a28fc9
children f748e2b684c9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
dwinter
parents:
diff changeset
1 '''
dwinter
parents:
diff changeset
2 Created on 31.10.2012
dwinter
parents:
diff changeset
3
dwinter
parents:
diff changeset
4 @author: dwinter
dwinter
parents:
diff changeset
5 '''
dwinter
parents:
diff changeset
6
dwinter
parents:
diff changeset
7 import web
dwinter
parents:
diff changeset
8 import random
dwinter
parents:
diff changeset
9
dwinter
parents:
diff changeset
10 ALREADY_EXISTS=0
dwinter
parents:
diff changeset
11 NEW_PURL=1
dwinter
parents:
diff changeset
12 ERROR=-1
3
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
13 UPDATED=2
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
14
0
dwinter
parents:
diff changeset
15 PURL_PREFIX="MPIWG:"
2
fb2a3b4542a4 restservice
dwinter
parents: 1
diff changeset
16
fb2a3b4542a4 restservice
dwinter
parents: 1
diff changeset
17 VALID=1
fb2a3b4542a4 restservice
dwinter
parents: 1
diff changeset
18 TEMP_NON_VALID=0
fb2a3b4542a4 restservice
dwinter
parents: 1
diff changeset
19 PERM_NON_VALID=-1
0
dwinter
parents:
diff changeset
20
dwinter
parents:
diff changeset
21 class IndexMetaPURLManager:
dwinter
parents:
diff changeset
22
dwinter
parents:
diff changeset
23 # register a new path to htmk
dwinter
parents:
diff changeset
24 # should start with /mpiwg/online/ oder direct mit /permanent/ oder /archive/
dwinter
parents:
diff changeset
25 # return tuple: status, result
dwinter
parents:
diff changeset
26
dwinter
parents:
diff changeset
27 purlDB=None
dwinter
parents:
diff changeset
28 # DB has fields:
dwinter
parents:
diff changeset
29 # purl purl
dwinter
parents:
diff changeset
30 # path url or path to indexMeta
3
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
31 # imagePath dezidierter Pfad auf images.
0
dwinter
parents:
diff changeset
32 # is_Index_meta bolean
dwinter
parents:
diff changeset
33 # created_by
dwinter
parents:
diff changeset
34 # created_at
dwinter
parents:
diff changeset
35 # last_change
dwinter
parents:
diff changeset
36 # validity 1 if it is valid, 0 if temporary invalid, -1 if permanetly invalid
dwinter
parents:
diff changeset
37 # server_url base_url of server
3
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
38
0
dwinter
parents:
diff changeset
39
dwinter
parents:
diff changeset
40 def __init__(self):
19
cce127a28fc9 added getpurls
dwinter
parents: 14
diff changeset
41 #self.purlDB = web.database(dbn="postgres", db="purlDB",user="purlUSER",password="p*lWa55eR", host="tuxserve03")
cce127a28fc9 added getpurls
dwinter
parents: 14
diff changeset
42 self.purlDB = web.database(dbn="postgres", db="purlDB",user="purlUSER",password="3333")
0
dwinter
parents:
diff changeset
43
8
733d43b30a82 connection handling changed
dwinter
parents: 7
diff changeset
44
0
dwinter
parents:
diff changeset
45
dwinter
parents:
diff changeset
46 def getPath(self,purl):
dwinter
parents:
diff changeset
47 urls = self.purlDB.select('"purls"' ,where="purl='%s'"%purl)
dwinter
parents:
diff changeset
48 if urls is None or len(urls)==0:
dwinter
parents:
diff changeset
49 return None
dwinter
parents:
diff changeset
50 else:
dwinter
parents:
diff changeset
51 return urls[0]['path']
2
fb2a3b4542a4 restservice
dwinter
parents: 1
diff changeset
52
3
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
53 def getImagePath(self,purl):
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
54 urls = self.purlDB.select('"purls"' ,where="purl='%s'"%purl)
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
55 if urls is None or len(urls)==0:
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
56 return None
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
57 else:
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
58 return urls[0]['image_path']
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
59
2
fb2a3b4542a4 restservice
dwinter
parents: 1
diff changeset
60 def isIndexMeta(self,purl):
fb2a3b4542a4 restservice
dwinter
parents: 1
diff changeset
61 urls = self.purlDB.select('"purls"' ,where="purl='%s'"%purl)
fb2a3b4542a4 restservice
dwinter
parents: 1
diff changeset
62 if urls is None or len(urls)==0:
fb2a3b4542a4 restservice
dwinter
parents: 1
diff changeset
63 return False
fb2a3b4542a4 restservice
dwinter
parents: 1
diff changeset
64 else:
fb2a3b4542a4 restservice
dwinter
parents: 1
diff changeset
65 return urls[0]['is_index_meta']
0
dwinter
parents:
diff changeset
66
3
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
67 def getImagePathValidity(self,purl):
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
68 urls = self.purlDB.select('"purls"' ,where="purl='%s'"%purl)
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
69 if urls is None or len(urls)==0:
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
70 return None,-1
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
71 else:
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
72 res = urls[0]
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
73 return res['image_path'],res['validity']
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
74
2
fb2a3b4542a4 restservice
dwinter
parents: 1
diff changeset
75
fb2a3b4542a4 restservice
dwinter
parents: 1
diff changeset
76 def getPathValidity(self,purl):
fb2a3b4542a4 restservice
dwinter
parents: 1
diff changeset
77 urls = self.purlDB.select('"purls"' ,where="purl='%s'"%purl)
fb2a3b4542a4 restservice
dwinter
parents: 1
diff changeset
78 if urls is None or len(urls)==0:
fb2a3b4542a4 restservice
dwinter
parents: 1
diff changeset
79 return None,-1
fb2a3b4542a4 restservice
dwinter
parents: 1
diff changeset
80 else:
fb2a3b4542a4 restservice
dwinter
parents: 1
diff changeset
81 res = urls[0]
fb2a3b4542a4 restservice
dwinter
parents: 1
diff changeset
82 return res['path'],res['validity']
fb2a3b4542a4 restservice
dwinter
parents: 1
diff changeset
83
0
dwinter
parents:
diff changeset
84 #get purl attached tp a path or URL, return None if none.
dwinter
parents:
diff changeset
85
dwinter
parents:
diff changeset
86 #checke if purl exist
dwinter
parents:
diff changeset
87 def exists(self,purl):
dwinter
parents:
diff changeset
88 if self.getPath(purl)==None:
dwinter
parents:
diff changeset
89 return False
dwinter
parents:
diff changeset
90 return True
dwinter
parents:
diff changeset
91
dwinter
parents:
diff changeset
92
dwinter
parents:
diff changeset
93 def getPurl(self,path):
1
fef9ad4020ee sql change
dwinter
parents: 0
diff changeset
94 #urls = self.purlDB.select('"purls"',where="path=%s"%web.sqlquote(path.replace("'"))
fef9ad4020ee sql change
dwinter
parents: 0
diff changeset
95 urls = self.purlDB.query("select * from purls where path=$path",vars={'path':path})
8
733d43b30a82 connection handling changed
dwinter
parents: 7
diff changeset
96
0
dwinter
parents:
diff changeset
97 if urls is None or len(urls)==0:
dwinter
parents:
diff changeset
98 return None
dwinter
parents:
diff changeset
99 else:
dwinter
parents:
diff changeset
100 return urls[0]['purl']
dwinter
parents:
diff changeset
101
dwinter
parents:
diff changeset
102
8
733d43b30a82 connection handling changed
dwinter
parents: 7
diff changeset
103
733d43b30a82 connection handling changed
dwinter
parents: 7
diff changeset
104 def search(self,query):
733d43b30a82 connection handling changed
dwinter
parents: 7
diff changeset
105 purls = self.purlDB.query("select purl from purls where path like $path",vars={'path':query})
733d43b30a82 connection handling changed
dwinter
parents: 7
diff changeset
106 if purls is None or len(purls)==0:
733d43b30a82 connection handling changed
dwinter
parents: 7
diff changeset
107 return None
733d43b30a82 connection handling changed
dwinter
parents: 7
diff changeset
108 else:
733d43b30a82 connection handling changed
dwinter
parents: 7
diff changeset
109 return purls
733d43b30a82 connection handling changed
dwinter
parents: 7
diff changeset
110
733d43b30a82 connection handling changed
dwinter
parents: 7
diff changeset
111
0
dwinter
parents:
diff changeset
112 def generatePurl(self):
dwinter
parents:
diff changeset
113
dwinter
parents:
diff changeset
114
dwinter
parents:
diff changeset
115 driEncode={ 0:'0',
dwinter
parents:
diff changeset
116 1:'1',
dwinter
parents:
diff changeset
117 2:'2',
dwinter
parents:
diff changeset
118 3:'3',
dwinter
parents:
diff changeset
119 4:'4',
dwinter
parents:
diff changeset
120 5:'5',
dwinter
parents:
diff changeset
121 6:'6',
dwinter
parents:
diff changeset
122 7:'7',
dwinter
parents:
diff changeset
123 8:'8',
dwinter
parents:
diff changeset
124 9:'9',
dwinter
parents:
diff changeset
125 10:'A',
dwinter
parents:
diff changeset
126 11:'B',
dwinter
parents:
diff changeset
127 12:'C',
dwinter
parents:
diff changeset
128 13:'D',
dwinter
parents:
diff changeset
129 14:'E',
dwinter
parents:
diff changeset
130 15:'F',
dwinter
parents:
diff changeset
131 16:'G',
dwinter
parents:
diff changeset
132 17:'H',
dwinter
parents:
diff changeset
133 18:'K',
dwinter
parents:
diff changeset
134 19:'M',
dwinter
parents:
diff changeset
135 20:'N',
dwinter
parents:
diff changeset
136 21:'P',
dwinter
parents:
diff changeset
137 22:'Q',
dwinter
parents:
diff changeset
138 23:'R',
dwinter
parents:
diff changeset
139 24:'S',
dwinter
parents:
diff changeset
140 25:'T',
dwinter
parents:
diff changeset
141 26:'U',
dwinter
parents:
diff changeset
142 27:'V',
dwinter
parents:
diff changeset
143 28:'W',
dwinter
parents:
diff changeset
144 29:'X',
dwinter
parents:
diff changeset
145 30:'Y',
dwinter
parents:
diff changeset
146 31:'Z'
dwinter
parents:
diff changeset
147 }
dwinter
parents:
diff changeset
148
dwinter
parents:
diff changeset
149 random.seed()
dwinter
parents:
diff changeset
150 x=[]
dwinter
parents:
diff changeset
151 for i in range(7):
dwinter
parents:
diff changeset
152 x.append(random.randint(0,31))
dwinter
parents:
diff changeset
153
dwinter
parents:
diff changeset
154 sm=0
dwinter
parents:
diff changeset
155 for i in range(7):
dwinter
parents:
diff changeset
156 sm+=(i+1)*x[i]
dwinter
parents:
diff changeset
157
dwinter
parents:
diff changeset
158 c=sm % 31
dwinter
parents:
diff changeset
159 nid=""
dwinter
parents:
diff changeset
160 for i in range(7):
dwinter
parents:
diff changeset
161 nid+=driEncode[x[i]]
dwinter
parents:
diff changeset
162 nid+=driEncode[c]
dwinter
parents:
diff changeset
163 return PURL_PREFIX+nid
dwinter
parents:
diff changeset
164
dwinter
parents:
diff changeset
165
dwinter
parents:
diff changeset
166
dwinter
parents:
diff changeset
167
dwinter
parents:
diff changeset
168 #generate purl and add it to the database
3
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
169 def createPurl(self,path,isIndexMeta,imagePath="",server_url="",user=""):
0
dwinter
parents:
diff changeset
170
dwinter
parents:
diff changeset
171 purl = self.generatePurl()
dwinter
parents:
diff changeset
172
dwinter
parents:
diff changeset
173 #erzeuge eine neue purl
dwinter
parents:
diff changeset
174 while self.exists(purl):
dwinter
parents:
diff changeset
175 purl = self.gneratePurl()
dwinter
parents:
diff changeset
176
dwinter
parents:
diff changeset
177
3
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
178 seq= self.purlDB.insert('purls',path=path,purl=purl,is_index_meta=isIndexMeta, image_path=imagePath,
0
dwinter
parents:
diff changeset
179 server_url=server_url,validity=1,created_by=user,created_at=web.SQLLiteral("NOW()"))
dwinter
parents:
diff changeset
180
dwinter
parents:
diff changeset
181
dwinter
parents:
diff changeset
182 return purl
dwinter
parents:
diff changeset
183
dwinter
parents:
diff changeset
184 #register a new path
3
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
185
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
186
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
187 def updatePurl(self,purl,isIndexMeta,path="",imagePath="",server_url="",user=""):
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
188
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
189 update= self.purlDB.update('purls',where="purl = '%s'"%web.sqlparam(purl),path=path,is_index_meta=isIndexMeta, image_path=imagePath,
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
190 server_url=server_url,validity=1,last_change_by=user,last_change_at=web.SQLLiteral("NOW()"))
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
191
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
192
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
193 return update
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
194
19
cce127a28fc9 added getpurls
dwinter
parents: 14
diff changeset
195 def register(self,path=None,isIndexMeta=False,imagePath="",server_url="",user="",update=False):
0
dwinter
parents:
diff changeset
196
dwinter
parents:
diff changeset
197
dwinter
parents:
diff changeset
198 #teste ob es zu dem Pfad schon eine Purl gibt
19
cce127a28fc9 added getpurls
dwinter
parents: 14
diff changeset
199
cce127a28fc9 added getpurls
dwinter
parents: 14
diff changeset
200 if path: # wenn ein pfad definiert ist teste ob es schon eine purl dazu gibt.
cce127a28fc9 added getpurls
dwinter
parents: 14
diff changeset
201 purl = self.getPurl(path)
cce127a28fc9 added getpurls
dwinter
parents: 14
diff changeset
202 else:
cce127a28fc9 added getpurls
dwinter
parents: 14
diff changeset
203 purl =None
0
dwinter
parents:
diff changeset
204 if purl!=None:
3
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
205
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
206 if update:
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
207 up= self.updatePurl(purl, isIndexMeta, path, imagePath, server_url, user)
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
208 if up>0:
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
209 return UPDATED,purl
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
210 else:
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
211 return ERROR,None
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
212
0
dwinter
parents:
diff changeset
213 return ALREADY_EXISTS,purl
dwinter
parents:
diff changeset
214
dwinter
parents:
diff changeset
215
dwinter
parents:
diff changeset
216 #wenn nicht dann neue erzeugen
dwinter
parents:
diff changeset
217 else:
3
caeede0c9464 update and redirector
dwinter
parents: 2
diff changeset
218 purl = self.createPurl(path,isIndexMeta,imagePath=imagePath,user=user,server_url=server_url)
0
dwinter
parents:
diff changeset
219 if purl!=None:
dwinter
parents:
diff changeset
220 return NEW_PURL,purl
dwinter
parents:
diff changeset
221
dwinter
parents:
diff changeset
222 else:
dwinter
parents:
diff changeset
223 return ERROR,None
dwinter
parents:
diff changeset
224
dwinter
parents:
diff changeset
225
dwinter
parents:
diff changeset
226
dwinter
parents:
diff changeset
227
dwinter
parents:
diff changeset
228 if __name__ == '__main__':
dwinter
parents:
diff changeset
229
dwinter
parents:
diff changeset
230 im = IndexMetaPURLManager()
dwinter
parents:
diff changeset
231 print im.register("/tmp3/index.meta", True, "", "dwinter")
4
107f13ca333b try except added
dwinter
parents: 3
diff changeset
232 pass