comparison harvestToPurl.py @ 36:be8640c08d99

Updatedri in harbestToPUrl ge?ndert. jetzt werden gegebenenfalls dris aus den index.meta gelesen und in die db geschrieben, falls sie noch nicht existieren. ausserdem wird in den daten isdri=TRUE gesetzt, wenn es ich bei der PURL um eine handelt die auf ein DRI in den index.meta verweist.
author dwinter
date Mon, 03 Mar 2014 17:32:06 +0100
parents 1b2d74f94ca8
children 6a0873a913c5
comparison
equal deleted inserted replaced
35:d3ecbfd21e06 36:be8640c08d99
1 # -*- coding: utf-8 -*-
1 ''' 2 '''
3
2 Created on 31.10.2012 4 Created on 31.10.2012
3 5
4 @author: dwinter 6 @author: dwinter
7
8 wesentlich hier ist: harvestIndexMeta
5 ''' 9 '''
6 10
11
12
7 import managePurls.manageIndexMetaPURLs as manageIndexMetaPURLs 13 import managePurls.manageIndexMetaPURLs as manageIndexMetaPURLs
8 14 import addDriToIndexMeta
9 15
10 16
11 import os 17 import os
12 from os.path import join, getsize 18 from os.path import join, getsize
13 import sys 19 import sys
14 import re 20 import re
15 from lxml import etree 21 from lxml import etree
16 22
17 def harvestIndexMeta(path,user,delpath="",replacepath="", update=False): 23 def harvestIndexMeta(path,user,delpath="",replacepath="", update=False):
24 """
25 Sucht in path und allen unterordnern nach index.meta dateien und schaut dann nach ob es dort schon ein index meta gibt. Wenn ja wird geschaut, ob die
26 dort enthaltenenn dris mit denen Übereinstimmen, die in der Datenbank gespeichert sind.
18 27
28 delpath ist ein optionaler Parameter, der angibt wird welcher Teil des Pfades in pfad aus dem Pfad zur Überprüfung gelöscht werden soll, d.h.
29 angenommen path="/mpiwg/online/permanent" und delpath="/mpiwg/online" dann wird in der Datenbank nach Pfaden gesucht die mit /permanent beginnen.
30
31 Ist replacepath gesetzt wird der mit delpath geloeschte Teil durch replacepath ersetzt, dh.h
32 path="/Volumes/online_permanent/library" und delpath="/Volumes/online_permanent", replacepath="/permanent" ann wird in der Datenbank nach Pfaden gesucht die mit /permanent beginnen.
33
34
35 Falls es keine DRI gibt, wird eine PURL in der Datenbank erzeugt. Diese wird NICHT in den index.meta gespeichert, dazu muss ein anderes Script "addDriToIndexMeta" aufgerufen werden!
36
37 Falls es eine gibt und das update Flag gesetzt ist, wird die Dri aus den Index.meta in die Datenbank zu dem Pfad geschrieben.
38 """
19 md = manageIndexMetaPURLs.IndexMetaPURLManager() 39 md = manageIndexMetaPURLs.IndexMetaPURLManager()
20 40
21 for root, dirs, files in os.walk(path): 41 for root, dirs, files in os.walk(path):
22 42
23 43
24 for name in files: 44 for name in files:
25 if name.endswith(".meta"): 45 if name.endswith(".meta"):
26 fl=join(root, name) 46 fl=join(root, name)
27 47
48
49 driIndexMeta=addDriToIndexMeta.getDRIfromIndexMeta(fl)
50
28 imagePath=createImagePath(fl,root) 51 imagePath=createImagePath(fl,root)
52
29 imagePath=re.sub("^"+delpath,replacepath,imagePath) 53 imagePath=re.sub("^"+delpath,replacepath,imagePath)
30 54
31 fl=re.sub("^"+delpath,replacepath,fl) #loesche den teil vom path der mir delpath beginnt 55 fl=re.sub("^"+delpath,replacepath,fl) #loesche den teil vom path der mir delpath beginnt
32 56
33 val,purl = md.register(fl, True, user=user,imagePath=imagePath,update=update) 57
58
59 val,purl = md.register(fl, True, user=user,imagePath=imagePath,driIndexMeta=driIndexMeta,update=update)
34 try: 60 try:
35 if val==manageIndexMetaPURLs.ALREADY_EXISTS: 61 if val==manageIndexMetaPURLs.ALREADY_EXISTS:
36 print "found %s -> %s"%(fl,purl) 62 print "found %s -> %s"%(fl,purl)
37 63
38 elif val==manageIndexMetaPURLs.UPDATED: 64 elif val==manageIndexMetaPURLs.UPDATED: