16 апр. 2011 г.

Вывод SVN ревизии проекта в заголовке страниц - django middleware

Пост совершенно тупой, но совсем не писать в блог нельзя :).
В позапрошлом посте я выкладывал context_processor в версией subversion ревизии корня проекта. Минус в том, что об этой переменной надо помнить, её нужно прописать в шаблон. С прослойками все проще, написал, подключил, забыл.
Нижеследующий код дописывает к заголовку страницы ревизию проекта:

# -*- coding: utf8 -*-

from django.utils.version import get_svn_revision
from django.conf import settings


class SubversionRevInTitle:
    def process_response(self, request, response):
        if response.content:
            response.content = response.content.replace('', \
                 str(': ' + get_svn_revision(getattr(settings, \
                                              'PROJECT_ROOT')) + ''))
        return response

3 апр. 2011 г.

Ревизия SVN проекта в django

Несколько месяцев назад по блогам джангистов прокатилась волна статей про автоматическое развертывание дев и продакшн версий проектов. Один из вариантов, на изучение которого я тратил свое время - subversion hooks - всем хорош, но иногда вытягивание зависимостей и обновление модулей занимает столько времени, что становится не понятно на какую версию страницы дев-сервера ты собственно сейчас смотришь.
Как вариант можно использовать встроенную в Django "утилитку" для получения svn ревизии в качестве context processor'а. Код будет выглядеть так:

from django.utils.version import get_svn_revision
from django.conf import settings


def revision(request):
    path = getattr(settings, 'PROJECT_ROOT', '.')
    return {'svn_revision': get_svn_revision(path)}