Имеем: django, grappelli, tinymce и файловый браузер. Файловый браузер доступен по /admin/filebrowser/browse/. Чтобы не вводить каждый раз руками, само собой, захотелось добавить ссылку на файловый менеджер в админку Django.
Честно говоря, уже не помню, какой способ предлагали использовать в официальной документации, помню только, что он не работал =) В Интернете советуют скопировать файл index.html (и потом в него уже вносить изменения) из каталога django/contrib/admin/templates в каталог admin, который перед этим надо создать в каталоге с шаблонами.
Этот способ работает, но если у вас используется grappelli, то после копирования index.html админка будет выглядеть убого. Так вот в таком случае index.html надо брать не из джанги, а из grappelli. В моем случае это выглядит так:
Теперь в этот файл вручную можно добавить пару нужных ссылок.
Прямо перед этими строками
{% else %}
{% trans "You don´t have permission to edit anything." %}
{% endif %}
Я добавил вот что:
<!-- СВОИ ССЫЛКИ -->
<div class="module">
<h2>Дополнительные ссылки:</h2>
<div class="row">
<a href="filebrowser/browse/">Файловый менеджер</a>
<ul class="actions">
</ul>
</div>
</div>
Способ, возможно, не самый красивый, зато работает ;)
Итак, вы зарегистрировались на dealextreme.com (можно и без регистрации, но не желательно), накидали товара в корзину и хотите оформить заказ. Как это сделать? На странцие корзины видно, что можно оплатить через PayPal, а можно просто через кредитную карту (visa electron не подойдет, т.к. у нее нету проверочного кода). Способ оплаты через PayPal рекомендуется потому, что в таком случае вся информация о вашей карте передается только PayPal, а он уже передает денюжку к dealextreme.com. Это более безопасно, чем давать всю информацию по кредитке китайцам из dealextreme.com.
Так получилось, что моя кредитка - Visa Electron. Через нее нельзя осуществлять платежи в Сети, потому-что у нее отсутствует проверочный код из 3х или 4х символов. Поэтому я пошел к ближайшему терминалу QIWI, залогинился в свой QIWI кошелек и внес 1000руб на свой счет. Кстати, при внесении суммы от 500руб, комиссия у QIWI не взымается. Если менее 500руб, то комиссия будет довольно большая. После этого я пошел домой, зашел на сайт w.qiwi.ru и в разделе "VISA" приобрел (нахаляву) карту VISA virtual. Visa virtual это карта, предназначенная исключительно для покупок в Сети, которая имеет относительно короткий срок годности (несколько месяцев).
После регистрации карты visa virtual мне пришла смс-ка с ее реквизитами и проверочным кодом, необходимым для осуществления платежей в Сети. Далее, я с qiwi кошелька перевел средства на эту карту. Комиссия там 2.5%, поэтому вместо 1000руб зачислилось 975руб.
Далее, я зарегистрировался на paypal.com, указал всю необходимую информацию о себе и добавил туда свою visa virtual. PayPal для проверки валидности снимает $1.95 с карты, а после завершения проверки возвращает их обратно. Они так и говорят "мы снимем с вашей карты $1.95". Однако, было снято $2.95 (после этого на моей карте осталось 896руб) . Одно списание со счета в 1 доллар и второе - в 1.95. Как я понял, это комиссия за работу с неСША-шными банками. В после списания мне пришла смс-ка с уведомлением и информацией, в которой содержался проверочный код типа PP*1234CODE. Этот код (точнее, 4 цифры) надо ввести на сайте paypal для проверки подлинности карты. После этого они должны вернуть снятые $1.95.
Сама проверка подлинности моей visa virtual в paypal прошла в течение нескольких минут, но деньги обратно пока не отдали. Есть предположение, что вернут они $1.95 но за перевод снова спишут $1 (комиссия за работу с неСША-шными банками). А может и не спишут, посмотрим.
***
Впрочем, возврата денег можно и не дожидаться, ведь карта уже проверена и уже можно оплачивать заказ через paypal. Идем в корзину на dealextreme, выбираем стандартный способ оплаты через paypal и попадаем на страницу оформления заказа.
При регистрации в paypal надо указывать свой адрес латинскими символами. При оформлении заказа по умолчанию будет использоваться этот адрес в качестве адреса доставки, но при желании его можно изменить. По крайней мере его надо перепроверить :) Мой адрес был в таком виде:
Imya Familiya
ulitsa Takaya-to, dom 123, kvartira 456
Gorod, oblast'
123123
Russia
Собственно, адрес в любом случае лучше указывать латиницей, т.к. теоретически у китайцев могут возникнуть проблемы с кирилицей.
Сумма моего заказа - 43 доллара. Если переводить в рубли, то будет около 1210руб (ниже - более точная сумма). Понятно, что не хватит (у меня на счету 896руб) и придется докинуть три сотни, но ради эксперимента я попробую оплатить ;)
Чуть ниже адреса доставки вы увидите что-то вроде
1,235.29 RUB
Выделенная жирным сумма - сумма, которая необходима для оплаты платежа. Я нажал кнопку "Pay Now" и, разумеется, получил сообщение о невозможности оплатить заказ этой картой, ведь на ней недостаточно средств. Сразу после этого мне пришла уведомительная смс-ка, в которой говорилось о нехватке 339руб. Проверяем: пайпал говорит, что требуется 1235руб; у меня на счету 896руб; 1235 - 896 = 339. Все верно.
***
Итак, я пополнил баланс visa virtual на недостающую сумму и оплатил заказ dealextreme.com через PayPal. Теперь на странице своего аккаунта на dealextreme.com можно наблюдать за состоянием заказа. Сейчас статус заказа - "Order Received". Будем ждать.
С тех пор, как я наткнулся на сайт dealextreme.com, я понял, что в Сети на самом деле можно очень дешево покупать различные вещи. Решил написать эту статью я по той причине, что у многих людей возникает куча вопросов вроде как оплачивать покупку на dealextreme?,как заказывать на dealextreme? и т.д.
Для тех, кто не знает, dealextreme это китайский интернет магазин, в котором за очень малые деньги можно купить кучу самых разных товаров. Помимо низких цен, у dealextreme есть еще одно преимущество: совершенно бесплатная доставка (на самом деле, $0.01).
Товары самые разные: мобильные телефоны, кабели для iphone, mp3-плееры, фонари, usb-фиговины, spy-видеокамеры, вебкамеры, gps-навигаторы, мультиметры, аккумуляторы, рации, охотничьи ножи, костюмы супергероев, клавиатуры и сниматели стресса в форме титьки. Вобщем, глаза разбегаются =)
Товар можно не покупать вслепую, а основываться на рейтинге, комментариях и видео, оставленных пользователями, купившими этот товар.
Сам я на момент написания статьи только собираюсь купить несколько вещей на сумму около 1000руб. Только лишь расхваливать данный ресурс я не собираюсь, так что если будут какие-то заминки, то вы о них узнаете. Поэтому статья будет интересна тем, кто тоже только собирается сделать заказ на dealextreme. Вторую часть статьи с продолжением ищите на этом блоге.
Решил сегодня прокатиться за город к какому-нибудь пруду и позагорать. Т.к. друзья заняты, то поехал один. Поехал через Ясную Поляну на Груманты. Очень надеялся, что моя аллергия прошла.
Оказалось, она в самом разгаре. Доехал, шмыгая носом, до пруда, развалился на солнышке. Лежу и думаю, что надо было взять больше носовых платков :) Через 15мин почувствовал, что глаза начало щипать. Посмотрел в зеркало - глаза ВСЕ красные, будто перцовым балончиком пшыкнули. Сфоткал бы, но фотоаппарат не взял. Понял, что это не к добру, собрал манатки и поехал обратно.
А аллергия у меня зачетная: на все, что цветет в средней полосе России. Может и на остальное тоже, но не проверяли. Лекарства почти не помогают. Плюс аллергия на пыль (ингалятором редко пользуюсь, но на всякий случай он всегда лежит в рюкзаке).
Недавно я решил переписать несколько своих bash-скриптов на Python и столкнулся с задачей - как заставить Python раскрашивать текст? Способов несколько, в том числе будет работать и способ, применяемый в bash для раскраски текста, но удобнее будет использовать готовый модуль.
Модуль называется termcolor и лежит тут . Пример использования:
В эту пятницу с mtbtula.ru проводилась ночная велопокатушка. Поездили отлично, особенно запомнился обратный путь - ночь, полная тьма (ну с фонарем то не полная), едешь по проселочной дороге сначала по полю, потом немного по лесу. Ощущения незабываемые!
Фотка с площади (некоторые еще не приехали, ждем их), я тут тоже есть, но не скажу, где :Р
А сегодня (в воскресенье) накатал 80км за один день (43км в один конец и чуть поменьше - на обратном пути). Пусть кому-то это мало, но мне, поверьте, - много! :) Кстати из Щекино в Тулу очень легко ехать. Вот такой незаурядный маршрут:
Помнится я смеялся над школьной учительницей информатики, когда она в случае поломки компьютера говорила - "выключите его, компьютер отдохнет, а завтра снова заработает".
Но то, что случилось со мной, не поддается никакому объяснению. По-крайней мере у меня это не получается.
Нашел картинку, которая наглядно показывает, какие сочетания скоростей желательно использовать при езде на велосипеде:
Т.е. если спереди цепь на большой звезде, то сзади она должна быть на 3-4х последних звездах. В ином случае будет перекос, из-за которого цепь и звезды будут быстро изнашиваться. Однако, надо учитывать длину оси каретки, т.к. если она не стандартна, то правильное сочетание скоростей может быть другим.
Из этой же картинки понятно, как правильно нумеруются скорости. Задняя большая - 1, задняя маленькая - 7, передняя большая - 3, передняя маленькая - 1. Запомнить легче так: на какой скорости легче всего ехать, та и под первым номером. По аналогии с автомобилями.
Учитывая, что я новичок и последнюю неделю каждый день катаюсь на велосипеде по 15-20км (а для новичка это значительное расстояние), то сегодня я планировал лишь немного прокатиться по парку и свернуть домой, поработать над сайтом. Впрочем, усталость и вялость была такая, что я думал, что до парка я даже не доеду. Хотел просто развернуться и поехать домой, чтобы хорошенько отдохнуть... Но все же решил доехать до конца проспекта. А потом - до поворота на калужское шоссе. А потом - до поворота с Р-132 на М-2. А потом - до Груманта. А потом - до Ясной Поляны и до р. Воронка... В итоге проехал около 50км и почти не устал - сейчас могу еще столько же проехать =) Для меня это рекорд, раньше я 15км в одну сторону еле-еле ехал. Да, кстати, утром я съел лишь сырое яйцо, т.е. ездил на голодный желудок. Маршрут получился такой:
Дорога начиная от Прудного до Груманта хорошая, машины хоть и летают как угарелые, но с краю дороги довольно много места, куда они не заезжают. От Груманта до Ясной Поляны сносная проселочная дорога. Ну а от р. Воронка до Тулы в принципе только один долгий подъем, на котором пришлось попотеть.
Представим такую ситуацию. Имеется хостинг с поддержкой Python/Django, но в имеющемся пайтоне нет нужных модулей, а версия Django не достаточно свежая. В таком случае можно установить свою версию Python в свой домашний каталог с помощью Virtualenv и в него уже устанавливать Django и все необходимые модули. Показывать буду на примере хостинга locum.ru (отличный хостинг, кстати).
В первую очередь надо установить virtualenv. Скачать ее можно отсюда http://pypi.python.org/pypi/virtualenv . Скачанный архив распаковываем, переходим в него и делаем $ python virtualenv.py ~/myenv . В результате создастся каталог ~/myenv, в который и будут устанавливаться модули пайтона и Django.
Для активации virtualenv нужно выполнить следующую команду: $ source ~/myenv/bin/activate . Добавьте эту команду в ~/.bashrc. Теперь команда $ which python должна вывести что-то похожее на "/home/accountname/myenv/bin/python". Если все так, то можете скачивать и устанавливать модули и все необходимое (модули будут установлены в каталог ~/myenv/lib/python-2.6/site-packages/).
Проверить версию свежеустановленного Django можно так:
$ python Python 2.6.6 (r266:84292, Oct 9 2010, 12:24:52) [GCC 4.4.5] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import django >>> django.get_version() '1.3' >>>
В своем аккаунте на locum.ru создаете новый проект (назовем его test1), в каталоге ~/projects создастся каталог test1 с пустым джанго-проектом. Этот каталог можно сразу удалить и командой django-admin startproject test1 создать новый. Теперь, чтобы все заработало, в каталоге с новым проектом надо создать файл django.wsgi с таким содержанием:
Если вы такой же чудик как я и собираете софт вручную, то есть маленький шанс, что вы решили обновить xorg-server и при сборке Mesa получили такую ошибку:
glxext.c error xGLXBufferSwapComplete has no member named sbc_hi
или что-то вроде
glxext.c error xDRI2BufferSwapComplete has no member named sbc_hi (точно не помню, скопировать забыл)
То вам надо установить новые glproto и dri2proto, которых еще нет на ftp, но можно получить из git:
git clone git://anongit.freedesktop.org/git/xorg/proto/glproto
git clone git://anongit.freedesktop.org/git/xorg/proto/dri2proto
Проблема актуальна для glproto-1.4.13 и dri2proto-2.4
9 мая у нас праздник. Все радуются, бухают, тусят, пляшут, поют и бухают. В стрип-клубах готовятся специальные шоу военной тематики. На машинах повсюду георгиевские ленточки. А ветераны? Ветераны ничего, им дарят вино и баночку красной икры. Активистки femen подарили ветеранам голую грудь - вот круто-то, им она так пригодится. Знакомым моей мамы подарили баночку с испорченной красной икрой и бутылку водки. В отделении нашей районной почты ветеранам Сбербанк раздает календарики. Такие маленькие, с мелким шрифтом и большим логотипом сбербанка.
Когда мы уже осознаем трагедию всего этого? Десятки миллионов жизней были покалечены войной, но сегодня любой дурак крепит георгиевскую ленточку на борт своей иномарки и ходит с чувством выполненного долга.
"Если ты патриот, то поставь сердечко в статус ICQ на день победы <3".
Устраиваем из дня победы какое-то шоу, будто мы выиграли корову и все счастливы... Вместо того, чтобы все эти деньги, которые тратятся на парады и прочие свистоперделки, отдать ветеранам. Вместо того, чтобы понять, какой ценой мы получили эту победу в этой ужасной войне и сделать выводы. Вместо того, чтобы действительно почтить память погибших и помочь ветеранам... Радуемся, бухаем, вешаем георгиевские ленточки и раздаем ветеранам календарики.
При езде на велосипеде по такой дороге, по которой идут люди (не обязательно это тротуар), всегда очень раздражает, когда пешеход резко меняет траекторию движения. К примеру, пешеход идет справа, велосипедист его начинает обгонять слева и вдруг человек, услышав шум велосипеда, резко сворачивает налево и оборачивается посмотреть "а кто же там такой едет и как бы он в меня не врелазся"... В результате велосипедисту приходится резко тормозить, а пешеход пугается и потом думает "вот ведь разъездились шальные, дома им не сидится!".
Когда я покупал раму для велосипеда, в ней уже были установлены чашки рулевой колонки, т.к. рама была б\у-шная. Тогда я купил рулевую колонку и, думая что они все одинаковые, не вытащил старые чашки и не заменил их на новые. Учитывая то, что я фактически являюсь чайником в этом деле (ну ладно - опытным чайником), то я не сразу заметил, что старые чашки рулевой были немного глубже и под них требовались более объемистые подшибники. В результате пару раз поездил с люфтом, думая, что слабо затянул руль и он просто разболтался, пока не понял, в чем причина. А причина была в том, что надо было заменить старые чашки рулевой на новые.