So after a couple of thoughs i found a possible solution: decorators.
The idea is to intercept parameters transfered  to @paginate.Here is
the decorator:

def copyparms(*to_copy):
    import turbogears.decorator
    from turbogears.decorator import weak_signature_decorator
#    @weak_signature_decorator
    def decorator(f):
        def internal(*args,**kwds):
            for old,new in to_copy:
                if old in kwds:
                    kwds[new] = kwds[old]
            return f(*args,**kwds)
        return internal
    return decorator

Then all we need is to declare  @copyparams before @paginate.
Something like this:
   @copyparms(("tg_paginate_order","order_by_field"))
   @paginate('mb_stats',default_order=BY_BYTES)
   def
mbstats(self,area_id,uclass,stats_by_field,order_by_field=BY_BYTES):
               pass

If anybody is interested i can  sent him(her) the code.

On Apr 12, 3:29 pm, "yoanis_gil" <[EMAIL PROTECTED]> wrote:
> I wanted a sortable and paginated datagrid so i decided to use
> PaginateDatagrid. Since i'm not using SqlObject and i want to display
> a list of tuples, I don't get elements sorted. That's ok. This is how
> i defined my datagrid:
>
> mb_stats_datagrid = PaginateDataGrid(fields=[
>                         PaginateDataGrid.Column(name='usuario',
> getter=lambda row: row[0], title='Usuario'),
>
> PaginateDataGrid.Column(name=BY_MSG_COUNT,getter=lambda row: row[1],
> title='Cantidad',options=dict(sortable=True)),
>
> PaginateDataGrid.Column(name=BY_BYTES,getter=lambda row: row[2],
> title='Peso',options=dict(sortable=True))])
>
> I notice that columns headers from the rendered datagrid contains a
> param which specifies which column is to be sorted. The param is named
> *tg_paginate_order*. That's when i figured out how to get my data
> sorted. I just needed access to that param. But ...
> Looking at paginate.py. I found this:
>
>             page = int(kw.pop('tg_paginate_no', 1))
>             limit_ = int(kw.pop('tg_paginate_limit', limit))
>             order = kw.pop('tg_paginate_order', default_order)
>             reversed = kw.pop('tg_paginate_reversed', None)
>
> Yes, :( that was really sad. I know that most of those variables are
> not relevant for the function been decorated. But if there's a way of
> knowing the sorting parameter then paginate parameter becomes even
> more generic.
>
> I guess i will have to find a way of keeping that parameter.
>
> Regards ...


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [EMAIL PROTECTED]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to