Changeset 1322

Show
Ignore:
Timestamp:
10/13/08 08:16:43
Author:
koval
Message:

cleaning in manifest sections

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • quintagroup.transmogrifier/trunk/quintagroup/transmogrifier/configure.zcml

    r1321 r1322  
    2020 
    2121    <utility 
    22         component=".manifest.ManifestSection" 
    23         name="quintagroup.transmogrifier.manifest" 
     22        component=".manifest.ManifestExporterSection" 
     23        name="quintagroup.transmogrifier.manifestexporter" 
     24        /> 
     25 
     26    <utility 
     27        component=".manifest.ManifestImporterSection" 
     28        name="quintagroup.transmogrifier.manifestimporter" 
    2429        /> 
    2530 
     
    7075        component=".reader.ReaderSection" 
    7176        name="quintagroup.transmogrifier.reader" 
    72         /> 
    73  
    74     <utility 
    75         component=".manifest.ManifestImportSection" 
    76         name="quintagroup.transmogrifier.manifestimport" 
    7777        /> 
    7878 
  • quintagroup.transmogrifier/trunk/quintagroup/transmogrifier/export.cfg

    r1321 r1322  
    22pipeline = 
    33    sitewalker 
    4     manifest 
     4    manifestexporter 
    55    marshaller 
    66    propertiesexporter 
     
    1313blueprint = quintagroup.transmogrifier.sitewalker 
    1414 
    15 [manifest
    16 blueprint = quintagroup.transmogrifier.manifest 
     15[manifestexporter
     16blueprint = quintagroup.transmogrifier.manifestexporter 
    1717 
    1818[marshaller] 
  • quintagroup.transmogrifier/trunk/quintagroup/transmogrifier/import.cfg

    r1321 r1322  
    22pipeline = 
    33    reader 
    4     manifestimport 
     4    manifestimporter 
    55    constructor 
    66    datacorrector 
     
    1818.comments.xml = comments 
    1919 
    20 [manifestimport
    21 blueprint = quintagroup.transmogrifier.manifestimport 
     20[manifestimporter
     21blueprint = quintagroup.transmogrifier.manifestimporter 
    2222 
    2323[constructor] 
  • quintagroup.transmogrifier/trunk/quintagroup/transmogrifier/manifest.py

    r1314 r1322  
    77from collective.transmogrifier.utils import defaultMatcher 
    88 
    9 class ManifestSection(object): 
     9class ManifestExporterSection(object): 
    1010    classProvides(ISectionBlueprint) 
    1111    implements(ISection) 
     
    1616 
    1717        self.entrieskey = defaultMatcher(options, 'entries-key', name, 'entries') 
     18        self.fileskey = options.get('files-key', '_files').strip() 
    1819 
    1920    def __iter__(self): 
     
    2728            if manifest: 
    2829                files = item.setdefault('_files', {}) 
    29                 item['_files']['manifest'] = { 
     30                item[self.fileskey]['manifest'] = { 
    3031                    'name': '.objects.xml', 
    3132                    'data': manifest, 
     
    3435            yield item 
    3536 
    36     def createManifest(self, data): 
    37         if not data
     37    def createManifest(self, entries): 
     38        if not entries
    3839            return None 
    3940        manifest = '<?xml version="1.0" ?>\n<manifest>\n' 
    40         for obj_id, obj_type in data
     41        for obj_id, obj_type in entries
    4142            manifest += '  <record type="%s">%s</record>\n' % (obj_type, obj_id) 
    4243        manifest += "</manifest>\n" 
    4344        return manifest 
    4445 
    45 class ManifestImportSection(object): 
     46class ManifestImporterSection(object): 
    4647    classProvides(ISectionBlueprint) 
    4748    implements(ISection) 
  • quintagroup.transmogrifier/trunk/quintagroup/transmogrifier/manifest.txt

    r1321 r1322  
    1 Manifest section 
    2 ================ 
     1Manifest exporter and importer sections 
     2======================================= 
    33 
    4 A manifest section is used to create listing in XML format of all objects 
    5 contained in some folder. Manifest section blueprint name is  
    6 ``quintagroup.transmogrifier.manifest``. 
     4A manifest exporter and importer sections are used to generate and parse 
     5manifest files - listings of objects contained in some folder in XML format. 
     6These listings are needed to set portal types for pipeline items and also act 
     7as filter on them - items not listed in manifest will be removed. The manifest 
     8exporter section blueprint name is 
     9``quintagroup.transmogrifier.manifestsexporter`` and importer section blueprint 
     10name is ``quintagroup.transmogrifier.manifestimporter``. 
     11 
     12Both sections has ``files-key`` option that gives key in item where XML data 
     13will be or is stored (default is ``_files``). Exporter section has 
     14``entries-key`` option, which specifies key in item where list of  
     15(object_id, portal_type) pairs that represents folder contents is stored  
     16(default is ``_entries``). Importer section has ``path-key`` option which 
     17specifies key in item where path to object is stored (default is ``_path``). 
    718 
    819>>> manifest = """ 
     
    1021... pipeline = 
    1122...     manifestsource 
    12 ...     manifest 
     23...     manifestexporter 
     24...     manifestimporter 
    1325...     printer 
     26...     dataprinter 
    1427...  
    1528... [manifestsource] 
    1629... blueprint = quintagroup.transmogrifier.tests.manifestsource 
    1730...  
    18 ... [manifest
    19 ... blueprint = quintagroup.transmogrifier.manifest 
     31... [manifestexporter
     32... blueprint = quintagroup.transmogrifier.manifestexporter 
    2033...  
     34... [manifestimporter] 
     35... blueprint = quintagroup.transmogrifier.manifestimporter 
     36... 
    2137... [printer] 
    2238... blueprint = collective.transmogrifier.sections.tests.pprinter 
     39...  
     40... [dataprinter] 
     41... blueprint = quintagroup.transmogrifier.tests.dataprinter 
     42... print =  
     43...     _files 
     44...     manifest 
     45...     data 
    2346... """ 
    2447>>> registerConfig(u'quintagroup.transmogrifier.tests.manifest', 
    2548...                manifest) 
    26 >>> transmogrifier(u'quintagroup.transmogrifier.tests.manifest') # doctest: +ELLIPSIS 
    27 {'_entries': (('document1', 'Document'), 
    28               ('folder1', 'Folder'), 
    29               ('document3', 'Document')), 
     49>>> transmogrifier(u'quintagroup.transmogrifier.tests.manifest') # doctest: +ELLIPSIS, +REPORT_NDIFF 
     50{'_entries': (('news', 'Folder'), 
     51              ('events', 'Folder'), 
     52              ('front-page', 'Document')), 
    3053 '_files': {'manifest': {'data': ... 
    31                          'name': '.objects.xml'}}} 
    32 {} 
    33 >>> print data 
     54                         'name': '.objects.xml'}}, 
     55 '_path': ''} 
    3456<?xml version="1.0" ?> 
    3557<manifest> 
    36   <record type="Document">document1</record> 
    37   <record type="Folder">folder1</record> 
    38   <record type="Document">document3</record> 
     58  <record type="Folder">news</record> 
     59  <record type="Folder">events</record> 
     60  <record type="Document">front-page</record> 
    3961</manifest> 
    4062<BLANKLINE> 
     63{'_entries': (('aggregator', 'Topic'), ('not-existing', 'SomeType')), 
     64 '_files': {'manifest': {'data': ... 
     65                         'name': '.objects.xml'}}, 
     66 '_path': 'news', 
     67 '_type': 'Folder'} 
     68<?xml version="1.0" ?> 
     69<manifest> 
     70  <record type="Topic">aggregator</record> 
     71  <record type="SomeType">not-existing</record> 
     72</manifest> 
     73<BLANKLINE> 
     74{'_type': 'Topic', '_path': 'news/aggregator'} 
     75{'_type': 'Folder', '_path': 'events'} 
     76{'_type': 'Document', '_path': 'front-page'} 
  • quintagroup.transmogrifier/trunk/quintagroup/transmogrifier/propertymanager.txt

    r1318 r1322  
    1313properties. 
    1414 
    15 Both sections has ``path-key`` option which specify key in item where path to 
     15Both sections has ``path-key`` option which specifies key in item where path to 
    1616object is stored (``_path`` is default) and ``files-key`` option that gives 
    1717key where XML data will be or is stored. Exporter section also has ``exclude`` 
  • quintagroup.transmogrifier/trunk/quintagroup/transmogrifier/tests.py

    r1321 r1322  
    117117    sectionsSetUp(test) 
    118118 
    119     item = {'_entries' : ( 
    120         ('document1', 'Document'), 
    121         ('folder1', 'Folder'), 
    122         ('document3', 'Document'),) 
    123     } 
     119    root = dict( 
     120        _path='', 
     121        _entries=( 
     122            ('news', 'Folder'), 
     123            ('events', 'Folder'), 
     124            ('front-page', 'Document') 
     125        ) 
     126    ) 
     127 
     128    news = dict( 
     129        _path='news', 
     130        _entries=( 
     131            ('aggregator', 'Topic'), 
     132            ('not-existing', 'SomeType') 
     133        ) 
     134    ) 
     135 
     136    aggregator = dict( 
     137        _path='news/aggregator', 
     138    ) 
     139 
     140    events = dict( 
     141        _path='events' 
     142    ) 
     143 
     144    front_page = dict( 
     145        _path='front-page', 
     146    ) 
     147 
     148    members = dict( 
     149        _path='Memebers' 
     150    ) 
    124151 
    125152    class ManifestSource(SampleSource): 
     
    129156        def __init__(self, *args, **kw): 
    130157            super(ManifestSource, self).__init__(*args, **kw) 
    131             self.sample = (item, dict()
     158            self.sample = (root, dict(), news, aggregator, events, front_page, members
    132159 
    133160    provideUtility(ManifestSource, 
    134161        name=u'quintagroup.transmogrifier.tests.manifestsource') 
    135  
    136     from quintagroup.transmogrifier.manifest import ManifestSection 
    137     section = ManifestSection(test.globs['transmogrifier'],  
    138         'manifest', {'blueprint': ''}, iter(())) 
    139     data = section.createManifest(item['_entries']) 
    140     test.globs['data'] = data 
    141162 
    142163def marshallSetUp(test): 
     
    576597    context.SnapshotImportContext = type('Snapshot', (MockImportContext,), 
    577598        {'listDirectory': lambda self, path: []}) 
    578  
    579 def manifestImportSetUp(test): 
    580     sectionsSetUp(test) 
    581  
    582     man1 = """<?xml version="1.0" ?> 
    583 <manifest> 
    584   <record type="Document">document1</record> 
    585   <record type="Folder">folder1</record> 
    586 </manifest> 
    587 """ 
    588  
    589     man2 = """<?xml version="1.0" ?> 
    590 <manifest> 
    591   <record type="Document">document2</record> 
    592   <record type="Document">document3</record> 
    593 </manifest> 
    594 """ 
    595  
    596     item1 = dict( 
    597         _path='', 
    598         _files=dict( 
    599             manifest=dict( 
    600                 name='.objects.xml', 
    601                 data=man1 
    602             ) 
    603         ) 
    604     ) 
    605  
    606     item2 = dict( 
    607         _path='document1', 
    608     ) 
    609  
    610     item3 = dict( 
    611         _path='folder1', 
    612         _files=dict( 
    613             manifest=dict( 
    614                 name='.objects.xml', 
    615                 data=man2 
    616             ) 
    617         ) 
    618     ) 
    619  
    620     item4 = dict( 
    621         _path='folder1/document2', 
    622     ) 
    623  
    624     item5 = dict( 
    625         _path='document4', 
    626     ) 
    627  
    628     class ManifestSource(SampleSource): 
    629         classProvides(ISectionBlueprint) 
    630         implements(ISection) 
    631  
    632         def __init__(self, *args, **kw): 
    633             super(ManifestSource, self).__init__(*args, **kw) 
    634             self.sample = (item1, dict(), item2, item3, item4, item5) 
    635  
    636     provideUtility(ManifestSource, 
    637         name=u'quintagroup.transmogrifier.tests.manifestsource') 
    638599 
    639600def substitutionSetUp(test): 
     
    769730            setUp=readerSetUp, tearDown=tearDown), 
    770731        doctest.DocFileSuite( 
    771             'manifest_import.txt', 
    772             setUp=manifestImportSetUp, tearDown=tearDown), 
    773         doctest.DocFileSuite( 
    774732            'substitution.txt', 
    775733            setUp=substitutionSetUp, tearDown=tearDown),