From e2b5359d9a08402567c8f8deeb7524784d12db79 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Tue, 26 Apr 2011 10:11:44 +0200 Subject: [PATCH] Minor cleanup and improvements with first check-in to Git. - Improved German language standard loops site. - Provide test files for working with MS office document properties. - Add basic .gitignore file. --- .gitignore | 1 + data/loops_std_de.dmp | 103 ++++++++++++++------ integrator/README.txt | 4 +- integrator/testdata/office/example.docx | Bin 0 -> 17409 bytes integrator/testdata/office/example.docx.sav | Bin 0 -> 20337 bytes 5 files changed, 78 insertions(+), 30 deletions(-) create mode 100644 .gitignore create mode 100644 integrator/testdata/office/example.docx create mode 100644 integrator/testdata/office/example.docx.sav diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0d20b64 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.pyc diff --git a/data/loops_std_de.dmp b/data/loops_std_de.dmp index 89f6176..1b511a0 100644 --- a/data/loops_std_de.dmp +++ b/data/loops_std_de.dmp @@ -1,31 +1,78 @@ -type(u'classifier', u'Classifier', options=u'', typeInterface='loops.classifier.interfaces.IClassifier', viewName=u'classifier.html') -type(u'documenttype', u'Document Type', options=u'', typeInterface=u'', viewName=u'') -type(u'domain', u'Domain', options=u'', typeInterface=u'', viewName=u'') -type(u'extcollection', u'External Collection', options=u'', typeInterface='loops.integrator.interfaces.IExternalCollection', viewName=u'collection.html') -type(u'extfile', u'Externe Datei', options=u'', typeInterface='loops.interfaces.IExternalFile', viewName=u'') -type(u'file', u'Datei', options=u'', typeInterface='loops.interfaces.IFile', viewName=u'') -type(u'glossaryitem', u'Glossareintrag', options=u'', typeInterface='loops.knowledge.interfaces.ITopic', viewName=u'glossaryitem.html') -type(u'note', u'Notiz', options=u'', typeInterface='loops.interfaces.INote', viewName='note.html') -type(u'person', u'Person', options=u'', typeInterface='loops.knowledge.interfaces.IPerson', viewName=u'') -type(u'predicate', u'Prädikat', options=u'', typeInterface=u'', viewName=u'') -type(u'process', u'Prozess', options=u'', typeInterface=u'', viewName=u'') -type(u'query', u'Abfrage', options=u'', typeInterface='loops.expert.concept.IQueryConcept', viewName=u'') -type(u'textdocument', u'Text', options=u'', typeInterface='loops.interfaces.ITextDocument', viewName=u'') -type(u'topic', u'Thema', options=u'', typeInterface='loops.knowledge.interfaces.ITopic', viewName=u'') -type(u'type', u'Typ', options=u'', typeInterface='loops.interfaces.ITypeConcept', viewName=u'') -concept(u'hasType', u'has Type', u'predicate') -concept(u'ispartof', u'is Part of', u'predicate') -concept(u'ownedby', u'owned by', u'predicate') -concept(u'glossary', u'Glossar', u'query', options=u'', viewName=u'glossary.html') -concept(u'search', u'Suche', u'query', options=u'', viewName=u'search') -concept(u'standard', u'subobject', u'predicate') -concept(u'general', u'Allgemein', u'domain') -concept(u'system', u'System', u'domain') +type(u'query', u'Abfrage', options=u'', typeInterface='loops.expert.concept.IQueryConcept', viewName=u'')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:03', created='2011-04-25T17:01')] +type(u'task', u'Aufgabe', options=u'', typeInterface='loops.knowledge.interfaces.ITask', viewName=u'')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:02', created='2011-04-25T17:01')] +type(u'domain', u'Bereich', options=u'', typeInterface=u'', viewName=u'')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:02', created='2011-04-25T17:01')] +type(u'classifier', u'Classifier', options=u'', typeInterface='loops.classifier.interfaces.IClassifier', viewName=u'classifier.html')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +type(u'documenttype', u'Document Type', options=u'', typeInterface=u'', viewName=u'')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +type(u'extcollection', u'External Collection', options=u'', typeInterface='loops.integrator.interfaces.IExternalCollection', viewName=u'collection.html')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +type(u'glossaryitem', u'Glossareintrag', options=u'', typeInterface='loops.knowledge.interfaces.ITopic', viewName=u'glossaryitem.html')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +type(u'media_asset', u'Media Asset', options=u'storage:varsubdir\nstorage_parameters:extfiles/sites_prg\nasset_transform.minithumb: size(105)\nasset_transform.small: size(230)\nasset_transform.medium: size(480)', typeInterface='loops.media.interfaces.IMediaAsset', viewName=u'image_medium.html')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:10', created='2011-04-25T17:08')] +type(u'note', u'Note', options=u'', typeInterface='loops.interfaces.INote', viewName='note.html')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +type(u'person', u'Person', options=u'', typeInterface='loops.knowledge.interfaces.IPerson', viewName=u'')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +type(u'predicate', u'Predicate', options=u'', typeInterface=u'', viewName=u'')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +type(u'event', u'Termin', options=u'', typeInterface='loops.organize.interfaces.ITask', viewName=u'task.html')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:12', created='2011-04-25T17:11')] +type(u'textdocument', u'Text', options=u'', typeInterface='loops.interfaces.ITextDocument', viewName=u'')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +type(u'topic', u'Thema', options=u'', typeInterface='loops.knowledge.interfaces.ITopic', viewName=u'')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:03', created='2011-04-25T17:01')] +type(u'type', u'Type', options=u'', typeInterface='loops.interfaces.ITypeConcept', viewName=u'')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +concept(u'depends', u'depends', u'predicate')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +concept(u'follows', u'follows', u'predicate')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +concept(u'general', u'Allgemein', u'domain')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +concept(u'glossary', u'Glossar', u'query', options=u'', viewName=u'glossary.html')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +concept(u'hasType', u'has Type', u'predicate')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +concept(u'ispartof', u'is Part of', u'predicate')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +concept(u'knows', u'knows', u'predicate')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +concept(u'ownedby', u'owned by', u'predicate')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +concept(u'personal_info', u'Pers\xf6nliche Information', u'query', options=u'', viewName=u'personal_info.html')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:07', created='2011-04-25T17:07')] +concept(u'prg', u'PRG', u'domain')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:02', created='2011-04-25T17:02')] +concept(u'provides', u'provides', u'predicate')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +concept(u'querytarget', u'is Query Target', u'predicate')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +concept(u'requires', u'requires', u'predicate')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +concept(u'search', u'Suche', u'query', options=u'', viewName=u'search')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +concept(u'standard', u'subobject', u'predicate')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +concept(u'system', u'System', u'domain')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] child(u'general', u'documenttype', u'standard') +child(u'general', u'event', u'standard') child(u'system', u'classifier', u'standard') child(u'system', u'extcollection', u'standard') -node(u'home', u'Startseite', '', 'menu', body=u'Willkommen\n==========') -node(u'participants', u'Teilnehmer', u'home', 'page', body=u'Teilnehmer\n==========', target=u'concepts/person', viewName=u'listchildren') -node(u'topics', u'Themen', u'home', 'page', body=u'Themen\n======', target=u'concepts/topic', viewName=u'listchildren') -node(u'glossary', u'Glossar', u'home', 'page', target=u'concepts/glossary') -node(u'search', u'Suche', u'home', 'page', target=u'concepts/search') +child(u'system', u'media_asset', u'standard') +child(u'system', u'personal_info', u'standard') +node(u'home', u'Startseite', '', 'menu', body=u'Willkommen\n==========')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +node(u'participants', u'Teilnehmer', u'home', 'page', body=u'Teilnehmer\n==========', target=u'concepts/person', viewName=u'listchildren')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +node(u'topics', u'Themen', u'home', 'page', body=u'Themen\n======', target=u'concepts/topic', viewName=u'listchildren')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +node(u'glossary', u'Glossar', u'home', 'page', target=u'concepts/glossary')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] +node(u'search', u'Suche', u'home', 'page', target=u'concepts/search')[ + annotations(creators=(u'loops.admin',), modified='2011-04-25T17:01', created='2011-04-25T17:01')] diff --git a/integrator/README.txt b/integrator/README.txt index c238ada..2b9c67d 100644 --- a/integrator/README.txt +++ b/integrator/README.txt @@ -225,7 +225,7 @@ Extracting Document Properties from MS Office Files >>> fn = os.path.join(path, 'example.docx') >>> shutil.copy(fn + '.sav', fn) >>> os.path.getsize(fn) - 195808L + 20337L >>> officeFile = addAndConfigureObject(resources, Resource, 'test.docx', ... title=u'Example Word File', resourceType=tOfficeFile, @@ -235,7 +235,7 @@ Extracting Document Properties from MS Office Files >>> content = aOfficeFile.data >>> len(content) - 192925 + 17409 Fin de partie diff --git a/integrator/testdata/office/example.docx b/integrator/testdata/office/example.docx new file mode 100644 index 0000000000000000000000000000000000000000..37b5a5be8cdad7de6012a2792257785b6913377d GIT binary patch literal 17409 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 E0#=j#zW@LL literal 0 HcmV?d00001 diff --git a/integrator/testdata/office/example.docx.sav b/integrator/testdata/office/example.docx.sav new file mode 100644 index 0000000000000000000000000000000000000000..0ab00cb111784f95f7cfefdc8ae46805a7a871be GIT binary patch literal 20337 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 Uh%$hHFaUpkfE3EA