Публикации о языке Python   страница 382

Переход на python 2.7?

На форуме дали ссылку на популярные модули для Питона, причем как для 2.6, так и 2.7. Все модули в виде exe-файлов, не надо набирать в консоли setup.py install и тому подобное. Сама ссылка очень порадовала, все необходимые мне модули там есть: pycurl, mechanize(ClientForm), Pil, и т.д.; и заставила задуматься о переходе на версию 2.7.




musicmans.ru | Как сделать сайт на Django | Пользователи. Дополнительная аутентификация

В прошлый раз мы остановились на том, что начали создавать приложение users. Давайте создадим openid аутентификацию на сайте.
Я обещал писать бекенды для django-registration, но оказалось существует замечательное приложение для всевозможных видов аутентификации с последующим созданием пользователя и авторизации.

* OpenID - yandex.ru, rambler.ru, yahoo.ru, google.com
* OAuth - twitter.com
* OpenAPI - Вконтакте.ру
* FacebookConnect - facebook.com

Устанавливаем:
c:\Python26\Scripts\pip.exe install hg+http://bitbucket.org/offline/django-p
ublicauth@7371e8f71be1#egg=django-publicauth

Прописываем в requirements.txt.
Добавляем 'publicauth' в INSTALLED_APPS. Добавляем 'annoying.middlewares.RedirectMiddleware' в MIDDLEWARE_CLASSES




musicmans.ru | Как сделать сайт на Django | Пользователи

Наконец-то мы добрались до самого сладкого. Начнем с приложения users. Мы помним, что в django, как и в python надо писать приложения, а не проекты, чтобы соблюдать принцип DRY. Это основное приложение, которое требуется почти в каждом проекте. Несмотря на то, что в django уже есть django.contrib.auth, класс models.User содержит только минимальный набор полей. Расширение полей этого класса существует в следующих вариантах.
Создадим и переключимся в ветку users.
Перед тем, как создавать приложение, создадим темплейт для сайта - base.html и поместим его в директорию /src/tem




Python datetime to javascript Date

В Django есть DjangoJSONEncoder, который используется при конвертировании данных в json-формат. Он форматирует дату в строку. Пришлось написать свой енкодер, что бы на клиенте получать обьект Date, а не строку.

Copy Source | Copy HTML
  1. from django.utils import simplejson
  2.  
  3. class DatetimeJSONEncoder(simplejson.JSONEncoder):
  4.  
  5.     class DateInt(int):
  6.         '''
            Наследуемся от int, потому что тогда значение будет без "".
            В других случаях получим: "new Date



Ковертируем текст из файла в utf8

Понадобилось читать из файлов субтитры, парсить и складывать в БД. Как всегда проблемы с кодировкой. Гугл подсказал вот такой вот модуль: сhardet.

Copy Source | Copy HTML
  1. import chardet
  2.  
  3. text = subtitles.read()
  4. text = unicode(text, chardet.detect(text)['encoding'])
  5.  



Подгрузка связанных моделей, ч.2

Собственно пылятся еще две функции, неизвестной полезности, для подгрузки связаных моделей: для GenericForeignKey и ForeignKey(null=True). Работало на Django 1.1. Думаю с небольшим "допилом" будет и на 1.2 работать. Все это делалось для комментариев. Первой ф-цией подгружали комментируемые обьекты, а второй - пользователей, которые комментировали.


Copy Source | Copy HTML
  1. def load_related_generic(object_list, field='content_object'):
  2.     if not object_list:
  3.         return object_list
  4.  
  5.     related_field = getattr(object_list.model, field)
  6.     ct_field = object_list.model._meta.get_fie



musicmans.ru | Как сделать сайт на Django | Развертывание

Я обещал выкладывать все этапы работы на http://musicmans.ru, поэтому настала пора вывесить табличку "Сайт в разработке" :), заодно наладив работу развертывания.

Итак, задачи: создать приложение по вводу сайта в режим обслуживания, настроить сервер, автоматизировать процесс развертки на сервер с помощью fabric.

Вспомним о том, что у нас есть redmine и mylyn, создадим данные задачи (не забываем создать категории задач в настройках проекта в redmine).

django-maintenancemode

Для ввода сайта в режим обслуживания есть целое приложение.

Устанавливаем:


C:\>c:\Python26\Scripts\pip.exe install django-maintenancemode
Downloading/unpacking django-maintenancemode



Django 1.2.1 и load_related_m2m

Интро Думаю, многие из нас занимались оптимизацие загрузки данных из полей ManyToManyField. Задача для оптимизации проста: есть коллекция объектов с некоторым полем (полями) М2М. Необходимо выбрать данные для поля М2М одним запросом, т.е. не выполнять для каждого объекта из коллекции отдельный запрос, по загрузке однотипных данных. Думаю, многие для этого писали собственные функции, я же [...]




В четверг в Одессе, в субботу в Киеве

Завтра приму участие в Яндекс конференции.

Онлайн трансляция будет тут


В субботу в Киеве. Вот анонс который прислал Сергей.

Вітаю!

Цього тижня, у суботу відбудеться зустріч Kyiv GTUG,
київської групи користувачів технологій Google. На цей раз до нас
знову завітає Кріс Шабо, який працює над соціальними сервісами у офісі
Google у Маунтін-В'ю, і розкаже про Buzz API, який було представлено
на конференції Google I/O в травні. Будь ласка, ознайомтеся з його
виступом на цій конференції:
http://code.google.com/events/io/2010/sessions/google-buzz-apis.html

Також Михайло Кашкін продовжить цикл лекцій про Google App Engine.
Також раджу подивитися його попередні виступи:



Одесса FOSS: результаты

Имел несчастье принять участие в качестве докладчика на Одесском FOSS'е организованном Дмитрием Сподарцем. И вот сейчас кажется история сделала оборот и могу со стороны выссказать свое мнение о событии и организации и самой конференции.

Сравнивать буду с GTUG конференцией которую организовал Сергей Каук, и PyCamp организованную 42 Coffee Cups. К этим организаторам есть 2 несущественные претензии: Сергей почему-то думал, что он что-то не успел или сделал не достаточно хорошо (все было отлично), а оператор PyCamp'а отрезал смешной экспромт до начала выступления (видео с ним появилось на пару дней позже). Все было отлично, искреннее уважение к организаторам с удовольствием приму участие в их следующих мероприятиях.

WebCamp был сделан на порядок хуже. У меня было 2 условия: быть не первым и иметь видео. После первой встречи и этих договоренностей возникла тишин