2011-07-31 10:46:29 +02:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
2013-03-14 23:26:41 +01:00
|
|
|
import difflib
|
2014-04-27 21:01:23 +02:00
|
|
|
import roman
|
2011-09-02 20:46:24 +02:00
|
|
|
|
2012-07-10 13:19:12 +02:00
|
|
|
from django.contrib.auth.models import Permission
|
2013-09-25 12:53:44 +02:00
|
|
|
from django.shortcuts import render_to_response
|
2011-07-31 10:46:29 +02:00
|
|
|
from django.template import RequestContext
|
|
|
|
|
2013-09-25 12:53:44 +02:00
|
|
|
from .signals import template_manipulation
|
2011-07-31 10:46:29 +02:00
|
|
|
|
2012-02-09 02:29:38 +01:00
|
|
|
|
2011-07-31 10:46:29 +02:00
|
|
|
def template(template_name):
|
2012-11-24 01:42:10 +01:00
|
|
|
"""
|
|
|
|
Decorator to set a template for a view.
|
|
|
|
|
|
|
|
Deprecated. Use class based views instead.
|
|
|
|
"""
|
2013-09-25 12:53:44 +02:00
|
|
|
# TODO: Write the login page an the usersettings page with class based views
|
|
|
|
# Remove this function afterwards
|
2011-07-31 10:46:29 +02:00
|
|
|
def renderer(func):
|
2012-03-18 17:11:58 +01:00
|
|
|
def wrapper(request, *args, **kwargs):
|
|
|
|
output = func(request, *args, **kwargs)
|
2011-07-31 10:46:29 +02:00
|
|
|
if not isinstance(output, dict):
|
|
|
|
return output
|
2012-03-18 17:11:58 +01:00
|
|
|
context = {}
|
2012-11-24 14:01:21 +01:00
|
|
|
template_manipulation.send(
|
|
|
|
sender='utils_template', request=request, context=context)
|
2012-03-18 17:11:58 +01:00
|
|
|
output.update(context)
|
2012-11-24 14:01:21 +01:00
|
|
|
response = render_to_response(
|
|
|
|
template_name, output, context_instance=RequestContext(request))
|
2011-09-10 00:16:39 +02:00
|
|
|
if 'cookie' in output:
|
|
|
|
response.set_cookie(output['cookie'][0], output['cookie'][1])
|
|
|
|
return response
|
2011-07-31 10:46:29 +02:00
|
|
|
return wrapper
|
|
|
|
return renderer
|
|
|
|
|
|
|
|
|
2012-04-14 14:31:09 +02:00
|
|
|
def delete_default_permissions(**kwargs):
|
2012-07-10 13:19:12 +02:00
|
|
|
"""
|
|
|
|
Deletes the permissions, django creates by default for the admin.
|
|
|
|
"""
|
2013-09-25 12:53:44 +02:00
|
|
|
# TODO: Create an participant app which does not create the permissions.
|
|
|
|
# Delete this function afterwards
|
2011-07-31 10:46:29 +02:00
|
|
|
for p in Permission.objects.all():
|
2012-11-24 14:01:21 +01:00
|
|
|
if (p.codename.startswith('add') or
|
|
|
|
p.codename.startswith('delete') or
|
|
|
|
p.codename.startswith('change')):
|
2011-07-31 10:46:29 +02:00
|
|
|
p.delete()
|
2011-09-02 20:46:24 +02:00
|
|
|
|
2012-02-09 02:29:38 +01:00
|
|
|
|
2013-09-25 12:53:44 +02:00
|
|
|
def html_strong(string):
|
2011-09-02 20:46:24 +02:00
|
|
|
"""
|
2013-09-25 12:53:44 +02:00
|
|
|
Returns the text wrapped in an HTML-Strong element.
|
2011-09-02 20:46:24 +02:00
|
|
|
"""
|
2012-07-07 10:35:29 +02:00
|
|
|
return u"<strong>%s</strong>" % string
|
2013-03-14 23:22:11 +01:00
|
|
|
|
|
|
|
|
2013-03-15 02:14:15 +01:00
|
|
|
def htmldiff(text1, text2):
|
2013-09-25 12:53:44 +02:00
|
|
|
"""
|
|
|
|
Return string of html diff between two strings (text1 and text2)
|
|
|
|
"""
|
2013-03-14 23:22:11 +01:00
|
|
|
diff = difflib.HtmlDiff(wrapcolumn=60)
|
2013-03-15 02:14:15 +01:00
|
|
|
return diff.make_table(text1.splitlines(), text2.splitlines())
|
2013-08-04 12:59:11 +02:00
|
|
|
|
|
|
|
|
2013-09-25 12:53:44 +02:00
|
|
|
def int_or_none(var):
|
|
|
|
"""
|
|
|
|
Trys to convert 'var' into an integer. Returns None if an TypeError occures.
|
|
|
|
"""
|
2013-08-04 12:59:11 +02:00
|
|
|
try:
|
2013-09-25 12:53:44 +02:00
|
|
|
return int(var)
|
|
|
|
except (TypeError, ValueError):
|
2013-08-04 12:59:11 +02:00
|
|
|
return None
|
2014-04-27 21:01:23 +02:00
|
|
|
|
|
|
|
|
2014-05-04 13:41:55 +02:00
|
|
|
def to_roman(number):
|
2014-04-27 21:01:23 +02:00
|
|
|
"""
|
|
|
|
Converts an arabic number within range from 1 to 4999 to the corresponding roman number.
|
|
|
|
Returns None on error conditions.
|
|
|
|
"""
|
|
|
|
try:
|
|
|
|
return roman.toRoman(number)
|
|
|
|
except (roman.NotIntegerError, roman.OutOfRangeError):
|
|
|
|
return None
|