# HG changeset patch # User dwinter # Date 1351867037 -3600 # Node ID 5f5447b3a082541622819a6d85dc50ff69144eb0 # Parent 733d43b30a8216e14a15735c3f7343b2775e9a8b repackaging diff -r 733d43b30a82 -r 5f5447b3a082 manageIndexMetaPURLs.py --- a/manageIndexMetaPURLs.py Fri Nov 02 11:34:23 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,227 +0,0 @@ -''' -Created on 31.10.2012 - -@author: dwinter -''' - -import web -import random - -ALREADY_EXISTS=0 -NEW_PURL=1 -ERROR=-1 -UPDATED=2 - -PURL_PREFIX="MPIWG:" - -VALID=1 -TEMP_NON_VALID=0 -PERM_NON_VALID=-1 - -class IndexMetaPURLManager: - - # register a new path to htmk - # should start with /mpiwg/online/ oder direct mit /permanent/ oder /archive/ - # return tuple: status, result - - purlDB=None - # DB has fields: - # purl purl - # path url or path to indexMeta - # imagePath dezidierter Pfad auf images. - # is_Index_meta bolean - # created_by - # created_at - # last_change - # validity 1 if it is valid, 0 if temporary invalid, -1 if permanetly invalid - # server_url base_url of server - - - def __init__(self): - self.purlDB = web.database(dbn="postgres", db="purlDB",user="purlUSER",password="3333", host="localhost") - - - - def getPath(self,purl): - urls = self.purlDB.select('"purls"' ,where="purl='%s'"%purl) - if urls is None or len(urls)==0: - return None - else: - return urls[0]['path'] - - def getImagePath(self,purl): - urls = self.purlDB.select('"purls"' ,where="purl='%s'"%purl) - if urls is None or len(urls)==0: - return None - else: - return urls[0]['image_path'] - - def isIndexMeta(self,purl): - urls = self.purlDB.select('"purls"' ,where="purl='%s'"%purl) - if urls is None or len(urls)==0: - return False - else: - return urls[0]['is_index_meta'] - - def getImagePathValidity(self,purl): - urls = self.purlDB.select('"purls"' ,where="purl='%s'"%purl) - if urls is None or len(urls)==0: - return None,-1 - else: - res = urls[0] - return res['image_path'],res['validity'] - - - def getPathValidity(self,purl): - urls = self.purlDB.select('"purls"' ,where="purl='%s'"%purl) - if urls is None or len(urls)==0: - return None,-1 - else: - res = urls[0] - return res['path'],res['validity'] - - #get purl attached tp a path or URL, return None if none. - - #checke if purl exist - def exists(self,purl): - if self.getPath(purl)==None: - return False - return True - - - def getPurl(self,path): - #urls = self.purlDB.select('"purls"',where="path=%s"%web.sqlquote(path.replace("'")) - urls = self.purlDB.query("select * from purls where path=$path",vars={'path':path}) - - if urls is None or len(urls)==0: - return None - else: - return urls[0]['purl'] - - - - def search(self,query): - purls = self.purlDB.query("select purl from purls where path like $path",vars={'path':query}) - if purls is None or len(purls)==0: - return None - else: - return purls - - - def generatePurl(self): - - - driEncode={ 0:'0', - 1:'1', - 2:'2', - 3:'3', - 4:'4', - 5:'5', - 6:'6', - 7:'7', - 8:'8', - 9:'9', - 10:'A', - 11:'B', - 12:'C', - 13:'D', - 14:'E', - 15:'F', - 16:'G', - 17:'H', - 18:'K', - 19:'M', - 20:'N', - 21:'P', - 22:'Q', - 23:'R', - 24:'S', - 25:'T', - 26:'U', - 27:'V', - 28:'W', - 29:'X', - 30:'Y', - 31:'Z' - } - - random.seed() - x=[] - for i in range(7): - x.append(random.randint(0,31)) - - sm=0 - for i in range(7): - sm+=(i+1)*x[i] - - c=sm % 31 - nid="" - for i in range(7): - nid+=driEncode[x[i]] - nid+=driEncode[c] - return PURL_PREFIX+nid - - - - - #generate purl and add it to the database - def createPurl(self,path,isIndexMeta,imagePath="",server_url="",user=""): - - purl = self.generatePurl() - - #erzeuge eine neue purl - while self.exists(purl): - purl = self.gneratePurl() - - - seq= self.purlDB.insert('purls',path=path,purl=purl,is_index_meta=isIndexMeta, image_path=imagePath, - server_url=server_url,validity=1,created_by=user,created_at=web.SQLLiteral("NOW()")) - - - return purl - - #register a new path - - - def updatePurl(self,purl,isIndexMeta,path="",imagePath="",server_url="",user=""): - - update= self.purlDB.update('purls',where="purl = '%s'"%web.sqlparam(purl),path=path,is_index_meta=isIndexMeta, image_path=imagePath, - server_url=server_url,validity=1,last_change_by=user,last_change_at=web.SQLLiteral("NOW()")) - - - return update - - def register(self,path,isIndexMeta,imagePath="",server_url="",user="",update=False): - - - #teste ob es zu dem Pfad schon eine Purl gibt - purl = self.getPurl(path) - if purl!=None: - - if update: - up= self.updatePurl(purl, isIndexMeta, path, imagePath, server_url, user) - if up>0: - return UPDATED,purl - else: - return ERROR,None - - return ALREADY_EXISTS,purl - - - #wenn nicht dann neue erzeugen - else: - purl = self.createPurl(path,isIndexMeta,imagePath=imagePath,user=user,server_url=server_url) - if purl!=None: - return NEW_PURL,purl - - else: - return ERROR,None - - - - -if __name__ == '__main__': - - im = IndexMetaPURLManager() - print im.register("/tmp3/index.meta", True, "", "dwinter") - pass diff -r 733d43b30a82 -r 5f5447b3a082 managePurls/__init__.py diff -r 733d43b30a82 -r 5f5447b3a082 managePurls/manageIndexMetaPURLs.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/managePurls/manageIndexMetaPURLs.py Fri Nov 02 15:37:17 2012 +0100 @@ -0,0 +1,227 @@ +''' +Created on 31.10.2012 + +@author: dwinter +''' + +import web +import random + +ALREADY_EXISTS=0 +NEW_PURL=1 +ERROR=-1 +UPDATED=2 + +PURL_PREFIX="MPIWG:" + +VALID=1 +TEMP_NON_VALID=0 +PERM_NON_VALID=-1 + +class IndexMetaPURLManager: + + # register a new path to htmk + # should start with /mpiwg/online/ oder direct mit /permanent/ oder /archive/ + # return tuple: status, result + + purlDB=None + # DB has fields: + # purl purl + # path url or path to indexMeta + # imagePath dezidierter Pfad auf images. + # is_Index_meta bolean + # created_by + # created_at + # last_change + # validity 1 if it is valid, 0 if temporary invalid, -1 if permanetly invalid + # server_url base_url of server + + + def __init__(self): + self.purlDB = web.database(dbn="postgres", db="purlDB",user="purlUSER",password="3333", host="localhost") + + + + def getPath(self,purl): + urls = self.purlDB.select('"purls"' ,where="purl='%s'"%purl) + if urls is None or len(urls)==0: + return None + else: + return urls[0]['path'] + + def getImagePath(self,purl): + urls = self.purlDB.select('"purls"' ,where="purl='%s'"%purl) + if urls is None or len(urls)==0: + return None + else: + return urls[0]['image_path'] + + def isIndexMeta(self,purl): + urls = self.purlDB.select('"purls"' ,where="purl='%s'"%purl) + if urls is None or len(urls)==0: + return False + else: + return urls[0]['is_index_meta'] + + def getImagePathValidity(self,purl): + urls = self.purlDB.select('"purls"' ,where="purl='%s'"%purl) + if urls is None or len(urls)==0: + return None,-1 + else: + res = urls[0] + return res['image_path'],res['validity'] + + + def getPathValidity(self,purl): + urls = self.purlDB.select('"purls"' ,where="purl='%s'"%purl) + if urls is None or len(urls)==0: + return None,-1 + else: + res = urls[0] + return res['path'],res['validity'] + + #get purl attached tp a path or URL, return None if none. + + #checke if purl exist + def exists(self,purl): + if self.getPath(purl)==None: + return False + return True + + + def getPurl(self,path): + #urls = self.purlDB.select('"purls"',where="path=%s"%web.sqlquote(path.replace("'")) + urls = self.purlDB.query("select * from purls where path=$path",vars={'path':path}) + + if urls is None or len(urls)==0: + return None + else: + return urls[0]['purl'] + + + + def search(self,query): + purls = self.purlDB.query("select purl from purls where path like $path",vars={'path':query}) + if purls is None or len(purls)==0: + return None + else: + return purls + + + def generatePurl(self): + + + driEncode={ 0:'0', + 1:'1', + 2:'2', + 3:'3', + 4:'4', + 5:'5', + 6:'6', + 7:'7', + 8:'8', + 9:'9', + 10:'A', + 11:'B', + 12:'C', + 13:'D', + 14:'E', + 15:'F', + 16:'G', + 17:'H', + 18:'K', + 19:'M', + 20:'N', + 21:'P', + 22:'Q', + 23:'R', + 24:'S', + 25:'T', + 26:'U', + 27:'V', + 28:'W', + 29:'X', + 30:'Y', + 31:'Z' + } + + random.seed() + x=[] + for i in range(7): + x.append(random.randint(0,31)) + + sm=0 + for i in range(7): + sm+=(i+1)*x[i] + + c=sm % 31 + nid="" + for i in range(7): + nid+=driEncode[x[i]] + nid+=driEncode[c] + return PURL_PREFIX+nid + + + + + #generate purl and add it to the database + def createPurl(self,path,isIndexMeta,imagePath="",server_url="",user=""): + + purl = self.generatePurl() + + #erzeuge eine neue purl + while self.exists(purl): + purl = self.gneratePurl() + + + seq= self.purlDB.insert('purls',path=path,purl=purl,is_index_meta=isIndexMeta, image_path=imagePath, + server_url=server_url,validity=1,created_by=user,created_at=web.SQLLiteral("NOW()")) + + + return purl + + #register a new path + + + def updatePurl(self,purl,isIndexMeta,path="",imagePath="",server_url="",user=""): + + update= self.purlDB.update('purls',where="purl = '%s'"%web.sqlparam(purl),path=path,is_index_meta=isIndexMeta, image_path=imagePath, + server_url=server_url,validity=1,last_change_by=user,last_change_at=web.SQLLiteral("NOW()")) + + + return update + + def register(self,path,isIndexMeta,imagePath="",server_url="",user="",update=False): + + + #teste ob es zu dem Pfad schon eine Purl gibt + purl = self.getPurl(path) + if purl!=None: + + if update: + up= self.updatePurl(purl, isIndexMeta, path, imagePath, server_url, user) + if up>0: + return UPDATED,purl + else: + return ERROR,None + + return ALREADY_EXISTS,purl + + + #wenn nicht dann neue erzeugen + else: + purl = self.createPurl(path,isIndexMeta,imagePath=imagePath,user=user,server_url=server_url) + if purl!=None: + return NEW_PURL,purl + + else: + return ERROR,None + + + + +if __name__ == '__main__': + + im = IndexMetaPURLManager() + print im.register("/tmp3/index.meta", True, "", "dwinter") + pass diff -r 733d43b30a82 -r 5f5447b3a082 restService/redirector.py --- a/restService/redirector.py Fri Nov 02 11:34:23 2012 +0100 +++ b/restService/redirector.py Fri Nov 02 15:37:17 2012 +0100 @@ -6,7 +6,7 @@ ''' import web -import manageIndexMetaPURLs +import managePurls.manageIndexMetaPURLs as manageIndexMetaPURLs import logging class redirector: diff -r 733d43b30a82 -r 5f5447b3a082 restService/restService.py --- a/restService/restService.py Fri Nov 02 11:34:23 2012 +0100 +++ b/restService/restService.py Fri Nov 02 15:37:17 2012 +0100 @@ -4,7 +4,7 @@ @author: dwinter ''' import web -import manageIndexMetaPURLs +import managePurls.manageIndexMetaPURLs as manageIndexMetaPURLs from redirector import redirector import logging from searcher import searcher diff -r 733d43b30a82 -r 5f5447b3a082 restService/searcher.py --- a/restService/searcher.py Fri Nov 02 11:34:23 2012 +0100 +++ b/restService/searcher.py Fri Nov 02 15:37:17 2012 +0100 @@ -5,7 +5,7 @@ ''' import web -import manageIndexMetaPURLs +import managePurls.manageIndexMetaPURLs as manageIndexMetaPURLs class searcher: