Changeset 143


Ignore:
Timestamp:
05/06/09 11:52:05 (6 years ago)
Author:
jon
Message:

Refactoring IMS

Location:
collective.imstransport/trunk/collective/imstransport
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • collective.imstransport/trunk/collective/imstransport/browser/importform.py

    r91 r143  
    55from zope.app.form.browser.textwidgets import FileWidget             
    66from zope.formlib.form import FormFields, action 
    7 from zope.component import getUtility 
     7from zope.component import getUtility, getUtilitiesFor 
    88from collective.imstransport.utilities.imsutility import IIMSTransportUtility 
     9from collective.imstransport.utilities.interfaces import IIMSManifestReader 
    910 
    1011from collective.imstransport import IMSTransportMessageFactory as _ 
     
    1819 
    1920def imspackagetypevocabulary(self): 
    20     imstrans = getUtility(IIMSTransportUtility) 
    21     readers = imstrans.getReaders() 
     21 
     22    readers = [] 
     23    imsreaders = getUtilitiesFor(IIMSManifestReader) 
     24    for reader in imsreaders: 
     25        readers.append((reader[0], reader[0])) 
    2226    return SimpleVocabulary.fromItems(readers) 
    2327 
  • collective.imstransport/trunk/collective/imstransport/utilities/ccwriter.py

    r138 r143  
    9393                if customMetadataString: 
    9494                    self.parseCustomString(customMetadataString, rlomwriter); 
    95  
    9695 
    9796                rlomwriter.writeFileNode(path) 
     
    169168 
    170169        path = obj.virtual_url_path().replace(self.context.aq_inner.aq_parent.virtual_url_path(), '')[1:] 
     170 
    171171        if path[-1] == '/': 
    172172            path = path[:-1] 
     173 
     174        path_parts = path.split('/') 
     175        if len(path_parts) == 1: 
     176            return '' 
     177        else: 
     178            path = '/'.join(path_parts[1:]) 
    173179 
    174180        if hasattr(obj.aq_explicit, 'Format'): 
  • collective.imstransport/trunk/collective/imstransport/utilities/configure.zcml

    r91 r143  
    1515  <utility 
    1616     provides=".interfaces.IIMSManifestReader" 
    17      factory=".imscc.IMSCCReader" 
     17     factory=".ccreader.IMSCCReader" 
    1818     name="IMS Common Cartridge" 
    1919     /> 
  • collective.imstransport/trunk/collective/imstransport/utilities/imsutility.py

    r138 r143  
    1212 
    1313    implements(IIMSTransportUtility) 
    14 #    tocpage = PageTemplateFile('tableofcontents',WWW_DIR) 
    1514 
    1615    def importPackage(self, context, package, packagetype): 
    1716        reader = getUtility(IIMSManifestReader, packagetype) 
    18         manifestDictionary = reader.readManifest(package) 
    19         oc = getUtility(IIMSObjectCreator) 
    20         oc.createObject(context, manifestDictionary, package) 
     17        return reader.readPackage(context, package) 
    2118         
    2219    def exportPackage(self, package, filename, packagetype = "Common Cartridge", wtype='Common Cartridge'):   
    2320        writer = getUtility(IIMSManifestWriter, packagetype) 
    24 #        writer.setDestination(ZipfileWriter(filename, package.getId())) 
    2521        return writer.createPackage(package, filename) 
    2622         
  • collective.imstransport/trunk/collective/imstransport/utilities/interfaces.py

    r91 r143  
    2828        """ Return the desciptive name of the package type. """ 
    2929 
    30     def readManifest(file): 
     30    def readPackage(file): 
    3131        """ Read IMS CC manifest """ 
    3232 
  • collective.imstransport/trunk/collective/imstransport/utilities/objcreator.py

    r136 r143  
    44from Products.PageTemplates.PageTemplateFile import PageTemplateFile 
    55from OFS.SimpleItem import SimpleItem 
     6from AccessControl import Unauthorized 
    67 
    78class ObjectCreator(object): 
     
    1011    implements(IIMSObjectCreator) 
    1112 
    12     def createObject(self, context, objDict, zipfile): 
     13    def createObjects(self, objDict, context, source): 
     14        """ Read the manifest """ 
     15 
     16        self.context = context 
    1317 
    1418        for id in objDict: 
     19 
    1520            data = objDict[id] 
     21            # Recursively create objects based on metadata dictionary 
     22            parent = self.CreateFolderPath(context, data['path']) 
    1623 
    17             # Recursively create objects based on metadata dictionary 
    18             parent = self.CreateFolderPath(context, data['path'].split('/')) 
    19              
    2024            if not getattr(parent, data['id'], None): 
    2125                parent.invokeFactory(data['type'], data['id']) 
    2226            obj = getattr(parent, data['id']) 
    23             obj.setTitle(data['title']) 
    24              
     27 
    2528            if data.has_key('file'): 
    26                 if (data['path']): 
    27                     path_to_file = '%s/%s' %(data['path'], data['file']) 
    28                 else: 
    29                     path_to_file = data['file'] 
    30                 zf = ZipFile(zipfile, 'r') 
     29                path_to_file = data['file'] 
     30                zf = source 
    3131                if data['type'] == 'Image' or getattr(obj, 'setImage', None): 
    32                     obj.setImage(zf.read(path_to_file)) 
     32                    obj.setImage(zf.readFile(path_to_file)) 
    3333                elif data['type'] == 'File' and getattr(obj, 'setFile', None): 
    34                     obj.setFile(zf.read(path_to_file)) 
     34                    obj.setFile(zf.readFile(path_to_file)) 
    3535                elif data['type'] == 'Document' and getattr(obj, 'setText', None): 
    36                     obj.setText(zf.read(path_to_file)) 
    37                 zf.close()  
     36                    obj.setText(zf.readFile(path_to_file)) 
    3837            elif data.has_key('text'): 
    3938                obj.setText(data['text']) 
     39 
     40            # Set the metadata on the object 
     41            for key in data.keys(): 
     42                if key != 'file': 
     43                    field = obj.getField(key) 
     44                    if field: 
     45                        mutator = field.getMutator(obj) 
     46                        if mutator: 
     47                            if field.__name__ == 'excludeFromNav': 
     48                                mutator('False') 
     49                            else: 
     50                                mutator(data[key]) 
    4051 
    4152            obj.reindexObject() 
     
    4657         
    4758        temp = context 
    48         for path_elem in path: 
     59        pathsplit = path.split('/') 
     60 
     61        for path_elem in pathsplit: 
    4962            if not path_elem: 
    5063                continue 
     
    5871 
    5972        return temp 
    60      
    61  
    62  
    63  
    64  
    65          
    66          
    67  
Note: See TracChangeset for help on using the changeset viewer.