26 апр. 2010 г.

i18n для tiny_mce

Друзья, сегодня я потратил 2 часа своей жизни на поиск решения проблемы, виной которой была кривая транслитерация на русской tiny_mce. Файл tinymce/jscripts/tiny_mce/themes/advanced/langs/ru.js безбожно закосячен. С его легкой руки в advanced теме видны арабские письмена, суть которых понять невозможно.

Найти виновного и оторвать яйца – первое желание, сменившееся на данный момент апатией.

UPD (12.05.2010): взял с офф.сайта новую русификацию от  сегодняшнего числа – все работает отлично. Превед разработчикам!




16 апр. 2010 г.

Смотрим SQL запросы в Django

А Вы знали, что SQL-запросы в джанго можно смотреть так?

Версия 1.1 и ниже:


# В django 1.1 и ниже:



>>> from foo.models import Bar

>>> Bar.objects.get(pk=1)

<Bar: Bar object>

>>> from django.db import connection

>>> connection.queries

[{'time''0.071''sql'u'SELECT "foo_bar"."id", "foo_bar"."name", "foo_bar"."age", "foo_bar"."created" FROM "foo_bar" WHERE "foo_bar"."id" = 1 '}]



# А в 1.2 будет так:



>>> from foo.models import Bar

>>> str(Bar.objects.filter(name='Mike').query)

'SELECT "foo_bar"."id", "foo_bar"."name", "foo_bar"."age", "foo_bar"."created" FROM "foo_bar" WHERE "foo_bar"."name" = Mike '


* Пример с DjangoAdvent, если ещё не читали – прочтите!

11 апр. 2010 г.

PyDev и Django

В связи с переездом, как я и писал ранее, все на свете произошло без моего ведома. Вот и ещё один пример: PyDev обзавелся поддержкой django. По ссылке далее интересная статья о фичах новой версии PyDev.

Коротко:

  • Можно создавать джанго проекты, используя контекстное меню IDE
  • Можно вызывать основные команды пряямо в IDE (syncdb, test, shell)
  • Можно запускать как django-проект (IDE найдет manage.py и допишет к нему runserver)

- мелочи кончено, но приятно.

Сам я пользуюсь Aptana, но там естественно, PyDev тоже обновился и все указанное поддерживает. Всем советую попробовать!

10 апр. 2010 г.

Хитрое наследование в шаблонах django

В одном из постов увидел пример “техники”, который раньше использовал в проекте с большим кол-вом приложении и шаблонов. Суть в использовании “прокси-шаблонов” между базовым и конченым шаблонами.

Например, для следующей структуры приложении

  • apps
    • common
    • blogs
    • news
    • etc…

Подготовлена следующая структура шаблонов:

  • templates
    • base.html (страница с разметкой на блоки, в блоках default контент)
    • index.html (сетка главной)
    • page.html (для страниц с placeholder’ами для django-cms)
    • news
      • news_base.html (прокси шаблон для новостей с названием раздела, например; наследуется от base.html)
      • news_list.html (наследуется от news_base.html)
      • new_detail.html (наследуется от news_base.html)
      • etc…
    • blogs
      • blogs_base.html (-||-||-)
      • blog_post.html (-||-||-)
      • etc…

Под наследованием шаблонов, естественно, понимается использование инструкции {% extends %}. Такие конструкции могут быть весьма полезны при использовании “местных” библиотек и стилей в разделе, приложении для публикации баннеров с делением по разделам и пр.

Например использование “местных” библиотек и стилей можно реализовать следующим образом:


<!-- base.html -->

{% spaceless %}{% load i18n %}<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

    <head>

        <title>{% block title %}{% trans 'Мой супер сайт' %}{% endblock %}</title>

        <link href="{{ MEDIA_URL }}styles.css" rel="stylesheet" type="text/css">

        <!--[if IE 6]>

        <style>

        .my-div {width: 100px;}

        </style>

        <![EndIf]-->


        {% block extrahead %}

        <link rel="icon" href="{{ MEDIA_URL}}bitmaps/favicon.ico" type="image/x-icon">

        <link rel="shortcut icon" href="{{ MEDIA_URL}}bitmaps/favicon.ico" type="image/x-icon">

        {% endblock %}

    </head>

<body>



<!-- base_news.html -->

{% extends 'base.html' %}

{% block extrahead %}

        <script type="text/javascript" src="{{ MEDIA_URL }}tinymce/jscripts/tiny_mce/tiny_mce.js"></script>

        <link href="{{ SITE_MEDIA_URL }}menu.css" rel="stylesheet" type="text/css">

        <link rel="icon" href="{{ MEDIA_URL}}bitmaps/news_favicon.ico" type="image/x-icon">

        <link rel="shortcut icon" href="{{ MEDIA_URL}}bitmaps/news_favicon.ico" type="image/x-icon">

{% endblock extrahead %}


Однако я так уже давно не пишу – стараюсь использовать django-compress везде, где только можно.

Для добавления дополнительных скриптов и стилей в наследниках base_news.html можно использовать инструкцию {{ block.super }} внутри блока extrahead.

А Вы используете такие фишечки в своих джанго проектах?

9 апр. 2010 г.

Тюмень: с 15 апреля цена за одну поездку в автобусе повышается с 12 до 14 рублей.

По ссылке материал Олеси Смирновой о доблестных надзирателях за транспортом в Тюмени. У скотника уже было несколько постов о предстоящей реформе…




Django 1.2

В расписании выпуска версии Django 1.2 уже 4-ое изменение. Я тут немного “выпал из обоймы” в связи с переездом в новый офис и был весьма удивлен, что, оказывается, уже четвертый раз меняют дату релиза. Теперь она – 26 апреля. Пишут, что тикеты больше исправлять не станут, до 26-го, видимо, только тесты и багфиксы, что само по себе очень приятно.

С момента выхода 1.0 я сижу только на стабильных релизах, так уж повелось… А Вы, Пользуетесь trunk’ом?