Ignore:
Timestamp:
05/22/12 15:51:08 (3 years ago)
Author:
brent
Message:

Added support for theme properties and images.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Products.ecmigration/trunk/Products/ecmigration/migrate.py

    r886 r890  
    177177    def getFile(self, fn): 
    178178        fname = os.path.join(self.base, fn) 
    179         f = open(fname, 'rb') 
     179        try: 
     180            f = open(fname, 'rb') 
     181        except IOError: 
     182            return None 
    180183        data = f.read() 
    181184        f.close() 
     
    232235    def readFile(self, info): 
    233236        f = self.tar_archive.extractfile(info) 
    234         data = f.read() 
    235         f.close() 
    236         # Circumvent caching for large file handling 
    237         self.tar_archive.members = [] 
    238         return data 
     237        if f: 
     238            data = f.read() 
     239            f.close() 
     240            # Circumvent caching for large file handling 
     241            self.tar_archive.members = [] 
     242            return data 
     243        return None 
    239244 
    240245    def getFile(self, info): 
     
    331336                data = self._getMetadata(x, archive) 
    332337                self.importSettings(data) 
     338            elif 'ecmigration_theme' == ext: 
     339                self.logger.info('Getting eduCommons theme settings: %s' %x) 
     340                data = self._getMetadata(x, archive) 
     341                self.importThemeSettings(data) 
     342                self.importThemeFiles(archive) 
    333343            elif 'ecmigration_userinfo' == ext: 
    334344                self.logger.info('Getting eduCommons user info: %s' %x) 
     
    345355                    obj = self.importObject(data) 
    346356            else: 
    347                 #f = archvie.getFileOpen(x) 
    348                 #data = archive.getFile(x) 
    349357                self.importObjectData(x, archive) 
    350358                self.imp += 1 
     
    362370        transaction.savepoint(optimistic=True) 
    363371 
     372    def importThemeSettings(self, data): 
     373        """ Import theme data """ 
     374        portal = self.context.portal_url.getPortalObject() 
     375        props = portal.portal_skins.custom 
     376        bp = props.base_properties 
     377        bp.manage_changeProperties( 
     378            logoName=data['logoName'], 
     379            faviconName=data['faviconName'], 
     380            bodyBackgroundColor=data['bodyBackgroundColor'], 
     381            bodyBackgroundImage=data['bodyBackgroundImage'], 
     382            portalHeaderBackgroundImage=data['portalHeaderBackgroundImage'], 
     383            portalHeaderBackgroundColor=data['portalHeaderBackgroundColor'], 
     384            portalHeaderFontColor=data['portalHeaderFontColor'], 
     385            portalHeaderLinkColor=data['portalHeaderLinkColor'], 
     386            portalHeaderActiveColor=data['portalHeaderActiveColor'], 
     387            portalTopNavBackgroundImage=data['portalTopNavBackgroundImage'], 
     388            portalTopNavBackgroundColor=data['portalTopNavBackgroundColor'], 
     389            portalTopNavFontColor=data['portalTopNavFontColor'], 
     390            portalTopNavLinkColor=data['portalTopNavLinkColor'], 
     391            portalTopNavActiveColor=data['portalTopNavActiveColor'], 
     392            portalColumnOneBackgroundImage=data['portalColumnOneBackgroundImage'], 
     393            portalColumnOneBackgroundColor=data['portalColumnOneBackgroundColor'], 
     394            portalColumnOneFontColor=data['portalColumnOneFontColor'], 
     395            portalColumnOneLinkColor=data['portalColumnOneLinkColor'], 
     396            portalColumnOneActiveColor=data['portalColumnOneActiveColor'], 
     397            backgroundColor=data['backgroundColor'], 
     398            fontColor=data['fontColor'], 
     399            linkColor=data['linkColor'], 
     400            activeColor=data['activeColor'], 
     401            ) 
     402        transaction.savepoint(optimistic=True) 
     403 
     404    def importThemeFiles(self, archive): 
     405        portal = self.context.portal_url.getPortalObject() 
     406        props = portal.portal_skins.custom 
     407        bp = props.base_properties 
     408        images = [ 
     409            bp.getProperty('logoName'), 
     410            bp.getProperty('faviconName'), 
     411            bp.getProperty('bodyBackgroundImage'),  
     412            bp.getProperty('portalHeaderBackgroundImage'), 
     413            bp.getProperty('portalTopNavBackgroundImage'), 
     414            bp.getProperty('portalColumnOneBackgroundImage'), 
     415            ] 
     416        path = '%s/portal_skins/custom/' %self.context.getId() 
     417        for x in images: 
     418            data = archive.getFile(path+x) 
     419            if data: 
     420                if x in props.objectIds(): 
     421                    props.manage_delObjects(ids=[x]) 
     422                props.manage_addImage(x, data) 
     423                self.logger.info('Added Theme File: %s' %path+x) 
     424        transaction.savepoint(optimistic=True) 
     425                 
    364426    def importUsers(self, data): 
    365427        """ Import Users """ 
     
    540602        self.logger.info('Starting Export') 
    541603        self.exportSettings(archive) 
     604        self.exportThemeSettings(archive) 
    542605        self.exportUsers(archive) 
    543606        self.exportObjects(brains, archive, 99999) 
     
    561624        archive.addFile(fn, data) 
    562625        self.logger.info('Added settings file: %s' %fn) 
     626 
     627    def exportThemeSettings(self, archive): 
     628        tprops = self.context.portal_skins.custom 
     629        bp = tprops.base_properties 
     630        fn = '%s/theme.ecmigration_theme' %self.context.getId() 
     631        objstore = { 
     632            'logoName':bp.getProperty('logoName'), 
     633            'faviconName':bp.getProperty('faviconName'), 
     634            'bodyBackgroundColor':bp.getProperty('bodyBackgroundColor'), 
     635            'bodyBackgroundImage':bp.getProperty('bodyBackgroundImage'), 
     636            'portalHeaderBackgroundImage':bp.getProperty('portalHeaderBackgroundImage'), 
     637            'portalHeaderBackgroundColor':bp.getProperty('portalHeaderBackgroundColor'), 
     638            'portalHeaderFontColor':bp.getProperty('portalHeaderFontColor'), 
     639            'portalHeaderLinkColor':bp.getProperty('portalHeaderLinkColor'), 
     640            'portalHeaderActiveColor':bp.getProperty('portalHeaderActiveColor'), 
     641            'portalTopNavBackgroundImage':bp.getProperty('portalTopNavBackgroundImage'), 
     642            'portalTopNavBackgroundColor':bp.getProperty('portalTopNavBackgroundColor'), 
     643            'portalTopNavFontColor':bp.getProperty('portalTopNavFontColor'), 
     644            'portalTopNavLinkColor':bp.getProperty('portalTopNavLinkColor'), 
     645            'portalTopNavActiveColor':bp.getProperty('portalTopNavActiveColor'), 
     646            'portalColumnOneBackgroundImage':bp.getProperty('portalColumnOneBackgroundImage'), 
     647            'portalColumnOneBackgroundColor':bp.getProperty('portalColumnOneBackgroundColor'), 
     648            'portalColumnOneFontColor':bp.getProperty('portalColumnOneFontColor'), 
     649            'portalColumnOneLinkColor':bp.getProperty('portalColumnOneLinkColor'), 
     650            'portalColumnOneActiveColor':bp.getProperty('portalColumnOneActiveColor'), 
     651            'backgroundColor':bp.getProperty('backgroundColor'), 
     652            'fontColor':bp.getProperty('fontColor'), 
     653            'linkColor':bp.getProperty('linkColor'), 
     654            'activeColor':bp.getProperty('activeColor'), 
     655            } 
     656        data = Pickle.dumps(objstore) 
     657        self.files.append(fn) 
     658        archive.addFile(fn, data) 
     659        self.logger.info('Added theme settings: %s' %fn) 
     660        images = [ 
     661            objstore['logoName'], 
     662            objstore['faviconName'], 
     663            objstore['bodyBackgroundImage'],  
     664            objstore['portalHeaderBackgroundImage'], 
     665            objstore['portalTopNavBackgroundImage'], 
     666            objstore['portalColumnOneBackgroundImage'], 
     667            ] 
     668        path = '%s/portal_skins/custom/' %self.context.getId() 
     669        for x in images: 
     670            if x in tprops.objectIds(): 
     671                img = getattr(tprops, x, None) 
     672                if img: 
     673                    archive.addFile(path + x, img.data) 
     674                    self.logger.info('Added theme image file: %s' %path+x) 
    563675 
    564676    def exportUsers(self, archive): 
Note: See TracChangeset for help on using the changeset viewer.