src/pyams_sequence/utility.py
changeset 53 2342203445f1
parent 48 4ef3339c13e4
child 54 3f9dda94c354
equal deleted inserted replaced
52:3351d1c1595c 53:2342203445f1
   102         if versions:
   102         if versions:
   103             content = versions[0]
   103             content = versions[0]
   104             return content
   104             return content
   105 
   105 
   106 
   106 
   107 def get_reference_target(reference, state=None):
   107 def get_reference_target(reference, state=None, request=None):
   108     """Get target of given reference OID"""
   108     """Get target of given reference OID"""
   109     catalog = get_utility(ICatalog)
   109     catalog = get_utility(ICatalog)
   110     params = Eq(catalog['oid'], reference)
   110     params = Eq(catalog['oid'], reference)
   111     if handle_workflow:
   111     results = list(CatalogResultSet(CatalogQuery(catalog).query(params)))
       
   112     if results:
   112         if state:
   113         if state:
   113             if not isinstance(state, (list, tuple, set)):
   114             results = list(filter(lambda x: get_version_in_state(x, state), results))
   114                 state = (state,)
       
   115             params &= Any(catalog['workflow_state'], state)
       
   116             results = list(CatalogResultSet(CatalogQuery(catalog).query(params)))
       
   117             if results:
       
   118                 return results[0]
       
   119         else:
   115         else:
   120             request = check_request()
   116             if request is None:
   121             if IPyAMSUserLayer.providedBy(request):  # front-office request
   117                 request = check_request()
       
   118             if IPyAMSUserLayer.providedBy(request):
   122                 getter = get_visible_version
   119                 getter = get_visible_version
   123             else:
   120             else:
   124                 getter = get_last_version
   121                 getter = get_last_version
   125             results = list(map(getter, CatalogResultSet(CatalogQuery(catalog).query(params))))
   122             results = list(map(getter, results))
   126             if results:
       
   127                 return results[0]
       
   128     else:
       
   129         results = list(CatalogResultSet(CatalogQuery(catalog).query(params)))
       
   130         if results:
   123         if results:
   131             return results[0]
   124             return results[0]
   132 
   125 
   133 
   126 
   134 @implementer(ISequentialIntIds)
   127 @implementer(ISequentialIntIds)