рубрика: Development

Django youtube video template filter

Фильтр выковыривает ссылки из текста и вставляет как oembed объект. Можно задать длину-ширину опционально: {{ content|youtube:»320×240″ }} по дефолту 320×240.

# -*- coding: utf-8 -*-

from django.template.defaultfilters import stringfilter
from django import template
import re

register = template.Library()

@register.filter
@stringfilter
def youtube(url, size=None):
    regex = re.compile(r".*(http://)?(www\.)?(youtube\.com/watch\?)?v=(?P[A-Za-z0-9\-=_]{11})(\&)?.*", re.UNICODE)
    match = regex.match(url)
    if not match: return url
    video_id = match.group('id')

    video_w = "320"
    video_h = "240"
    if size and "x" in size:
        (video_w, video_h) = size.split('x')

    youtube_iframe = """
    <iframe src="http://www.youtube.com/embed/%s?fs=1&feature=oembed" frameborder="0" allowfullscreen width="%spx" height="%spx"></iframe>
    """ % (video_id, video_w, video_h)

    repl = re.compile(r"(http://)?(www\.)?(youtube\.com/watch\?v=)?(?P[A-Za-z0-9\-=_]{11}[^\b]*)", re.UNICODE)
    text = re.sub(repl, youtube_iframe, url)
    return text
youtube.is_safe = True # Don't escape HTML

Релиз ubuntu 12.04 LTS УРА!!!

Гиб гиб ура товарищам из каноникал. Всех поздравляю с релизом. Первое и единственное мое пока что впечатление на % баллов. Все работает и все девайсы опознавались без проблем.

TinyMCE для Django

Прикручиваем tinymce к django. Я случайно наткнулся на такое исполнение прикручивания tinymce к django.

1. Создаем в папке проекта папку wysiwyg, а в ней файл __init__.py (код которого приведен ниже)

#!/usr/bin/python
# -*- encoding: utf-8 -*-

from django.db.models import Field
from django.forms import Textarea
from settings import MEDIA_URL

class WidgetWYSIWYG(Textarea):
    def __init__(self, *args, **kwargs):
        super(WidgetWYSIWYG, self).__init__(attrs={'class': 'wysiwygEditor vLargeTextField'}, *args, **kwargs)
    class Media:
        js = (
            MEDIA_URL+'common/tiny_mce/tiny_mce.js',
            MEDIA_URL+'common/filebrowser/js/TinyMCEAdmin.js',
            )

class WYSIWYGField(Field):
    def get_internal_type(self):
        return "TextField"

    def formfield(self, **kwargs):
        defaults = {'widget': WidgetWYSIWYG}
        defaults.update(kwargs)
        return super(WYSIWYGField, self).formfield(**defaults)

2. Теперь мы можем создать свою модель и вместо поля models.TextField использовать WYSIWYGField. Смотрим код models.py ниже.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from django.db import models
import datetime
from wysiwyg import WYSIWYGField

# Create your models here.
class News(models.Model):
    """
    Новости
    """
    publish = models.BooleanField(verbose_name=u"Опубликовать", default=True)
    created = models.DateField(verbose_name=u"Дата", default=datetime.date.today)
    title = models.CharField(verbose_name=u"Заголовок", max_length=250)
    preview = models.TextField(verbose_name=u"Краткое описание")
    text = WYSIWYGField(verbose_name=u"Текст")

    def __unicode__(self):
        return self.title

    class Meta:
        ordering = ('-created',)
        verbose_name = u"Новость"
        verbose_name_plural = u"Новости"

Python морфология строки от числа

 

class Morphology:
    def getNLastDigit(self, n, number):
        return divmod(number, 10**n)[1]

    def formParticipant(number):
        morf = Morphology()
        lastDigit = morf.getNLastDigit(1, number)
        twoLastDigit = morf.getNLastDigit(2, number)
        if ((5 < twoLastDigit < 15) | (lastDigit in [5, 6, 7, 8, 9, 0])):
            return str("товаров")
        elif (lastDigit == 1):
            return str("товар")
        elif(lastDigit in [2, 3, 4]):
            return str("товара")
    formParticipant = staticmethod(formParticipant)

Eclipse хорошие плагины

Хорошие плагины:

AnyEdit Tools

Update site: http://andrei.gmxhome.de/eclipse/

Куча полезных и жизненно необходимых примочек для Eclipse.

 

Regex Util

Update site: http://regex-util.sourceforge.net/update/

Дополнительный вид (view) для тестирования регулярных выражений.

 

WebTools Project

Update site: http://download.eclipse.org/webtools/updates/

Платформа для веб-инструментов. Содержит в себе довольно неплохой XML редактор с поддержкой XML Schema, а также HTML/CSS/JavaScript редакторы, которые меня лично по многим причинам не устраивают.

XML-редактор WebTools Project делает подсказки (code assist) на основе XML Schema или DTD. То есть, например, для того, чтобы заработал code assist по XSL достаточно в любом xml-файле в рутовом элементе указать xmlns:xsl="http://www.w3.org/1999/XSL/Transform", после этого будет работать code assist и валидация для элементов из пространства имен xsl. Можно даже создать свою схему и использовать ее. Однако есть очень неприятный баг/фича, который разработчики пока не собираются править: если одновременно указан DTD и Schema у xml-файла, то редактор пытается взять code assist именно из DTD, полностью игнорируя Schema. То есть при редактировании xsl-файлов, в которых есть DOCTYPE, у вас не будут работать подсказки; чтобы они заработали, нужно временно закомментировать DOCTYPE. Или воспользоваться XML-редактором из Spket IDE, правда, редактировать там не так удобно, как в WebTools.

 

DBViewer Plugin

Update site: http://www.ne.jp/asahi/zigen/home/plugin/dbviewer/

SQL клиент для большинства современных баз данных (в том числе для MySQL). Умеет показывать/редактировать структуру таблиц, показывать записи таблицы постранично, а также довольно удобный редакторSQL-запросов, в котором есть code assist по SQL-структурам и по данным вашей базы (то есть он будет подсказывать названия таблиц и полей из БД).

Azzurri Clay

Update site: http://www.azzurri.co.jp/eclipse/plugins

Проектирование БД. Позволяет создать блок-схемы со структурой и связями таблиц, а затем сгенерироватьSQL-запросы для конкретной СУБД. Core версия бесплатная, за Pro нужно платить.

 

Aptana Studio

Update site: http://update.aptana.com/update/studio/3.2/

Web IDE. Думаю, описывать ничего не надо, на сайте есть куча документации и скринкастов. От этого плагина я использую только HTML и CSS редактор.

 

Spket IDE

Update site: http://spket.com/update/

IDE для работы с JavaScript и XML. Его я использую за первоклассный JavaScript редактор, который понимает современные паттерны, а также продвинутый code assist. Если бы добавился рефакторинг — цены б ему не было :-) Из недостатков могу отметить отсутствие некоторых core-функций и методов JS (типа setTimeout, Element.innerHTML и т. д.) а также отсутствие документации (только code assist) для core объектов и методов.

 

Eclipse Colorer

Подсветка синтаксиса для 150+ языков программирования, в том числе для Parser. Ставить надо версию 0.8.0, которой нет в update site.

 

Remote System Explorer (RSE)

Update site: http://download.eclipse.org/releases/ganymede/

Плагин для работы с удаленными системами через FTP/SSH/Telnet. Позволяет редактировать файлы прямо на FTP/SSH сервере, локально сохраняя историю изменения файла, а также сам файл (чтобы его, в случае чего, можно было восстановить). Содержится в стандартном репозитории Ganymede (см. Remote Access and Device Development > Remote System ExplorerEnd-User Runtime). Советую использовать его вместо Aptana FTP плагина, у которого есть проблемы с редактированим файловне-Aptana редакторами.

 

Шпаргалка для Django 1.3

На хабре проскочил пост со шпаргалкой. Смею разместить у себя аналогично дабы вещь нужная и полезная. Скачать тут.

 

Команды Linux — Системная информация

arch или uname -m — отобразить архитектуру компьютера
uname -r — отобразить используемую версию ядра
dmidecode -q — показать аппаратные системные компоненты — (SMBIOS / DMI)
hdparm -i /dev/hda — вывести характеристики жесткого диска
cat /proc/cpuinfo — отобразить информацию о процессоре
cat /proc/interrupts — показать прерывания
cat /proc/meminfo — проверить использование памяти
cat /proc/swaps — показать файл(ы) подкачки
cat /proc/version — вывести версию ядра
cat /proc/net/dev — показать сетевые интерфейсы и статистику по ним
cat /proc/mounts — отобразить смонтированные файловые системы
lspci -tv — показать в виде дерева PCI устройства
lsusb -tv — показать в виде дерева USB устройства
date — вывести системную дату
cal 2007 — вывести таблицу-календарь 2007-го года
date 041217002007.00* — установить системные дату и время ММДДЧЧммГГГГ.СС (МесяцДеньЧасМинутыГод.Секунды)
clock -w — сохранить системное время в BIOS

Таблица. Математические символы и греческие буквы

Описание символа Обозначение 10-ный код 16-ный код Вид
курсивное f &fnof; &#402; &#x192; ƒ
прописная альфа &Alpha; &#913; &#x391; Α
прописная бета &Beta; &#914; &#x392; Β
прописная гамма &Gamma; &#915; &#x393; Γ
прописная дельта &Delta; &#916; &#x394; Δ
прописной эпсилон &Epsilon; &#917; &#x395; Ε
прописная дзета &Zeta; &#918; &#x396; Ζ
прописная эта &Eta; &#919; &#x397; Η
прописная тета &Theta; &#920; &#x398; Θ
прописная иота &Iota; &#921; &#x399; Ι
прописная каппа &Kappa; &#922; &#x39A; Κ
прописная ламбда &Lambda; &#923; &#x39B; Λ
прописная мю &Mu; &#924; &#x39C; Μ
прописная ню &Nu; &#925; &#x39D; Ν
прописная кси &Xi; &#926; &#x39E; Ξ
прописной омикрон &Omicron; &#927; &#x39F; Ο
прописная пи &Pi; &#928; &#x3A0; Π
прописная ро &Rho; &#929; &#x3A1; Ρ
прописная сигма &Sigma; &#931; &#x3A3; Σ
прописная тау &Tau; &#932; &#x3A4; Τ
прописная ипсилон &Upsilon; &#933; &#x3A5; Υ
прописная фи &Phi; &#934; &#x3A6; Φ
прописная хи &Chi; &#935; &#x3A7; Χ
прописная пси &Psi; &#936; &#x3A8; Ψ
прописная омега &Omega; &#937; &#x3A9; Ω
строчная альфа &alpha; &#945; &#x3B1; α
строчная бета &beta; &#946; &#x3B2; β
строчная гамма &gamma; &#947; &#x3B3; γ
строчная дельта &delta; &#948; &#x3B4; δ
строчная эпсилон &epsilon; &#949; &#x3B5; ε
строчная дзета &zeta; &#950; &#x3B6; ζ
строчная эта &eta; &#951; &#x3B7; η
строчная тета &theta; &#952; &#x3B8; θ
строчная иота &iota; &#953; &#x3B9; ι
строчная каппа &kappa; &#954; &#x3BA; κ
строчная ламбда &lambda; &#955; &#x3BB; λ
строчная мю &mu; &#956; &#x3BC; μ
строчная ню &nu; &#957; &#x3BD; ν
строчная кси &xi; &#958; &#x3BE; ξ
строчный омикрон &omicron; &#959; &#x3BF; ο
строчная пи &pi; &#960; &#x3C0; π
строчная ро &rho; &#961; &#x3C1; ρ
строчная сигма конечная &sigmaf; &#962; &#x3C2; ς
строчная сигма &sigma; &#963; &#x3C3; σ
строчная тау &tau; &#964; &#x3C4; τ
строчная ипсилон &upsilon; &#965; &#x3C5; υ
строчная фи &phi; &#966; &#x3C6; φ
строчная хи &chi; &#967; &#x3C7; χ
строчная пси &psi; &#968; &#x3C8; ψ
строчная омега &omega; &#969; &#x3C9; ω
символ строчная тета &thetasym; &#977; &#x3D1; ϑ
ипсилон с крючком &upsih; &#978; &#x3D2; ϒ
символ пи &piv; &#982; &#x3D6; ϖ
маркер списка &bull; &#8226; &#x2022;
многоточие &hellip; &#8230; &#x2026;
знак прим &prime; &#8242; &#x2032;
знак двойной прим &Prime; &#8243; &#x2033;
надчеркивание &oline; &#8254; &#x203E;
дробная черта &frasl; &#8260; &#x2044;
рукописная P &weierp; &#8472; &#x2118;
мнимая часть числа &image; &#8465; &#x2111;
действительная часть числа &real; &#8476; &#x211C;
торговая марка &trade; &#8482; &#x2122;
алеф &alefsym; &#8501; &#x2135;
стрелка влево &larr; &#8592; &#x2190;
стрелка вверх &uarr; &#8593; &#x2191;
стрелка вправо &rarr; &#8594; &#x2192;
стрелка вниз &darr; &#8595; &#x2193;
стрелка влево-вправо &harr; &#8596; &#x2194;
возврат каретки &crarr; &#8629; &#x21B5;
двойная стрелка влево &lArr; &#8656; &#x21D0;
двойная стрелка вверх &uArr; &#8657; &#x21D1;
двойная стрелка вправо &rArr; &#8658; &#x21D2;
двойная стрелка вниз &dArr; &#8659; &#x21D3;
двойная стрелка влево-вправо &hArr; &#8660; &#x21D4;
квантор всеобщности &forall; &#8704; &#x2200;
знак дифференциала &part; &#8706; &#x2202;
квантор существования &exist; &#8707; &#x2203;
пустое множество &empty; &#8709; &#x2205;
набла &nabla; &#8711; &#x2207;
принадлежит множеству &isin; &#8712; &#x2208;
не принадлежит множеству &notin; &#8713; &#x2209;
является членом &ni; &#8715; &#x220B;
n-арное произведение &prod; &#8719; &#x220F;
n-арная сумма &sum; &#8721; &#x2211;
знак минус &minus; &#8722; &#x2212;
оператор звездочка &lowast; &#8727; &#x2217;
радикал &radic; &#8730; &#x221A;
пропорционально &prop; &#8733; &#x221D;
бесконечность &infin; &#8734; &#x221E;
угол &ang; &#8736; &#x2220;
логическое И &and; &#8743; &#x2227;
логическое ИЛИ &or; &#8744; &#x2228;
пересечение &cap; &#8745; &#x2229;
объединение &cup; &#8746; &#x222A;
интеграл &int; &#8747; &#x222B;
следовательно &there4; &#8756; &#x2234;
оператор тильда &sim; &#8764; &#x223C;
приблизительно равно &cong; &#8773; &#x2245;
асимптотически равно &asymp; &#8776; &#x2248;
не равно &ne; &#8800; &#x2260;
тождественно равно &equiv; &#8801; &#x2261;
меньше или равно &le; &#8804; &#x2264;
больше или равно &ge; &#8805; &#x2265;
подмножество &sub; &#8834; &#x2282;
надмножество &sup; &#8835; &#x2283;
не подмножество &nsub; &#8836; &#x2284;
подмножество или равно &sube; &#8838; &#x2286;
надмножество или равно &supe; &#8839; &#x2287;
прямая сумма &oplus; &#8853; &#x2295;
векторное произведение &otimes; &#8855; &#x2297;
перпендикулярно &perp; &#8869; &#x22A5;
оператор точка &sdot; &#8901; &#x22C5;
левый верхний угол &lceil; &#8968; &#x2308;
правый верхний угол &rceil; &#8969; &#x2309;
левый нижний угол &lfloor; &#8970; &#x230A;
правый нижний угол &rfloor; &#8971; &#x230B;
левая угловая скобка &lang; &#9001; &#x2329;
правая угловая скобка &rang; &#9002; &#x232A;
ромб &loz; &#9674; &#x25CA;
пики &spades; &#9824; &#x2660;
трефы &clubs; &#9827; &#x2663;
червы &hearts; &#9829; &#x2665;
бубны &diams; &#9830; &#x2666;

Таблица. Специальные символы

Описание символа Обозначение 10-ный код 16-ный код Вид
кавычка &quot; &#34; &#x22; «
амперсант &amp; &#38; &#x26; &
левая угловая скобка &lt; &#60; &#x3C; <
правая угловая скобка &gt; &#62; &#x3E; >
лигатура OE &OElig; &#338; &#x152; Œ
лигатура oe &oelig; &#339; &#x153; œ
S с птичкой &Scaron; &#352; &#x160; Š
s с птичкой &scaron; &#353; &#x161; š
Y с диерезой &Yuml; &#376; &#x178; Ÿ
циркумфлекс &circ; &#710; &#x2C6; ˆ
малая тильда &tilde; &#732; &#x2DC; ˜
короткий пробел &ensp; &#8194; &#x2002;
длинный пробел &emsp; &#8195; &#x2003;
узкий пробел &thinsp; &#8201; &#x2009;
разделитель нулевой ширины &zwnj; &#8204; &#x200C;
соединитель нулевой ширины &zwj; &#8205; &#x200D;
указатель слева направо &lrm; &#8206; &#x200E;
указатель справа налево &rlm; &#8207; &#x200F;
короткое тире &ndash; &#8211; &#x2013;
длинное тире &mdash; &#8212; &#x2014;
открывающая одинарная кавычка &lsquo; &#8216; &#x2018;
закрывающая одинарная кавычка &rsquo; &#8217; &#x2019;
нижняя одинарная кавычка &sbquo; &#8218; &#x201A;
открывающая двойная кавычка &ldquo; &#8220; &#x201C;
закрывающая двойная кавычка &rdquo; &#8221; &#x201D;
нижняя двойная кавычка &bdquo; &#8222; &#x201E;
кинжал &dagger; &#8224; &#x2020;
двойной кинжал &Dagger; &#8225; &#x2021;
знак промилле &permil; &#8240; &#x2030;
открывающая угловая кавычка &lsaquo; &#8249; &#x2039;
закрывающая угловая кавычка &rsaquo; &#8250; &#x203A;
евро &euro; &#8364; &#x20AC;

Таблица. Символы латиницы

Описание символа Обозначение 10-ный код 16-ный код Вид
неразрывный пробел &nbsp; &#160; &#xA0;
перевернутый восклицательный знак &iexcl; &#161; &#xA1; ¡
цент &cent; &#162; &#xA2; ¢
фунт стерлингов &pound; &#163; &#xA3; £
знак денежной единицы &curren; &#164; &#xA4; ¤
йена &yen; &#165; &#xA5; ¥
вертикальная черта &brvbar; &#166; &#xA6; ¦
параграф &sect; &#167; &#xA7; §
диереза &uml; &#168; &#xA8; ¨
знак авторского права &copy; &#169; &#xA9; ©
показатель женского рода &ordf; &#170; &#xAA; ª
открывающая двойная угловая кавычка &laquo; &#171; &#xAB; «
знак отрицания &not; &#172; &#xAC; ¬
мягкий перенос &shy; &#173; &#xAD; ­
охраняемый знак &reg; &#174; &#xAE; ®
надчеркивание &macr; &#175; &#xAF; ¯
градус &deg; &#176; &#xB0; °
плюс-минус &plusmn; &#177; &#xB1; ±
вторая степень &sup2; &#178; &#xB2; ²
третья степень &sup3; &#179; &#xB3; ³
острое ударение &acute; &#180; &#xB4; ´
знак микро &micro; &#181; &#xB5; µ
конец абзаца &para; &#182; &#xB6;
средняя точка &middot; &#183; &#xB7; ·
седиль &cedil; &#184; &#xB8; ¸
единица в верхнем индексе &sup1; &#185; &#xB9; ¹
показатель мужского рода &ordm; &#186; &#xBA; º
закрывающая двойная угловая кавычка &raquo; &#187; &#xBB; »
одна четвертая &frac14; &#188; &#xBC; ¼
одна вторая &frac12; &#189; &#xBD; ½
три четверти &frac34; &#190; &#xBE; ¾
перевернутый вопросительный знак &iquest; &#191; &#xBF; ¿
A с тупым ударением &Agrave; &#192; &#xC0; À
A с острым ударением &Aacute; &#193; &#xC1; Á
A с циркумфлексом &Acirc; &#194; &#xC2; Â
A с тильдой &Atilde; &#195; &#xC3; Ã
A с диерезой &Auml; &#196; &#xC4; Ä
A с кружком &Aring; &#197; &#xC5; Å
лигатура AE &AElig; &#198; &#xC6; Æ
C с седилем &Ccedil; &#199; &#xC7; Ç
E с тупым ударением &Egrave; &#200; &#xC8; È
E с острым ударением &Eacute; &#201; &#xC9; É
E с циркумфлексом &Ecirc; &#202; &#xCA; Ê
E с диерезой &Euml; &#203; &#xCB; Ë
I с тупым ударением &Igrave; &#204; &#xCC; Ì
I с острым ударением &Iacute; &#205; &#xCD; Í
I с циркумфлексом &Icirc; &#206; &#xCE; Î
I с диерезой &Iuml; &#207; &#xCF; Ï
ETH &ETH; &#208; &#xD0; Ð
N с тильдой &Ntilde; &#209; &#xD1; Ñ
O с тупым ударением &Ograve; &#210; &#xD2; Ò
O с острым ударением &Oacute; &#211; &#xD3; Ó
O с циркумфлексом &Ocirc; &#212; &#xD4; Ô
O с тильдой &Otilde; &#213; &#xD5; Õ
O с диерезой &Ouml; &#214; &#xD6; Ö
знак умножения &times; &#215; &#xD7; ×
O перечеркнутое &Oslash; &#216; &#xD8; Ø
U с тупым ударением &Ugrave; &#217; &#xD9; Ù
U с острым ударением &Uacute; &#218; &#xDA; Ú
U с циркумфлексом &Ucirc; &#219; &#xDB; Û
U с диерезой &Uuml; &#220; &#xDC; Ü
Y с острым ударением &Yacute; &#221; &#xDD; Ý
THORN &THORN; &#222; &#xDE; Þ
двойное s &szlig; &#223; &#xDF; ß
a с тупым ударением &agrave; &#224; &#xE0; à
a с острым ударением &aacute; &#225; &#xE1; á
a с циркумфлексом &acirc; &#226; &#xE2; â
a с тильдой &atilde; &#227; &#xE3; ã
a с диерезой &auml; &#228; &#xE4; ä
a с кружком &aring; &#229; &#xE5; å
лигатура ae &aelig; &#230; &#xE6; æ
c с седилем &ccedil; &#231; &#xE7; ç
e с тупым ударением &egrave; &#232; &#xE8; è
e с острым ударением &eacute; &#233; &#xE9; é
e с циркумфлексом &ecirc; &#234; &#xEA; ê
e с диерезой &euml; &#235; &#xEB; ë
i с тупым ударением &igrave; &#236; &#xEC; ì
i с острым ударением &iacute; &#237; &#xED; í
i с циркумфлексом &icirc; &#238; &#xEE; î
i с диерезой &iuml; &#239; &#xEF; ï
eth &eth; &#240; &#xF0; ð
n с тильдой &ntilde; &#241; &#xF1; ñ
o с тупым ударением &ograve; &#242; &#xF2; ò
o с острым ударением &oacute; &#243; &#xF3; ó
o с циркумфлексом &ocirc; &#244; &#xF4; ô
o с тильдой &otilde; &#245; &#xF5; õ
o с диерезой &ouml; &#246; &#xF6; ö
знак деления &divide; &#247; &#xF7; ÷
o перечеркнутое &oslash; &#248; &#xF8; ø
u с тупым ударением &ugrave; &#249; &#xF9; ù
u с острым ударением &uacute; &#250; &#xFA; ú
u с циркумфлексом &ucirc; &#251; &#xFB; û
u с диерезой &uuml; &#252; &#xFC; ü
y с острым ударением &yacute; &#253; &#xFD; ý
thorn &thorn; &#254; &#xFE; þ
y с диерезой &yuml; &#255; &#xFF; ÿ