pep8: put 2 lines between function definitions (#45780)
This commit is contained in:
parent
017b20e7f8
commit
ba3451e723
|
@ -53,10 +53,12 @@ from combo.apps.dashboard.models import DashboardCell, Tile
|
|||
|
||||
register = template.Library()
|
||||
|
||||
|
||||
def skeleton_text(context, placeholder_name, content=''):
|
||||
return '{%% block placeholder-%s %%}{%% block %s %%}%s{%% endblock %%}{%% endblock %%}' % (
|
||||
placeholder_name, placeholder_name, content)
|
||||
|
||||
|
||||
@register.inclusion_tag('combo/placeholder.html', takes_context=True)
|
||||
def placeholder(context, placeholder_name, **options):
|
||||
placeholder = Placeholder(key=placeholder_name, cell=context.get('cell'), **options)
|
||||
|
@ -97,6 +99,7 @@ def placeholder(context, placeholder_name, **options):
|
|||
context['skeleton'] = ''
|
||||
return context
|
||||
|
||||
|
||||
@register.simple_tag(takes_context=True)
|
||||
def render_cell(context, cell):
|
||||
if context.get('render_skeleton') and cell.is_user_dependant(context):
|
||||
|
@ -128,6 +131,7 @@ def render_cell(context, cell):
|
|||
return ''
|
||||
raise
|
||||
|
||||
|
||||
@register.tag
|
||||
def skeleton_extra_placeholder(parser, token):
|
||||
try:
|
||||
|
@ -174,6 +178,7 @@ class ExtraPlaceholderNode(template.Node):
|
|||
return self.nodelist.render(context)
|
||||
return skeleton_text(context, self.placeholder_name, content=self.content)
|
||||
|
||||
|
||||
@register.inclusion_tag('combo/menu.html', takes_context=True)
|
||||
def show_menu(context, level=0, current_page=None, depth=1, ignore_visibility=True, reduce_depth=False):
|
||||
if reduce_depth:
|
||||
|
@ -185,10 +190,12 @@ def show_menu(context, level=0, current_page=None, depth=1, ignore_visibility=Tr
|
|||
return get_menu_context(new_context, level=level, current_page=current_page,
|
||||
depth=depth, ignore_visibility=ignore_visibility)
|
||||
|
||||
|
||||
@register.simple_tag(takes_context=True)
|
||||
def page_absolute_url(context, page):
|
||||
return context['request'].build_absolute_uri(page.get_online_url())
|
||||
|
||||
|
||||
@register.filter(name='strptime')
|
||||
@stringfilter
|
||||
def strptime(date_string, date_format):
|
||||
|
@ -197,6 +204,7 @@ def strptime(date_string, date_format):
|
|||
except ValueError:
|
||||
return None
|
||||
|
||||
|
||||
@register.filter
|
||||
def parse_date(date_string):
|
||||
try:
|
||||
|
@ -209,6 +217,7 @@ def parse_date(date_string):
|
|||
except (ValueError, TypeError):
|
||||
return None
|
||||
|
||||
|
||||
@register.filter(expects_localtime=True, is_safe=False)
|
||||
def date(value, arg=None):
|
||||
if arg is None:
|
||||
|
@ -217,6 +226,7 @@ def date(value, arg=None):
|
|||
value = parse_datetime(value) or parse_date(value)
|
||||
return defaultfilters.date(value, arg=arg)
|
||||
|
||||
|
||||
@register.filter
|
||||
def parse_datetime(datetime_string):
|
||||
try:
|
||||
|
@ -229,6 +239,7 @@ def parse_datetime(datetime_string):
|
|||
except (ValueError, TypeError):
|
||||
return None
|
||||
|
||||
|
||||
@register.filter(name='datetime', expects_localtime=True, is_safe=False)
|
||||
def datetime_(value, arg=None):
|
||||
if arg is None:
|
||||
|
@ -237,6 +248,7 @@ def datetime_(value, arg=None):
|
|||
value = parse_datetime(value)
|
||||
return defaultfilters.date(value, arg=arg)
|
||||
|
||||
|
||||
@register.filter
|
||||
def parse_time(time_string):
|
||||
# if input is a datetime, extract its time
|
||||
|
@ -252,6 +264,7 @@ def parse_time(time_string):
|
|||
except (ValueError, TypeError):
|
||||
return None
|
||||
|
||||
|
||||
@register.filter(expects_localtime=True, is_safe=False)
|
||||
def time(value, arg=None):
|
||||
if arg is None:
|
||||
|
@ -261,6 +274,7 @@ def time(value, arg=None):
|
|||
value = parse_time(value)
|
||||
return defaultfilters.date(value, arg=arg)
|
||||
|
||||
|
||||
@register.filter
|
||||
def shown_because_admin(cell, request):
|
||||
if not (request.user and request.user.is_superuser):
|
||||
|
@ -272,12 +286,14 @@ def shown_because_admin(cell, request):
|
|||
return False
|
||||
return not(set(cell_groups).intersection(request.user.groups.all()))
|
||||
|
||||
|
||||
@register.filter(name='has_role')
|
||||
def has_role(user, groupname):
|
||||
if not user or user.is_anonymous:
|
||||
return False
|
||||
return user.groups.filter(name=groupname).exists()
|
||||
|
||||
|
||||
@register.filter(name='get')
|
||||
def get(obj, key):
|
||||
try:
|
||||
|
@ -285,10 +301,12 @@ def get(obj, key):
|
|||
except AttributeError:
|
||||
return None
|
||||
|
||||
|
||||
@register.filter
|
||||
def split(string, separator=' '):
|
||||
return (string or '').split(separator)
|
||||
|
||||
|
||||
@register.filter
|
||||
def strip(string, chars=None):
|
||||
if not string:
|
||||
|
@ -332,22 +350,27 @@ def get_group(group_list, group_name):
|
|||
ret.extend(group['list'])
|
||||
return ret
|
||||
|
||||
|
||||
@register.filter(name='is_empty_placeholder')
|
||||
def is_empty_placeholder(page, placeholder_name):
|
||||
return len([x for x in page.get_cells() if x.placeholder == placeholder_name]) == 0
|
||||
|
||||
|
||||
@register.filter(name='list')
|
||||
def as_list(obj):
|
||||
return list(obj)
|
||||
|
||||
|
||||
@register.filter(name='as_json')
|
||||
def as_json(obj):
|
||||
return json.dumps(obj)
|
||||
|
||||
|
||||
@register.filter
|
||||
def signed(obj):
|
||||
return signing.dumps(obj)
|
||||
|
||||
|
||||
@register.filter
|
||||
def name_id(user):
|
||||
if user and user.is_authenticated:
|
||||
|
@ -358,10 +381,12 @@ def name_id(user):
|
|||
# is tried with a missing user argument.
|
||||
raise VariableDoesNotExist('name_id')
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def get_page(page_slug):
|
||||
return Page.objects.get(slug=page_slug)
|
||||
|
||||
|
||||
@register.filter
|
||||
def startswith(string, substring):
|
||||
return string and force_text(string).startswith(force_text(substring))
|
||||
|
@ -381,6 +406,7 @@ def parse_float(value):
|
|||
except (ValueError, TypeError):
|
||||
return ''
|
||||
|
||||
|
||||
def get_as_datetime(s):
|
||||
result = parse_datetime(s)
|
||||
if not result:
|
||||
|
@ -389,6 +415,7 @@ def get_as_datetime(s):
|
|||
result = datetime.datetime(year=result.year, month=result.month, day=result.day)
|
||||
return result
|
||||
|
||||
|
||||
@register.filter(expects_localtime=True, is_safe=False)
|
||||
def add_days(value, arg):
|
||||
value = parse_date(value) # consider only date, not hours
|
||||
|
@ -400,6 +427,7 @@ def add_days(value, arg):
|
|||
result = value + datetime.timedelta(days=float(arg))
|
||||
return result
|
||||
|
||||
|
||||
@register.filter(expects_localtime=True, is_safe=False)
|
||||
def add_hours(value, arg):
|
||||
value = parse_datetime(value)
|
||||
|
@ -410,6 +438,7 @@ def add_hours(value, arg):
|
|||
return value
|
||||
return value + datetime.timedelta(hours=float(arg))
|
||||
|
||||
|
||||
@register.filter(expects_localtime=True, is_safe=False)
|
||||
def age_in_days(value, today=None):
|
||||
value = parse_date(value)
|
||||
|
@ -423,6 +452,7 @@ def age_in_days(value, today=None):
|
|||
today = datetime.date.today()
|
||||
return (today - value).days
|
||||
|
||||
|
||||
@register.filter(expects_localtime=True, is_safe=False)
|
||||
def age_in_hours(value, now=None):
|
||||
# consider value and now as datetimes (and not dates)
|
||||
|
@ -437,6 +467,7 @@ def age_in_hours(value, now=None):
|
|||
now = datetime.datetime.now()
|
||||
return int((now - value).total_seconds() / 3600)
|
||||
|
||||
|
||||
def age_in_years_and_months(born, today=None):
|
||||
'''Compute age since today as the number of years and months elapsed'''
|
||||
born = make_date(born)
|
||||
|
@ -458,6 +489,7 @@ def age_in_years_and_months(born, today=None):
|
|||
months -= 1
|
||||
return years, months
|
||||
|
||||
|
||||
@register.filter(expects_localtime=True, is_safe=False)
|
||||
def age_in_years(value, today=None):
|
||||
try:
|
||||
|
@ -465,6 +497,7 @@ def age_in_years(value, today=None):
|
|||
except ValueError:
|
||||
return ''
|
||||
|
||||
|
||||
@register.filter(expects_localtime=True, is_safe=False)
|
||||
def age_in_months(value, today=None):
|
||||
try:
|
||||
|
@ -495,6 +528,7 @@ def parse_decimal(value, default=Decimal(0)):
|
|||
except (ArithmeticError, TypeError):
|
||||
return default
|
||||
|
||||
|
||||
@register.filter(is_safe=False)
|
||||
def decimal(value, arg=None):
|
||||
if not isinstance(value, Decimal):
|
||||
|
@ -503,6 +537,7 @@ def decimal(value, arg=None):
|
|||
return value
|
||||
return defaultfilters.floatformat(value, arg=arg)
|
||||
|
||||
|
||||
@register.filter
|
||||
def add(term1, term2):
|
||||
'''replace the "add" native django filter'''
|
||||
|
@ -522,14 +557,17 @@ def add(term1, term2):
|
|||
return term1_decimal
|
||||
return defaultfilters.add(term1, term2)
|
||||
|
||||
|
||||
@register.filter
|
||||
def subtract(term1, term2):
|
||||
return parse_decimal(term1) - parse_decimal(term2)
|
||||
|
||||
|
||||
@register.filter
|
||||
def multiply(term1, term2):
|
||||
return parse_decimal(term1) * parse_decimal(term2)
|
||||
|
||||
|
||||
@register.filter
|
||||
def divide(term1, term2):
|
||||
try:
|
||||
|
@ -539,19 +577,23 @@ def divide(term1, term2):
|
|||
except DecimalDivisionByZero:
|
||||
return ''
|
||||
|
||||
|
||||
@register.filter
|
||||
def ceil(value):
|
||||
'''the smallest integer value greater than or equal to value'''
|
||||
return decimal(math.ceil(parse_decimal(value)))
|
||||
|
||||
|
||||
@register.filter
|
||||
def floor(value):
|
||||
return decimal(math.floor(parse_decimal(value)))
|
||||
|
||||
|
||||
@register.filter(name='abs')
|
||||
def abs_(value):
|
||||
return decimal(abs(parse_decimal(value)))
|
||||
|
||||
|
||||
_json_script_escapes = {
|
||||
ord('>'): '\\u003E',
|
||||
ord('<'): '\\u003C',
|
||||
|
|
|
@ -29,6 +29,7 @@ def test_strptime():
|
|||
assert t.render(Context({'someday': {'foo': 'bar'}})) == ''
|
||||
assert t.render(Context({'someday': ['foo', 'bar']})) == ''
|
||||
|
||||
|
||||
def test_parse_datetime():
|
||||
t = Template('{{ someday|parse_datetime|date:"Y m d H i s T" }}')
|
||||
expected = '2015 04 15 13 11 12 UTC'
|
||||
|
@ -75,6 +76,7 @@ def test_parse_datetime():
|
|||
assert t.render(Context({'someday': {'foo': 'bar'}})) == ''
|
||||
assert t.render(Context({'someday': ['foo', 'bar']})) == ''
|
||||
|
||||
|
||||
def test_has_role():
|
||||
t = Template('{{ request.user|has_role:"Role1" }}')
|
||||
|
||||
|
@ -108,6 +110,7 @@ def test_has_role():
|
|||
request.user = AnonymousUser()
|
||||
assert t.render(context) == 'False'
|
||||
|
||||
|
||||
def test_get():
|
||||
t = Template('{{ foo|get:"foo-bar" }}')
|
||||
context = Context({'foo': {'foo-bar': 'hello'}})
|
||||
|
@ -125,12 +128,14 @@ def test_get():
|
|||
context = Context({'foo': {'foo-bar': 'hello'}, 'key': 'foo-bar'})
|
||||
assert t.render(context) == 'hello'
|
||||
|
||||
|
||||
def test_split():
|
||||
t = Template('{% for x in plop|split %}{{x}}<br>{% endfor %}')
|
||||
assert t.render(Context({'plop': 'ab cd ef'})) == 'ab<br>cd<br>ef<br>'
|
||||
t = Template('{% for x in plop|split:"|" %}{{x}} {% endfor %}')
|
||||
assert t.render(Context({'plop': 'ab|cd|ef'})) == 'ab cd ef '
|
||||
|
||||
|
||||
def test_strip_templatetag():
|
||||
tmpl = Template('{{ foo|strip }}')
|
||||
assert tmpl.render(Context()) == ''
|
||||
|
|
Loading…
Reference in New Issue