Projet

Général

Profil

0001-misc-extend-date-filter-to-support-more-input-types-.patch

Frédéric Péters, 31 août 2018 09:48

Télécharger (3,01 ko)

Voir les différences:

Subject: [PATCH] misc: extend |date filter to support more input types
 (#25976)

 tests/test_formdata.py            | 29 +++++++++++++++++++++++++++++
 wcs/qommon/templatetags/qommon.py |  9 +++++++++
 2 files changed, 38 insertions(+)
tests/test_formdata.py
716 716
    formdata.data = {'0': time.strptime('2015-05-12', '%Y-%m-%d')}
717 717
    formdata.store()
718 718
    assert formdef.data_class().get(formdata.id).digest == 'plop 12/05/2015 plop'
719

  
720
    formdef.digest_template = 'plop {{ form_var_date|date:"Y" }} plop'
721
    formdef.store()
722
    formdata = formdef.data_class()()
723
    formdata.data = {'0': time.strptime('2015-05-12', '%Y-%m-%d')}
724
    formdata.store()
725
    assert formdef.data_class().get(formdata.id).digest == 'plop 2015 plop'
726

  
727
    formdef.digest_template = 'plop {{ form_var_date_raw|date:"Y" }} plop'
728
    formdef.store()
729
    formdata = formdef.data_class()()
730
    formdata.data = {'0': time.strptime('2015-05-12', '%Y-%m-%d')}
731
    formdata.store()
732
    assert formdef.data_class().get(formdata.id).digest == 'plop 2015 plop'
733

  
734
    formdef.digest_template = 'plop {{ form_var_date|date:"Y" }} plop'
735
    formdef.store()
736
    formdata = formdef.data_class()()
737
    formdata.data = {'0': None}
738
    formdata.store()
739
    assert formdef.data_class().get(formdata.id).digest == 'plop  plop'
740

  
741
    # check there's no crash when an invaliad variable is given
742
    formdef.digest_template = 'plop {{ blah|date:"Y" }} plop'
743
    formdef.store()
744
    formdata = formdef.data_class()()
745
    formdata.data = {'0': time.strptime('2015-05-12', '%Y-%m-%d')}
746
    formdata.store()
747
    assert formdef.data_class().get(formdata.id).digest == 'plop  plop'
wcs/qommon/templatetags/qommon.py
14 14
# You should have received a copy of the GNU General Public License
15 15
# along with this program; if not, see <http://www.gnu.org/licenses/>.
16 16

  
17
import datetime
18

  
17 19
from django import template
20
from django.template import defaultfilters
18 21
from django.utils import dateparse
19 22
from django.utils.safestring import mark_safe
20 23
from wcs.qommon import evalutils
......
66 69
    except (ValueError, TypeError):
67 70
        return None
68 71

  
72
@register.filter(expects_localtime=True, is_safe=False)
73
def date(value, arg=None):
74
    if not isinstance(value, (datetime.datetime, datetime.date, datetime.time)):
75
        value = parse_date(value)
76
    return defaultfilters.date(value, arg=arg)
77

  
69 78
@register.simple_tag
70 79
def standard_text(text_id):
71 80
    return mark_safe(TextsDirectory.get_html_text(str(text_id)))
72
-