Ignore:
Timestamp:
May 21, 2010 10:29:10 AM (14 years ago)
Author:
mylan
Message:

Add converter by property name

File:
1 edited

Legend:

Unmodified
Added
Removed
  • quintagroup.canonicalpath/trunk/quintagroup/canonicalpath/upgrades.py

    r2365 r2368  
     1import sys 
     2from types import StringTypes 
    13from logging import NOTSET, DEBUG, INFO, ERROR 
    24from logging import Logger, StreamHandler, Formatter 
    35from StringIO import StringIO 
    46from zope.component import getAdapter 
    5 #from zope.component import queryMultiAdapter 
    67from Acquisition import aq_base, aq_inner 
    7 #from Products.CMFCore.utils import getToolByName 
    88 
    9 #from quintagroup.canonicalpath.adapters import PROPERTY_LINK 
    10 #from quintagroup.canonicalpath.adapters import PROPERTY_PATH 
    119from quintagroup.canonicalpath.interfaces  import ICanonicalPath 
    1210from quintagroup.canonicalpath.interfaces  import ICanonicalLink 
     11from quintagroup.canonicalpath.adapters import PROPERTY_LINK 
     12from quintagroup.canonicalpath.adapters import PROPERTY_PATH 
     13from quintagroup.canonicalpath.adapters import DefaultPropertyAdapter 
    1314 
    1415class CanonicalConvertor(object): 
     
    3132        self._inout = StringIO() 
    3233 
    33     def convertLinkToPath(self, obj): 
     34    def convertILinkToPath(self, obj): 
    3435        """Convert canonical link to canonical path""" 
    3536        return self._convert(obj, ICanonicalLink, ICanonicalPath, 
    3637                             self._convertL2P) 
    3738 
    38     def convertPathToLink(self, obj): 
     39    def convertIPathToLink(self, obj): 
    3940        """Convert canonical path to canonical link""" 
    4041        return self._convert(obj, ICanonicalPath, ICanonicalLink, 
     42                             self._convertP2L) 
     43 
     44    def convertPLinkToPath(self, obj, prop=PROPERTY_LINK): 
     45        """Convert canonical link, got from the *prop* parameter 
     46           to canonical path. 
     47        """ 
     48        return self._convert(obj, prop, ICanonicalPath, 
     49                             self._convertL2P) 
     50 
     51    def convertPPathToLink(self, obj, prop=PROPERTY_PATH): 
     52        """Convert canonical path, got from the *prop* parameter 
     53           to canonical link. 
     54        """ 
     55        return self._convert(obj, prop, ICanonicalLink, 
    4156                             self._convertP2L) 
    4257 
     
    4863           Log results in logger. 
    4964        """ 
     65        src_msg = type(src_iface) in StringTypes and src_iface or src_iface.__name__ 
    5066        msg = "Migrate %s into %s for %s object: " \ 
    51                % (src_iface.__name__, dst_iface.__name__, obj.absolute_url()) 
     67               % (src_msg, dst_iface.__name__, obj.absolute_url()) 
    5268        try: 
    53             src = getAdapter(obj, src_iface) 
     69            src = _getOrMakeAdapter(obj, src_iface) 
    5470            dst = getAdapter(obj, dst_iface) 
    5571            # XXX: Check is this correct work XXX 
     
    6985        return lev == INFO and True or False 
    7086     
     87    def _getOrMakeAdapter(self, obj, arg): 
     88        """Function return adapter for process of the property. 
     89           Adapter get by interface (if arg is not a string - interface assumed) 
     90           OR if arg is string - adapter created from DefaultCanonicalAdapter. 
     91        """ 
     92        if type(arg) in StringTypes: 
     93            adapter = DefaultPropertyAdapter(obj) 
     94            adapater.prop = arg 
     95            return adapter 
     96        else: 
     97            return getAdapter(obj, arg) 
     98 
    7199    def _convertP2L(self, src, dst): 
    72100        """Convert canonical path to canonical link.""" 
    73         cpath = src.canonical_path 
     101        cpath = src.getProp() 
    74102        cpath = cpath.startswith('/') and cpath or '/' + cpath 
    75103        dst.canonical_link = self.portal_url + cpath 
    76         del src.canonical_path 
     104        src.delProp() 
    77105 
    78106    def _convertL2P(self, src, dst): 
Note: See TracChangeset for help on using the changeset viewer.