Changeset 3528

Show
Ignore:
Timestamp:
10/20/07 07:25:23 (9 months ago)
Author:
roger
Message:

Paginate now works with SQLAlchemy 0.4 (fixed #1591).

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/1.1/CHANGELOG.txt

    r3526 r3528  
    1515    * Ticket #1185: rollback SA transaction if a controller method fails, and it 
    1616      has an exception_handler. 
    17     * sa_rwt (SQLAlchemy run with transaction) refactored to fix some corner  
     17    * sa_rwt (SQLAlchemy run with transaction) refactored to fix some corner 
    1818      cases. 
    19     * Ticket #1508: fixed internal pagination ordering, avoiding a potential  
     19    * Ticket #1508: fixed internal pagination ordering, avoiding a potential 
    2020      error when paginating Query objects (sqlalchemy) and ordering by 4 or more 
    2121      columns. 
     
    2323      patch assumed that Query objects have a _query attribute which holds the 
    2424      query object, which is only true for SelectResults objects. 
     25    * Ticket #1591: Paginate now works with SQLAlchemy 0.4. 
    2526 
    2627*Contributors* 
  • branches/1.1/turbogears/paginate.py

    r3526 r3528  
    1717    from sqlalchemy.ext.selectresults import SelectResults as SASelectResults 
    1818    from sqlalchemy.orm.query import Query 
     19    # sqlalchemy 0.4.x turned SelectResults into a function that returns a Query 
     20    if isinstance(SASelectResults, types.FunctionType): 
     21        SASelectResults = None 
    1922except ImportError: 
    2023    SASelectResults = None 
     
    181184            paginate_instance = Paginate( 
    182185                current_page=page, 
    183                 limit=limit_,  
    184                 pages=pages_to_show,  
    185                 page_count=page_count,  
    186                 input_values=input_values,  
     186                limit=limit_, 
     187                pages=pages_to_show, 
     188                page_count=page_count, 
     189                input_values=input_values, 
    187190                order=order, 
    188191                ordering=ordering, 
     
    217220class Paginate: 
    218221    """class for variable provider""" 
    219     def __init__(self, current_page, pages, page_count, input_values,  
     222    def __init__(self, current_page, pages, page_count, input_values, 
    220223                 limit, order, ordering, row_count, var_name): 
    221                   
     224 
    222225        self.var_name = var_name 
    223226        self.pages = pages 
     
    328331    else: 
    329332        ordering[sort_name][0] = -1 
    330      
     333 
    331334    # re-sort dictionary 
    332335    items = ordering.items() 
     
    339342def sql_get_column(colname, var_data): 
    340343    """Return a column from var_data based on colname.""" 
    341     if isinstance(var_data, SelectResults): 
     344    if SelectResults and isinstance(var_data, SelectResults): 
    342345        col = getattr(var_data.sourceClass.q, colname, None) 
    343346 
    344     elif isinstance(var_data, SASelectResults): 
     347    elif SASelectResults and isinstance(var_data, SASelectResults): 
    345348        col = getattr( 
    346349                var_data._query.mapper.c, 
     
    348351                None) 
    349352 
    350     elif isinstance(var_data, Query): 
     353    elif Query and isinstance(var_data, Query): 
    351354        col = getattr( 
    352355                var_data.mapper.c,