2017-04-24 15:51:12 +00:00
|
|
|
# -*- coding:utf-8 -*
|
|
|
|
#
|
|
|
|
# Copyright 2016,2017
|
|
|
|
# - Skia <skia@libskia.so>
|
2017-05-09 12:25:25 +00:00
|
|
|
# - Sli <antoine@bartuccio.fr>
|
2017-04-24 15:51:12 +00:00
|
|
|
#
|
|
|
|
# Ce fichier fait partie du site de l'Association des Étudiants de l'UTBM,
|
|
|
|
# http://ae.utbm.fr.
|
|
|
|
#
|
|
|
|
# This program is free software; you can redistribute it and/or modify it under
|
|
|
|
# the terms of the GNU General Public License a published by the Free Software
|
|
|
|
# Foundation; either version 3 of the License, or (at your option) any later
|
|
|
|
# version.
|
|
|
|
#
|
|
|
|
# This program is distributed in the hope that it will be useful, but WITHOUT
|
|
|
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
|
|
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
|
|
|
# details.
|
|
|
|
#
|
|
|
|
# You should have received a copy of the GNU General Public License along with
|
|
|
|
# this program; if not, write to the Free Sofware Foundation, Inc., 59 Temple
|
|
|
|
# Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
#
|
|
|
|
#
|
|
|
|
|
2023-03-24 14:32:05 +00:00
|
|
|
import datetime
|
2017-10-06 15:28:51 +00:00
|
|
|
import phonenumbers
|
|
|
|
|
2016-01-08 15:14:54 +00:00
|
|
|
from django import template
|
|
|
|
from django.template.defaultfilters import stringfilter
|
|
|
|
from django.utils.safestring import mark_safe
|
2023-03-24 14:32:05 +00:00
|
|
|
from django.utils.translation import ngettext
|
2017-05-09 12:25:25 +00:00
|
|
|
from core.scss.processor import ScssProcessor
|
2016-01-08 15:14:54 +00:00
|
|
|
|
2016-12-24 00:41:49 +00:00
|
|
|
from core.markdown import markdown as md
|
2016-01-08 15:14:54 +00:00
|
|
|
|
|
|
|
register = template.Library()
|
|
|
|
|
2017-06-12 07:42:03 +00:00
|
|
|
|
2016-01-08 15:14:54 +00:00
|
|
|
@register.filter(is_safe=False)
|
|
|
|
@stringfilter
|
|
|
|
def markdown(text):
|
2018-10-04 19:29:19 +00:00
|
|
|
return mark_safe('<div class="markdown">%s</div>' % md(text))
|
2016-01-08 15:14:54 +00:00
|
|
|
|
2018-10-04 19:29:19 +00:00
|
|
|
|
|
|
|
@register.filter(name="phonenumber")
|
|
|
|
def phonenumber(value, country="FR", format=phonenumbers.PhoneNumberFormat.NATIONAL):
|
2017-10-06 15:28:51 +00:00
|
|
|
"""
|
|
|
|
This filter is kindly borrowed from https://github.com/foundertherapy/django-phonenumber-filter
|
|
|
|
"""
|
|
|
|
value = str(value)
|
|
|
|
try:
|
|
|
|
parsed = phonenumbers.parse(value, country)
|
|
|
|
return phonenumbers.format_number(parsed, format)
|
|
|
|
except phonenumbers.NumberParseException as e:
|
|
|
|
return value
|
2017-06-12 07:42:03 +00:00
|
|
|
|
2018-10-04 19:29:19 +00:00
|
|
|
|
2023-03-24 14:32:05 +00:00
|
|
|
@register.filter(name="truncate_time")
|
|
|
|
def truncate_time(value, time_unit):
|
|
|
|
value = str(value)
|
|
|
|
return {
|
|
|
|
"millis": lambda: value.split(".")[0],
|
|
|
|
"seconds": lambda: value.rsplit(":", maxsplit=1)[0],
|
|
|
|
"minutes": lambda: value.split(":", maxsplit=1)[0],
|
|
|
|
"hours": lambda: value.rsplit(" ")[0],
|
|
|
|
}[time_unit]()
|
|
|
|
|
2016-09-08 01:29:49 +00:00
|
|
|
|
2023-03-24 14:32:05 +00:00
|
|
|
@register.filter(name="format_timedelta")
|
|
|
|
def format_timedelta(value: datetime.timedelta) -> str:
|
|
|
|
days = value.days
|
|
|
|
if days == 0:
|
|
|
|
return str(value)
|
|
|
|
remainder = value - datetime.timedelta(days=days)
|
|
|
|
return ngettext(
|
|
|
|
"%(nb_days)d day, %(remainder)s", "%(nb_days)d days, %(remainder)s", days
|
|
|
|
) % {"nb_days": days, "remainder": str(remainder)}
|
2016-01-08 15:14:54 +00:00
|
|
|
|
2017-06-12 07:42:03 +00:00
|
|
|
|
2017-05-09 12:25:25 +00:00
|
|
|
@register.simple_tag()
|
|
|
|
def scss(path):
|
2017-05-10 08:58:51 +00:00
|
|
|
"""
|
2020-08-27 13:59:42 +00:00
|
|
|
Return path of the corresponding css file after compilation
|
2017-05-10 08:58:51 +00:00
|
|
|
"""
|
2017-05-09 12:25:25 +00:00
|
|
|
processor = ScssProcessor(path)
|
2017-06-10 14:52:03 +00:00
|
|
|
return processor.get_converted_scss()
|