Решил просто не копипастить… я сразу кинуть ссылку… Многие в этой статье найдут своих начальников.
http://habrahabr.ru/blogs/pm/41843/
Programming by Python, JavaScript, ActionScript, PostgreSQL, MySQL for Game Creation and Web Develop. Also about Open Source, Debian and Project Management.
Решил просто не копипастить… я сразу кинуть ссылку… Многие в этой статье найдут своих начальников.
http://habrahabr.ru/blogs/pm/41843/
Небольшой экскурс, и наверняка его все знают. Связка урл-обработчик задается в файлике urls.py. Ссылка на этот файлик лежит в сеттинге. Если к примеру мне необходимо перед каждым запуском выполнять какой либо код, то мне необходимо создать MIDDLEWARE_CLASSES, и передать его в тех же сеттингах. Но проблема в том, что этот миддл класс будет действовать вообще на все урлы. А если вы ходите подключить сторонний аплет через include, а ему нужен еще один миддлеваре, а если вы еще начнете друг другу мешать… Система не идеальна. Я хочу предложить или попробовать свое решение.
Есть функция patterns, в нее передается собственно все связки. Идея в том, что можно эту функцию заменить на другую, в которую будут передаваться еще один параметры – ссылка на функцию, которая будет вызываться перед всеми урлами этого блока. Решение довольно простое, как по мне. Ниже приведен текст модуля.
Теперь вместо patterns используем newpatterns. Итого использование выглядит примерно так:
Сразу видно ограничение:
1. Нельзя использовать вместо ссылок на функции текст функции. На самом деле я на этом просто пока не заморачивался. Это пока просто принципиальная схема.
2. Если будет какая либо вложенность блоков в виде инклюда, то функция before_all на них распространятся не будет. Хотя, это с другой стороны и плюс тоже.
Не сложно догадаться, что также можно расширится на aftrer. И вообще кухня получилась довольно расширяемая.
На этом пока все. От вас ждем конструктивную критику. полный архив проекта выкладываю сюда.
Tags: django, my futures, Python
Сегодня залил новые обновки на свой WP
* новый дизайн
* Граватар
* Опенайди
* капчу в комментах
* СЕО фикчи всякие
Исходный материал – это Fedora Core 6 ( но и на 8ой я тестил – работает) и MSSQL 2000
Сразу скажу, что в перле нет DBD::MSSQL, лично у меня – это сразу паника. Ну ничего. Есть такая умная штука как ODBC (Open DataBase Connectivity) она была создана именно для того, чтоб универсализировать доступ к различным типам баз данных, и по сути из себя представляет интерфейс. Я когда в буйной молодости кодил под винду, то сталкивался с этим, но тогда особо не заморачивался на тему «что оно такое?», и «как работает?». Так вот в линуксе есть подобная штука. Называется она unixODBC. ЕЕ и ставим.
Устанавливаем unixODBC.
Единственная проблема, что стандартные сошники есть только для MySQL и PostgreSQL. А на официальном сайте я нашел драйвер для Microsoft SQL Server – он прям там красуется на первом месте, но не могет не смущать надпись «Download free trial from…»
В этом случае спасает FreeTDS – это и есть те самые библиотеки для общения с Microsoft SQL Server и Sybase. И с ним тоже при установке не должно быть никаких проблем.
Не забываем поставить модуль для DBI.
дальше добавляем конфиг
в файл /etc/odbcinst.ini
На этом конфигурация закончена. В перле это происходит так:
Меня тут долго не было… Ремонт… Новая работа… Кучу всего свалилось… Даже за сервак забыл заплатит. Так что спасибо Гугу, напомнил.
В первой части я рассказывал, как авторизовать человека по OpenID. В этой части я хотел предоставить свое виденье того, как это можно привязать к стандартной джанговской авторизации. Апп можно скачать тут
Кроме того, что мы хотим узнать, что текущий пользователь на сайте авторизуется через OpenID. Мы хотим его авторизовать по всем правилам Django. И чтобы авторизированный пользователь через OpenID был таким же как и через стандартную Django авторизацию. Т.е. попробуем прижить вместе несколько авторизаций.
Через массив бекендов у меня так и не получилось. Т.к. я хотел, чтоб у них был общий айдишник, и чтоб хранились они в общей таблице. Поэтому я просто расширил базовую авторизацию дополнительным функционалом. В последствии даже попробовал установить openid к уже рабочему проекту.
Для определения, к какой авторизации принадлежит я пользователя привязывал к группе. Название группы, к которой я привязывал пользователя можно положить в настройки проекта OPENID_GROUP по умолчанию это значение OpenID.
Код и условия далеко не идеальны, так что с удовольствием выслушаю конструктивную критику и предложения по изменению.
Сначала опишу процесс установки. На готовое, живое приложение.
1. Распаковываем файлы из архива в любую папку вашего проекта. К примеру в openidconsumer.
2. В установленные приложения проекта (INSTALLED_APPS) устанавливаем новое ‘openidconsumer’
3. Заменяем бекенд авторизации на наш наследник от базавого.
4. В файле settings.py установим имя группы, которое будет определять, что пользователь авторизируется через OpenID. OPENID_GROUP = ‘openid_auth’;
5. Делаем инсерт в таблицу групп . По умолчанию у нее значение auth_group.
6. В урлсы проекта urls.py прописываем урл, с которого будет проходить авторизация.
Параметром on_success – мы указываем какая функция будет вызвана в случае удачной авторизации.
7. Пишем обработчик этой функции:
тут все просто – либо идет редирект на /edit_profile/, в случае если пользователь зашел под своим OpenID url впервые , либо перебрасываем на главную
Если вы обратили внимание, то я убрал мидвере класс из предыдущего описания. В принципе там была передача в объект реквеста параметра OpenID. Я же ее добавил в объект юзера.
В принципе в зависимости от предыдущего описание модуля для работы с OpenID. Добавился файл exauth.py в котором и происходит расширение возможностей базавой авторизации и добавлены некоторые полезные функции.
Наверно все знают, что 6ого октября, тобиш завтра пройдет конференция, на тему организаций построений приложений с высокими нагрузками HighLoad++.
Лично для меня это было очень ожидаемое событие, но попасть на него я так и не смогу. но к счастью для меня онлайн трансляция будет вестись на Smotri.com.
Но что то мне подсказывает, что и в трансляцию я поглядеть не смогу. Так что есть возможность потестить тулсовину для этих целей HTTP Ripper. Если и с ней будет облом, то последняя надежда, что где то, возможно на том же Smotri.com будет выложено видео.
Tags: conference, highload, Internet, news, video
Recent Comments