рубрика: Статьи

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

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)

Команды Linux — Монтирование файловых систем

mount /dev/hda2 /mnt/hda2 — монтирует раздел ‘hda2′ в точку монтирования ‘/mnt/hda2′. Убедитесь в наличии директории-точки монтирования ‘/mnt/hda2′
umount /dev/hda2 — размонтирует раздел ‘hda2′. Перед выполнением, покиньте ‘/mnt/hda2′
fuser -km /mnt/hda2 — принудительное размонтирование раздела. Применяется в случае, когда раздел занят каким-либо пользователем
umount -n /mnt/hda2 — выполнить размонитрование без занесения информации в /etc/mtab. Полезно когда файл имеет атрибуты «только чтение» или недостаточно места на диске
mount /dev/fd0 /mnt/floppy — монтировать флоппи-диск
mount /dev/cdrom /mnt/cdrom — монтировать CD или DVD
mount /dev/hdc /mnt/cdrecorder — монтировать CD-R/CD-RW или DVD-R/DVD-RW(+-)
mount -o loop file.iso /mnt/cdrom — смонтировать ISO-образ
mount -t vfat /dev/hda5 /mnt/hda5 — монтировать файловую систему Windows FAT32
mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share — монтировать сетевую файловую систему Windows (SMB/CIFS)
mount -o bind /home/user/prg /var/ftp/user — «монтирует» директорию в директорию (binding). Доступна с версии ядра 2.4.0. Полезна, например, для предоставления содержимого пользовательской директории через ftp при работе ftp-сервера в «песочнице» (chroot), когда симлинки сделать невозможно. Выполнение данной команды сделает копию содержимого /home/user/prg в /var/ftp/user

Команды Linux — Поиск файлов

find / -name file1 — найти файлы и директории с именем file1. Поиск начать с корня (/)
find / -user user1 — найти файл и директорию принадлежащие пользователю user1. Поиск начать с корня (/)
find /home/user1 -name "*.bin" — найти все файлы и директории, имена которых оканчиваются на ‘. bin’. Поиск начать с ‘/ home/user1′*
find /usr/bin -type f -atime +100 — найти все файлы в ‘/usr/bin’, время последнего обращения к которым более 100 дней
find /usr/bin -type f -mtime -10 — найти все файлы в ‘/usr/bin’, созданные или изменённые в течении последних 10 дней
find / -name *.rpm -exec chmod 755 '{}' \; — найти все фалы и директории, имена которых оканчиваются на ‘.rpm’, и изменить права доступа к ним
find / -xdev -name "*.rpm" — найти все фалы и директории, имена которых оканчиваются на ‘.rpm’, игнорируя съёмные носители, такие как cdrom, floppy и т.п.
locate "*.ps" — найти все файлы, сожержащие в имени ‘.ps’. Предварительно рекомендуется выполнить команду ‘updatedb’
whereis halt — показывает размещение бинарных файлов, исходных кодов и руководств, относящихся к файлу ‘halt’
which halt — отображает полный путь к файлу ‘halt’

Команды Linux — Файлы и директории

cd /home — перейти в директорию ‘/home’
cd .. — перейти в директорию уровнем выше
cd ../.. — перейти в директорию двумя уровнями выше
cd — перейти в домашнюю директорию
cd ~user — перейти в домашнюю директорию пользователя user
cd - — перейти в директорию, в которой находились до перехода в текущую директорию
pwd — показать текущюю директорию
ls — отобразить содержимое текущей директории
ls -F — отобразить содержимое текущей директории с добавлением к именам символов, храктеризующих тип
ls -l — показать детализированое представление файлов и директорий в текущей директории
ls -a — показать скрытые файлы и директории в текущей директории
ls *[0-9]* — показать файлы и директории содержащие в имени цифры
tree или lstree — показать дерево файлов и директорий, начиная от корня (/)
mkdir dir1 — создать директорию с именем ‘dir1′
mkdir dir1 dir2 — создать две директории одновременно
mkdir -p /tmp/dir1/dir2 — создать дерево директорий
rm -f file1 — удалить файл с именем ‘file1′
rmdir dir1 — удалить директорию с именем ‘dir1′
rm -rf dir1 — удалить директорию с именем ‘dir1′ и рекурсивно всё её содержимое
rm -rf dir1 dir2 — удалить две директории и рекурсивно их содержимое
mv dir1 new_dir — переименовать или переместить файл или директорию
cp file1 file2 — сопировать файл file1 в файл file2
cp dir/* . — копировать все файлы директории dir в текущую директорию
cp -a /tmp/dir1 . — копировать директорию dir1 со всем содержимым в текущую директорию
cp -a dir1 dir2 — копировать директорию dir1 в директорию dir2
ln -s file1 lnk1* — создать символическую ссылку на файл или директорию
ln file1 lnk1 — создать «жёсткую» (физическую) ссылку на файл или директорию
touch -t 0712250000 fileditest — модифицировать дату и время создания файла, при его отсутствии, создать файл с указанными датой и временем (YYMMDDhhmm)

Команды Linux — Остановка системы

shutdown -h now или init 0 или telinit 0 — остановить систему
shutdown -h hours:minutes & — запланировать остановку системы на указанное время
shutdown -c — отменить запланированную по расписанию остановку системы
shutdown -r now или reboot — перегрузить систему
logout — выйти из системы

Команды 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;