Thanks Anthony. Already updated the Github issue and created a post in the
developers.
domingo, 7 de Abril de 2019 às 20:28:26 UTC+1, Anthony escreveu:
>
> Yes, as noted, that code inverts the sort order for date/time fields when
> the field is clicked, but there is no inversion when using the orderby
> argument. I'm not sure why the order is inverted for such fields. Maybe
> bring it up in the developers group.
>
> On Sunday, April 7, 2019 at 3:19:51 PM UTC-4, João Matos wrote:
>>
>> I think I found the source of the problem.
>> After following the function in the previous message, I arrived at this
>> code inside the linsert function (line 2779) .
>>
>> exception = sort_field.type in ('date', 'datetime',
>> 'time')
>> if exception:
>> desc_icon, asc_icon = sorter_icons
>> orderby = (order[:1] == '~' and sort_field) or ~
>> sort_field
>> else:
>> orderby = (order[:1] == '~' and ~sort_field) or
>> sort_field
>>
>> If I change it to
>>
>> exception = sort_field.type in ('date', 'datetime',
>> 'time')
>> # if exception:
>> # desc_icon, asc_icon = sorter_icons
>> # orderby = (order[:1] == '~' and sort_field) or
>> ~sort_field
>> #else:
>> orderby = (order[:1] == '~' and ~sort_field) or
>> sort_field
>>
>> Now the date sorting works fine.
>>
>> There is also another code segment in line 2641 with the same purpose
>> that may need the same change, but that segment isn't run with my
>> application, only the segment at line 2779.
>>
>>
>> domingo, 7 de Abril de 2019 às 19:43:50 UTC+1, João Matos escreveu:
>>>
>>> I think I found the problem (I don't have the solution).
>>>
>>> In gluon\sqlhtml.py there is this function
>>>
>>> def fix_orderby(orderby):
>>> if not auto_pagination:
>>> return orderby
>>> # enforce always an ORDER clause to avoid
>>> # pagination errors. field_id is needed anyhow,
>>> # is unique and usually indexed. See issue #679
>>> if not orderby:
>>> orderby = field_id
>>> elif isinstance(orderby, list):
>>> orderby = reduce(lambda a,b: a|b, orderby)
>>> elif isinstance(orderby, Field) and orderby is not field_id:
>>> print('inside2')
>>> # here we're with an ASC order on a field stored as
>>> orderby
>>> orderby = orderby | field_id
>>> elif (isinstance(orderby, Expression) and
>>> orderby.first and orderby.first is not field_id):
>>> print('inside3')
>>> # here we're with a DESC order on a field stored as
>>> orderby.first
>>> orderby = orderby | field_id
>>> return orderby
>>>
>>> where I added the 2 prints.
>>> A field that works correct shows inside2 on the first run and inside3 on
>>> the second.
>>> The date field always shows inside2.
>>>
>>> Any ideas?
>>>
>>> Do you use Telegram? There is an online web2py international group. It
>>> would be great if you and others web2py core devs joined.
>>>
>>>
>>>
>>>
>>> domingo, 7 de Abril de 2019 às 19:22:34 UTC+1, Anthony escreveu:
>>>>
>>>> On Saturday, April 6, 2019 at 3:41:50 PM UTC-4, João Matos wrote:
>>>>>
>>>>> Thanks Anthony. I will open an issue (I still haven't enough know how
>>>>> to make a PR). I hope some time in the future.
>>>>>
>>>>> I don't want to abuse your help, but I have another issue that is
>>>>> viewable with the minimal app I sent you.
>>>>> If you create 2 records with different dates, and try to change the
>>>>> grid's sort order you will notice that the URL changes, the page reloads
>>>>> but the grid doesn't change.
>>>>> I checked the db stats SQL statements and they stay the same (they
>>>>> don't change the ORDER).
>>>>> I think there is a bug with the sorting of date columns when they are
>>>>> the predefined orderby. Can you try it and give me your input.
>>>>>
>>>>
>>>> Definitely a bug -- feel free to report on Github. May have to do with
>>>> the fact that when clicking to sort, the grid code inverts the order for
>>>> date/time fields, but does not appear to do so when a date/time field is
>>>> specified in the orderby argument.
>>>>
>>>> Anthony
>>>>
>>>
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.