# -*- coding: utf-8 -*-
"""
Template tags to display buttons in pages
:creationdate: 09/01/2017 09:21
:moduleauthor: François GUÉRIN <fguerin@ville-tourcoing.fr>
:modulename: forms.models
"""
from __future__ import unicode_literals
import logging
import enum
from django import template
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
logger = logging.getLogger('buttons.buttons_tags')
register = template.Library()
[docs]class IconPosition(enum.Enum):
"""
Icon positions enumeration
"""
LEFT = 'LEFT'
RIGHT = 'RIGHT'
NONE = 'NONE'
@register.inclusion_tag('buttons/button.html')
@register.inclusion_tag('buttons/button.html')
[docs]def btn_download(url, text=_('Download'), icon='download', icon_position=IconPosition.RIGHT, **kwargs):
"""
Displays a ``download`` button
:param url: **Mandatory** target url
:param text: Button text
:param icon: Button icon
:param kwargs: Additional keyword args in:
+ `btn_css_class`: Button bootstrap class
:return: Render-able dict
"""
return btn_button(url=url, text=text, icon=icon, icon_position=icon_position, **kwargs)
@register.inclusion_tag('buttons/button.html')
[docs]def btn_back(text=_('Back'), icon='chevron-left', icon_position=IconPosition.LEFT, btn_css_color='btn-primary', **kwargs):
"""
Displays a ``btn_back`` button
:param text: Button text
:param icon: Button icon
:param icon_position: Button icon position, default :attr:`buttons.templatetags.buttons_tags.IconPosition.LEFT`
:param btn_css_color: Button css class, default `btn-primary`
:param kwargs: Additional keyword args in:
+ `btn_css_class`: Button bootstrap class
:return: Render-able dict
"""
return btn_button(text=text, icon=icon, icon_position=icon_position, btn_css_color='btn-primary',
url='javascript:history.btn_back()', **kwargs)
@register.inclusion_tag('buttons/button.html')
[docs]def btn_link(url, text=_('Link'), icon='btn_link', icon_position=IconPosition.LEFT,
btn_css_color='btn-default', **kwargs):
"""
Displays a simple ``link`` btn_button
:param url: **Mandatory** target url
:param text: link text, default 'link'
:param icon: Icon label, default 'link'
:param icon_position: Button icon position, default :attr:`buttons.templatetags.buttons_tags.IconPosition.RIGHT`
:param btn_css_color: Button bootstrap class, default 'btn-default'
:param kwargs:
:return: Render-able dict
"""
return btn_button(url=url, text=text, icon=icon, icon_position=icon_position,
btn_css_color=btn_css_color, **kwargs)
@register.inclusion_tag('buttons/button.html')
[docs]def btn_home(url='/', text=_('Home'), icon='home', icon_position=IconPosition.LEFT, btn_css_color='btn-primary',
**kwargs):
"""
Displays a ``btn_back`` btn_button
:param url: Target URL, default '/'
:param text: Button text, default 'Home'
:param icon: Button icon, default 'fa-home'
:param icon_position: Button icon position, default :attr:`buttons.templatetags.buttons_tags.IconPosition.RIGHT`
:param btn_css_color: Button bootstrap class, default 'btn-primary'
:param kwargs: Additional keyword args
:return: Render-able dict
"""
return btn_button(url=url, text=text, icon=icon, icon_position=icon_position, btn_css_color=btn_css_color,
**kwargs)
@register.inclusion_tag('buttons/button.html')
[docs]def btn_submit(text=_('Submit'), icon='check', btn_css_color='btn-primary', **kwargs):
"""
Displays a ``submit`` button
:param text: Button text, default 'Submit'
:param icon: Button icon, default 'check'
:param btn_css_color: Base button color
:param kwargs: Additional keyword args
:return: Render-able dict
"""
return btn_button(text=text, btn_type='submit', icon=icon, btn_css_color=btn_css_color, **kwargs)
@register.inclusion_tag('buttons/button.html')
[docs]def btn_list(url, text=_('List'), icon='list', btn_css_color='btn-primary', **kwargs):
"""
Displays a ``list`` button
:param url: **Mandatory** target url
:param text: Button text, default 'Submit'
:param icon: Button icon, default 'check'
:param btn_css_color: Base button color
:param kwargs: Additional keyword args
:return: Render-able dict
"""
return btn_button(url=url, text=text, icon=icon, btn_css_color=btn_css_color, **kwargs)
@register.inclusion_tag('buttons/button.html')
[docs]def btn_search(url, text=_('Search'), **kwargs):
return btn_button(url=url, text=text, **kwargs)
@register.inclusion_tag('buttons/button.html')
[docs]def btn_close(btn_css_color='btn-warning'):
return btn_button(btn_css_color=btn_css_color)
@register.inclusion_tag('buttons/button.html')
[docs]def btn_login(url, text=_('Login'), icon='login', **kwargs):
return btn_button(url=url, text=text, icon=icon, **kwargs)