from django.utils.http import urlquote from django.core.urlresolvers import reverse from django.utils.translation import ugettext_lazy as _ import re class CONTENT_TYPE: TEXT_PLAIN = 'text/plain' TEXT_HTML = 'text/html' choices = (('text/plain', _('plain text')), ('text/html', _('HTML'))) subtype_choices = (('plain', _('plain text')), ('html', _('HTML'))) types = ['text/plain', 'text/html'] subtypes = ['plain', 'html'] class CONTENT_SUBTYPE: PLAIN = 'plain' HTML = 'html' def format_url_params(**kwargs): """ return http param string. example: format_url_params(a=1, b=2) return 'a=1&b=2' """ return '&'.join(['%s=%s' % (urlquote(k), urlquote(v)) for k, v in kwargs.items()]) def format_url(url, **params): """ format url with params. Example: format_url('http://yandex.ru/yandsearch', text=abc) will returl 'http://yandex.ru/yandsearch?text=abc' """ return url + '?' + format_url_params(**params) def format_url_full(site_url, reverse_name, reverse_kwargs={}, GET_kwargs={}): """ format full url with reverse and passing GET-params """ local_url = reverse(reverse_name, kwargs=reverse_kwargs) return format_url("http://%s%s" % (site_url, local_url), **GET_kwargs) URL_RE1 = r"(\b(http|https)://([-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|]))" URL_RE2 = r"((^|\b)www\.([-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|]))" def link_urls(text): return re.sub(URL_RE2,r'\1', re.sub(URL_RE1,r'\1', text))