Package: django-misc
django-miscDjango miscis module with set of utilities, decorators, templatetags that everybody uses at least once in project.
So here they all in one application, that will grow to aggregate all usefull utilities for Django.Contentsdjango-miscQuick overviewRequirementsInstallationSetupUse django-miscTemplate tags{% load html_tags %}{% load misc_tags %}json_encodeJSONTemplateResponsejson_encodejson_responsejson_templateContext processorsViews utilsserver_errordecorator to_template or render_toHttpResponseReloadstr_to_classget_alphabetsManagement utilshandle_locksync_siteHTML utilsclear_html_codegeneratorContributingLicenseQuick overviewHere you’ll find:Couple decorators, like render_to and receiveJson_encode module for simplify work with jsonSome usefull templatetags, like set, filter, get etcSome additional utilitiesBbcode template tagsTemplate tags that provide like and share for social sevicesRequirementspython >= 2.5pip >= 0.8django >= 1.2Optional (for html clearing and bbcodes):BeautifulSoupgit+git://github.com/frol/postmarkup.gitInstallationDjango miscshould be installed using pip:pip install git+git://github.com/ilblackdragon/django-misc.gitor for stable version:pip install django-miscSetupAdd ‘misc’ to INSTALLED_APPSINSTALLED_APPS += ( 'misc', )If you want to use the html clearerpip install BeautifulSoupIf you want to use bbcodespip install git+git://github.com/frol/postmarkup.gitUse django-miscTemplate tags{% load html_tags %}{% remove_tags <text> %}Removes html tags and replace <br/> by n{% load misc_tags %}{{ text|cutafter:"<length>" }}Cut text after <length> characters and, if necessary, add tree dots (…) to the end{% get_range <length> %}Return simple python range(<length>) list{% get_element <dict> <key1> [<key2>] %}Return a dict value by key1 and, if specified, key2 (i.e. dict[key1][key2])json_encodeJSONTemplateResponseIt works like TemplateResponse, but return JSON responsein view.py:...
return JSONTemplateResponse(request, template_name, template_context, data={'status': 'ok', 'user': request.user})This line will create response{
    "status": "ok",
    "user": {
        "username": "frol",
        "first_name": "",
        "last_name": "",
        "is_active": true,
        "email": "qq@qq.qq",
        "is_superuser": true,
        "is_staff": true,
        "last_login": "2012-01-24 18:59:55",
        "password": "sha1$fffff$1b4d68b3731ec29a797d61658c716e2400000000",
        "id": 1,
        "date_joined": "2011-07-09 05:57:21"
    },
    "html": "<rendered HTML>"
}WARNING: Be carefull with serialization of model objects. As you can see in example, password hash has been serialized.json_encodejson_encode(data)Serialize python object into JSON string.The main issues with django’s default json serializer is that properties that
had been added to an object dynamically are being ignored (and it also has
problems with some models).json_responsejson_response(data)Serialize python object into JSON string and return HttpResponse with correct content_type (application/json)json_templatejson_template(data, template_name, template_context)Render template, add it for serialization data, serialize data into JSON string and return HttpResponse with correct content_type.Context processorsuseful_constantsIf you want use True, False, None in django templates, add line to TEMPLATE_CONTEXT_PROCESSORS in settings.py:'misc.context_processors.useful_constants',Example, A = True, B = False, C = None, D - undefined:{% if A == True %}A is True{% endif %}
{% if A == False %}A is False{% endif %}
{% if A == None %}A is None{% endif %}

{% if B == True %}B is True{% endif %}
{% if B == False %}B is False{% endif %}
{% if B == None %}B is None{% endif %}

{% if C == True %}C is True{% endif %}
{% if C == False %}C is False{% endif %}
{% if C == None %}C is None{% endif %}

{% if D == True %}D is True{% endif %}
{% if D == False %}D is False{% endif %}
{% if D == None %}D is None{% endif %}Will produce output:A is True
B is False
C is None
D is NoneViews utilsserver_errormisc.views.server_error(request)Put server_error as your handler500 in urls.py and add templates/errors/500.htmlhandler500 = 'misc.views.server_error'decorator to_template or render_toto_template(template_name=None)Decorator to simply call direct_to_template:@to_template("test.html")
def test(request):
    return {'test': 100}

@to_template
def test2(request):
    return {'test': 100, 'TEMPLATE': 'test.html'}

@to_template
def test2(request, template_name='test.html'):
    return {'test': 100, 'TEMPLATE': template_name}HttpResponseReloadutils.HttpResponseReload(request)Reload current page.def simple_view(request, form_class=CommentForm, template_name='some_template.html'):
    form = CommentForm(request.POST or None)
    if form.valid():
        form.save()
        return HttpResponseReload(request)
    return render(template_name, {'form': form})str_to_classutils.str_to_class(class_name)Returns a class based on class nameget_alphabetsutils.get_alphabets()Returns pair of english and russian alphabets.
Useful for creating filters.Management utilshandle_lockmanagement.handle_lock(handle)Decorate the handle method with a file lock to ensure there is only ever one process running at any one time.sync_sitesync_site is post syncdb event, that will sync current Site object with settings like SITE_NAME and SITE_DOMAINHTML utilsclear_html_codehtml.clear.clear_html_code(text)Clean up HTML code from tags that are not allowed. Structure of allowed tags can be found at needs.cfg.
clear.py is generated by html/generator.py with needs.cfg as config filegenerator./generator.pyWill generate clear.py source code file, according to rules specified at needs.cfg.
Example of simpler configuration file can be found in example.cfgContributingDevelopment of django-misc happens at github:https://github.com/ilblackdragon/django-miscLicenseCopyright (C) 2009-2013 Illia Polosukhin, Vladyslav Frolov
This program is licensed under the MIT License (see LICENSE)