Annotation of OSAS/OSA_system/OSAS_archiver.py, revision 1.3
1.1 dwinter 1: # Methoden und Klassen fuer den MPIWG Archiver
2:
3: from OFS.Image import Image
4: from OFS.Folder import Folder
5: from OFS.SimpleItem import SimpleItem
6: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
7: from Products.PageTemplates.PageTemplate import PageTemplate
8: from AccessControl import ClassSecurityInfo
9: from Globals import InitializeClass
10: from Globals import Persistent
11: from Acquisition import Implicit
12: from OSAS_show import *
1.3 ! dwinter 13: from OSAS_helpers import *
1.1 dwinter 14:
15: import os.path
16: import os
17: import OSAS_ids
18: import archive #Baustelle
1.3 ! dwinter 19: import time
! 20:
! 21: class OSAS_archiveInbox(SimpleItem,Persistent,Implicit):
! 22: """Inbox"""
! 23:
! 24: meta_type="OSAS_archiveInbox"
! 25: pathes=[]
! 26:
! 27: def __init__(self,id,title):
! 28: """init"""
! 29: self.id=id
! 30: self.title=title
! 31: self.pathes=[]
! 32:
! 33: def addPath(self,path):
! 34: today=time.localtime()
! 35: self.pathes.append([path,today])
! 36:
! 37: def index_html(self):
! 38: """main"""
! 39: pt=PageTemplateFile('Products/OSA_system/OSAS_archiveInboxIndex.zpt').__of__(self)
! 40: return pt()
! 41:
! 42: def manage_AddOSAS_archiveInboxForm(self):
! 43: """interface for adding the OSAS_root"""
! 44: pt=PageTemplateFile('Products/OSA_system/AddOSAS_archiveInbox.zpt').__of__(self)
! 45: return pt()
! 46:
! 47:
! 48: def manage_AddOSAS_archiveInbox(self,id,title="",RESPONSE=None):
! 49: """add the OSAS_root"""
! 50: if title=="":
! 51: title=id
! 52:
! 53: newObj=OSAS_archiveInbox(id, title)
! 54: self._setObject(id,newObj)
! 55: if RESPONSE is not None:
! 56: RESPONSE.redirect('manage_main')
! 57:
! 58:
1.1 dwinter 59:
60: class OSAS_metadataOrganizer(SimpleItem,Persistent,Implicit):
61: """Eingabe von Metadaten"""
62:
63: meta_type="OSAS_metadataOrganizer"
1.3 ! dwinter 64: mediaTypes=["image","video","text","audio","data"]
! 65: acquisitionTypes=["Image-Acquisition"]
! 66: mediaToAcquisition={"image":"Image-Acquisition"}
! 67: metaDataSets={'Image-Acquisition': [('device','opt'),('image-type','opt'),('production-comment','opt')]}
! 68: imgData={'image':[('dpi','req')]}
! 69:
! 70: bibDataSets={'Book':[('author','opt'),('year','opt'),('title','opt'),('series editor','opt'),('series title','opt'),('series volume','opt'),('number of pages','opt'),('city','opt'),('publisher','opt'),('edition','opt'),('number of volumes','opt'),('translator','opt'),('ISBN ISSN','opt')],
! 71: 'Journal Article':[('author','opt'),('year','opt'),('title','opt'),('journal','opt'),('volume','opt'),('issue','opt'),('pages','opt'),('alternate journal','opt'),('call number','opt')],
! 72: 'Manuscript':[('author','opt'),('year','opt'),('title','opt'),('location','opt'),('signature','opt'),('pages','opt'),('editorial remarks','opt'),('description','opt'),('keywords','opt')]}
! 73:
! 74:
! 75: referenceTypes=['Book','Journal Article','Manuscript']
1.1 dwinter 76:
77: def __init__(self,id,title):
78: """init"""
79: self.id=id
80: self.title=title
81: #self.acquisitionData=['provider_name','provider_address','provider_contact','provider_url','date','description']
82:
83: def addAcquisition(self,path):
84: """Hinzufügen von Acquisition Daten"""
85: self.REQUEST.SESSION['path']=path
86: pt=PageTemplateFile('Products/OSA_system/inputAcquisitionData.zpt').__of__(self)
87: return pt()
88:
1.3 ! dwinter 89: def writeAcquisitionMetadata(self,date,path,media_type,producer="mpiwg",description=""):
1.1 dwinter 90: """Schreibe Acquisiondata in index.meta"""
91:
1.3 ! dwinter 92:
! 93: #schreibe in index.meta
! 94: subnodes={}
! 95: subnodes['media-type']=media_type
! 96: changeNodesInIndexMeta(path,"",subnodes)
! 97:
! 98: subnodes={}
! 99: subnodes['date']=date
! 100: subnodes['description']=description
! 101:
! 102: changeNodesInIndexMeta(path,"acquisition",subnodes)
! 103: #print "HI"
! 104:
! 105: subnodes={}
! 106: subnodes['provider-id']=producer
! 107: subnodes['url']=getattr(self.producerFolder,producer).url
! 108: subnodes['contact']=getattr(self.producerFolder,producer).contact
! 109: subnodes['address']=getattr(self.producerFolder,producer).address
! 110:
! 111: changeNodesInIndexMeta(path,"provider",subnodes,parent="acquisition")
! 112:
! 113:
! 114: self.metaDataSet=self.metaDataSets[self.mediaToAcquisition[media_type]]
! 115: self.media_type=self.mediaToAcquisition[media_type]
! 116:
! 117: pt=PageTemplateFile('Products/OSA_system/inputDocumentMetadata.zpt').__of__(self)
! 118: return pt()
! 119:
! 120:
! 121: def writeDocumentMetadata(self,referenceType):
! 122:
! 123: """write document metadata"""
! 124: form=self.REQUEST.form
! 125: #schreibe in index.meta
! 126: self.bibDataSet=self.bibDataSets[form['referenceType']]
! 127: self.bibdata_type=form['referenceType']
! 128:
! 129: subnodes={}
! 130: subnodes['device']=form['device']
! 131: subnodes['image-type']=form['image-type']
! 132: subnodes['production-comment']=form['production-comment']
! 133: changeNodesInIndexMeta(self.REQUEST.SESSION['path'],"image-acquisition",subnodes)
! 134:
! 135: subnodes={}
! 136: subnodes['dpi']=form['dpi']
! 137:
! 138:
! 139: changeNodesInIndexMeta(self.REQUEST.SESSION['path'],"img",subnodes)
! 140:
! 141:
! 142: pt=PageTemplateFile('Products/OSA_system/inputBiblioMetadata.zpt').__of__(self)
! 143: return pt()
! 144:
! 145: def writeBiblioMetadata(self,bibdata_type,RESPONSE=None):
! 146: """Write all"""
! 147: #to do write metadata
! 148:
! 149: subnodes={}
! 150: form=self.REQUEST.form
! 151: #for key in form.keys():
! 152: # subnodes[key]=form['device']
! 153: subnodes=form
! 154: changeNodesInIndexMeta(self.REQUEST.SESSION['path'],"bib",subnodes,nodeAttributes={'type':bibdata_type},parent="meta")
! 155: self.inbox.addPath(self.REQUEST.SESSION['path'])
! 156: RESPONSE.redirect(self.REQUEST['URL2'])
! 157:
! 158:
! 159:
! 160:
! 161:
! 162:
! 163:
1.1 dwinter 164: def manage_AddOSAS_metadataOrganizerForm(self):
165: """interface for adding the OSAS_root"""
166: pt=PageTemplateFile('Products/OSA_system/AddOSAS_metadataOrganizer.zpt').__of__(self)
167: return pt()
168:
169:
170: def manage_AddOSAS_metadataOrganizer(self,id,title="",RESPONSE=None):
171: """add the OSAS_root"""
172: if title=="":
173: title=id
174:
175: newObj=OSAS_metadataOrganizer(id, title)
176: self._setObject(id,newObj)
177: if RESPONSE is not None:
178: RESPONSE.redirect('manage_main')
179:
180:
181: class OSAS_processViewer(SimpleItem,Persistent,Implicit):
182: """Process viewer for archiving"""
183:
184: meta_type="OSAS_processViewer"
185:
186: def __init__(self, id, title):
187: """init"""
188: self.id=id
189: self.title=title
190:
191: def index_html(self):
192: """main page"""
193: pt=PageTemplateFile('Products/OSA_system/processViewerIndex.zpt').__of__(self)
194: return pt()
195:
196: def storeFile(self,something):
197: """store info in session"""
198: self.REQUEST.SESSION['something']=something
199: return 1
200:
201: def getFile(self):
202: """get info from session"""
203: return self.REQUEST.SESSION['something']
204:
205: def getoverview(self,path):
206: """get overview"""
207: return archive.overview(path)
208:
209: def storeerror(self,ret,path,context,i):
210: """store an error"""
211: session=context.REQUEST.SESSION
212: session['error%i'%i]=ret
213: session['path%i'%i]=path
214:
215: return 'error?number=%i'%i
216:
217: def view(self):
218: """view page"""
219: pt=PageTemplateFile('Products/OSA_system/processViewerView.zpt').__of__(self)
220: return pt()
221:
222: def manage_AddOSAS_processViewerForm(self):
223: """interface for adding the OSAS_processViewer"""
224: pt=PageTemplateFile('Products/OSA_system/AddOSAS_processViewer.zpt').__of__(self)
225: return pt()
226:
227:
228: def manage_AddOSAS_processViewer(self,id,title="",RESPONSE=None):
229: """add the OSAS_processViewer"""
230: if title=="":
231: title=id
232:
233: newObj=OSAS_processViewer(id, title)
234: self._setObject(id,newObj)
235: if RESPONSE is not None:
236: RESPONSE.redirect('manage_main')
237:
238:
239:
240: class OSAS_archiver(Folder, Persistent,Implicit):
241: """Hauptklasse fuer das Archiv"""
242:
243: meta_type="OSAS_archiver"
244:
245: # to be deleted later
246: #startPath="/mpiwg"
247: ## methoden aus dem alten archive.py
248:
1.3 ! dwinter 249:
! 250:
1.1 dwinter 251: def archiver(self,path):
252: """archive the documents in path"""
253: tmp=archive.archive(path,self.REQUEST.SESSION)
254: pt=PageTemplateFile('Products/OSA_system/archiveStatus.zpt').__of__(self)
255: return pt()
256:
257:
258:
259:
260: def metachecker(self,path):
261: """check the metadata the documents in path"""
262: self.REQUEST.SESSION['path']=self.REQUEST['path']
263: return archive.metacheck(path)
264:
265: ## methods from OSAS_show
266: def changeName(self,name):
267: return changeName(name)
268:
269: def hasMetafile(self,path):
270: return hasMetafile(path)
271:
272: def getMetafile(self,path):
273: return getMetafile(path)
274:
275: def toggle_view(self,path,file):
276: """Oeffnen bzw. schließen der Subfolders"""
277: self.tree(path).toggle(path,file)
278: return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+"?path="+path)
279:
280:
281:
282: def isdigilib2(self,path):
283: """check if digilib"""
284: return isdigilib2(path)
285:
286: def path_to_link_view(self,path):
287: """generates navigation bar for viewfiles"""
288: return path_to_link_view(self.REQUEST['URL'],path)
289:
290:
291: def tree(self,start):
292: """get the filetree"""
293: k=browse(start)
294: return k
295:
296: def getfilesystem2(self,start,reload=0):
297: """load filesystem"""
298:
299: k=filesystem2(start,1)
300: return k
301:
302: def getfilesystem(self,start,reload=0):
303: """load filesystem"""
304:
305: k=filesystem(start,1)
306: return k
307:
308:
309: ##init
310: def __init__(self, id, title,startPath):
311: """init"""
312: self.id=id
313: self.title=title
314: self.startPath=startPath
315:
316: def archiver_html(self):
317: """archiver"""
318: pt=PageTemplateFile('Products/OSA_system/OSAS_Archiver.zpt').__of__(self)
319: return pt()
320:
321: def index_html(self):
322: """main page"""
323: pt=PageTemplateFile('Products/OSA_system/archiverIndex.zpt').__of__(self)
324: return pt()
1.3 ! dwinter 325:
! 326: def getDate(self):
! 327: """date"""
! 328: return time.strftime("%Y-%m-%d",time.localtime())
1.1 dwinter 329:
330: def newFolders_html(self):
331: """main page"""
332: pt=PageTemplateFile('Products/OSA_system/newFolders.zpt').__of__(self)
333: return pt()
334:
335: def getProducers(self):
336: """Ausgabe der registrierten Benutzer"""
337: ret=[]
1.3 ! dwinter 338: #x=7
! 339: id=self.producerFolder.getId()
1.1 dwinter 340: for list in self.producerFolder.__dict__:
341: obj=getattr(self.producerFolder,list)
342: if (hasattr(obj,"meta_type")):
343: if (obj.meta_type=="OSAS_producer"):
344: ret.append(obj.getId())
345: return ret
346:
347: def getProducer(self,id):
348: """Gebe ProducerObjekt zurück"""
349: obj=getattr(self.aq_parent.producerFolder,id)
350: return obj
351:
352:
353:
354: def createFoldersForm(self,producer,number):
355: """Erzeuge Folder im producer Verzeichnis mit ids"""
356: self.REQUEST.SESSION['producer']=producer
357: self.REQUEST.SESSION['ids']=self.idGenerator.giveIdsOut(number)
358: pt=PageTemplateFile('Products/OSA_system/createFoldersForm.zpt').__of__(self)
359: return pt()
360:
361: def createFolders(self,folderList,producer):
362: """Erzeug die entsprechenden Folder"""
363: for folder in folderList:
364: os.mkdir(self.startPath+"/"+producer+"/"+folder)
365: self.REQUEST.SESSION['folderList']=folderList
366: pt=PageTemplateFile('Products/OSA_system/createFolders.zpt').__of__(self)
367: return pt()
368:
369: def archiveSelected(self):
370: """Archiviere ausgewaehlte files"""
371: pt=PageTemplateFile('Products/OSA_system/archiveSelected.zpt').__of__(self)
372: return pt()
373:
374: def enterAcquisitionMetadata(self):
375: """Erstelle Metadaten fuer Acquisition"""
376:
377: def enterPreliminaryBibMeta(self):
378: """Erstelle Metadaten fuer Bibliography"""
379:
380: def showFilesForArchiving(self):
381: """Anzeige der noch zu archivieren Files"""
382:
383:
384:
385:
386:
387: def manage_AddOSAS_archiverForm(self):
388: """interface for adding the OSAS_root"""
389: pt=PageTemplateFile('Products/OSA_system/AddOSAS_archiver.zpt').__of__(self)
390: return pt()
391:
392:
393: def manage_AddOSAS_archiver(self,id,startPath,title="",RESPONSE=None):
394: """add the OSAS_root"""
395: if title=="":
396: title=id
397:
398: newObj=OSAS_archiver(id, title,startPath)
399: self._setObject(id,newObj)
400: if RESPONSE is not None:
401: RESPONSE.redirect('manage_main')
402:
403:
1.3 ! dwinter 404: class OSAS_producer(SimpleItem,Persistent,Implicit):
1.2 dwinter 405: """Klasse fuer Produzenteninformationen
406: Metadaten nach V1.1.1"""
1.1 dwinter 407:
408: meta_type="OSAS_producer"
409:
1.2 dwinter 410: def __init__(self,shortName,fullName,address="",url="",contact=""):
1.1 dwinter 411:
412: self.id=shortName
413: self.title=fullName
1.2 dwinter 414: self.address=address
415: self.url=url
416: self.contact=contact
417:
1.3 ! dwinter 418: manage_options = SimpleItem.manage_options+(
1.2 dwinter 419: {'label':'Main Config','action':'changeOSAS_producerForm'},
420: )
421:
422: def changeOSAS_producerForm(self):
423: """change"""
424: pt=PageTemplateFile('Products/OSA_system/ChangeOSAS_producer.zpt').__of__(self)
425: return pt()
1.3 ! dwinter 426:
! 427: def changeOSAS_producer(self,title,address,contact="",url=""):
! 428: """change"""
! 429: self.title=fullName
! 430: self.address=address
! 431: self.url=url
! 432: self.contact=contact
1.1 dwinter 433:
434: def manage_AddOSAS_producerForm(self):
435: """interface for adding the OSAS_root"""
436: pt=PageTemplateFile('Products/OSA_system/AddOSAS_producer.zpt').__of__(self)
437: return pt()
438:
439:
1.2 dwinter 440: def manage_AddOSAS_producer(self,id,title="",contact="",address="",url="",RESPONSE=None):
1.1 dwinter 441: """add the OSAS_root"""
442: if title=="":
443: title=id
444:
1.2 dwinter 445: newObj=OSAS_producer(id, title,address,contact,url)
1.1 dwinter 446: self._setObject(id,newObj)
447: if RESPONSE is not None:
448: RESPONSE.redirect('manage_main')
449:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>