Django grouper і None

Проблемка тут описана.

Рішення:
        {% if news_date.grouper %}
            {% if forloop.parentloop.first and forloop.first %}
                {{ news_date.grouper }}
            {% else %}
                {{ news_date.grouper }}
            {% endif %}
        {% else %}
            Сьогодні
        {% endif %}

Ставимо кастомний mysql на Ubuntu

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install build-essential checkinstall libncurses5-dev curl
curl --o mysql-4.1.24.tar.gz http://mirror.provenscaling.com/mysql/community/source/4.1/mysql-4.1.24.tar.gz
sudo tar -xvzf mysql-4.1.24.tar.gz --directory=/usr/local/src
cd /usr/local/src/mysql-4.1.24/
sudo groupadd mysql
sudo useradd -g mysql mysql
sudo apt-get install
sudo ./configure --prefix=/usr/local/mysql
sudo make
sudo mkdir /usr/local/mysql
sudo mkdir /usr/local/mysql/include
sudo mkdir /usr/local/mysql/include/mysql
sudo mkdir /usr/local/mysql/lib
sudo mkdir /usr/local/mysql/lib/mysql
sudo mkdir /usr/local/mysql/share
sudo mkdir /usr/local/mysql/man
sudo mkdir /usr/local/mysql/mysql-test
sudo checkinstall
    y
    mysql-server 4.1.24
dpkg -l | grep -i mysql
sudo cp support-files/my-medium.cnf /etc/my.cnf
cd /usr/local/mysql/
pwd
bin/mysql_install_db --user=mysql
sudo chown -R root .
sudo chown -R mysql var
sudo chgrp -R mysql .
bin/mysql --version
bin/mysql_install_db --user=mysql
sudo bin/mysqld_safe user=mysql &

Очистка HTML від зайвих тегів та атрибутів

Один з напрямків моєї роботи - контент менеджмент (іншими словами, набивка сайтів інформацією). Коли на сайт потрібно закинути звичайний текст з абзацами, все просто і швидко відбувається, а коли потрібно копіпастнути якусь табличку, приміром, взяту з іншого сайту, то це займає багато часу, так як мені потрібен чистий HTML-код без зайвих тегів та атрибутів, щоб жодним чином копіпаст не впливав на дизайн мого сайту. Раніше користувався автозаміною на "пустоту", але це теж не вихід. Сьогодні мене остаточно трафили шляки і вирішив повністю автоматизувати процедуру але для командної стрічки. Є ідея зробити онлайн сервіс, яким зможуть користуватись такі самі контент менеджери як і я. Питання лише, чи дійсно комусь це може полегшити життя? Це можна оформити у вільному доступі на веб-сайті з кількома формами, галочками і пімпочками та миттєвим результатом-відфільтрованим HTML-текстом.

Тепер наглядно поясню принцип роботи скрипта, написаного на Python

Є кусок HTML:

Необхідно забрати теги: a, p, span, div, strong
і атрибути: class, width, cellspacing, cellpadding, border

Код програми:
from lxml import etree
from lxml import html as lxml_html
from lxml.html import clean, fromstring, tostring, _transform_result, copy

remove_attrs = ['class', 'width', 'cellspacing', 'cellpadding', 'border']
remove_tags = ['a', 'p', 'span', 'div', 'strong']
nonempty_tags = []

class MyCleaner(clean.Cleaner):
    def clean_html(self, html, parser=None):
        result_type = type(html)
        if isinstance(html, basestring):
            doc = fromstring(html, parser=parser)
        else:
            doc = copy.deepcopy(html)
        self(doc)
        return _transform_result(result_type, doc)

cleaner = MyCleaner(remove_tags=remove_tags, page_structure=False)

def squeaky_clean(html):
    parser = lxml_html.HTMLParser(encoding='utf-8')

    clean_html = cleaner.clean_html(html, parser)
    root = fromstring(clean_html)
    context = etree.iterwalk(root)

    for action, elem in context:
        clean_text = elem.text and elem.text.strip(' \t\r\n')

        if elem.tag in nonempty_tags and \
        not (len(elem) or clean_text):
            elem.getparent().remove(elem)
            continue
        elem.text = clean_text

        for badattr in remove_attrs:
            if elem.attrib.has_key(badattr):
                del elem.attrib[badattr]

    return tostring(root, encoding='ISO-8859-1')

html = squeaky_clean(DATA)
print html
І на виході маємо результат: