from django import template from django.utils.safestring import mark_safe from urllib.request import quote as urlencode register = template.Library() @register.simple_tag def mailurl(*, subject=None, body=None, to=[]): """TODO: Dokumentace""" if isinstance(to, str): to = [to] assert isinstance(to, list) parts = [ f'mailto:{str.join(",", to)}', ] if len(to) < 1: raise ValueError('Cannot mail to empty set of people') if subject: parts.append(f'subject={urlencode(subject)}') if body: parts.append(f'body={urlencode(body)}') if len(parts) > 1: url = parts[0] + '?' + str.join('&', parts[1:]) else: url = parts[0] return url @register.simple_tag def maillink(text, subject=None, body=None, to=[], attrs=None): url = mailurl(subject=subject, body=body, to=to) if not attrs: attrs = '' mezera = ' '*bool(attrs) full_link = f'{text}' return mark_safe(full_link)