20 июн. 2011 г.

Хорошей Тюменской компании нужен хороший администратор

Парк из 50+ компьютеров, ЛВС, несколько серверов (видимо, платформа windows).

От вас - в комментариях или в письме на markeev@gisi.ru указать свое ФИО и номер контактного телефона. Ответить крайне желательно до 13 часов 21 июня 2011 (т.е. до завтра).

12 июн. 2011 г.

Скриншотить питоном (selenium)?


#!/usr/bin/env python
from selenium import webdriver

browser = webdriver.Firefox()
browser.get('http://www.ubuntu.com/')
browser.save_screenshot('screenie.png')
browser.close()

10 июн. 2011 г.

django-tinymce + django-filebrowser

Пара файлменеджер+wysiwyg - удобный набор для привлечения к генерации контента пользователей совсем уж низкого уровня технической подготовки.
Сейчас, чтобы подключить к любимой CMSке на django загрузку картинок, уже не нужно ничего велосипедить. Решение проблемы сводится к поиску нужного форка на github. И это же правило справедливо для большинства plugable-приложений.
В случае с заявленными в сабже приложениями нужно:
1. Настроить tinymce (отобрать у пользователя все не нужные ему возможности. Меньше можешь - меньше накосячишь). Файл настроек django-tinymce может выглядеть так:

# -*- coding: utf8 -*-

from settings import STATIC_ROOT

#TinyMCE widget configuration
TINYMCE_JS_URL = "/static/tiny_mce/tiny_mce.js"
TINYMCE_JS_ROOT = STATIC_ROOT + "/tiny_mce"
TINYMCE_SPELLCHECKER=False
TINYMCE_PLUGINS = [
    'safari',
    'table',
    'advlink',
    'advimage',
    'iespell',
    'inlinepopups',
    'media',
    'searchreplace',
    'contextmenu',
    'paste',
    'wordcount'
]

TINYMCE_DEFAULT_CONFIG={
    'theme' : "advanced",
    'plugins' : ",".join(TINYMCE_PLUGINS), # django-cms
'language' : 'ru',
    'theme_advanced_buttons1' : "bullist,numlist,|,link,unlink,anchor,image",
    'theme_advanced_buttons3' : "table,|,delete_row,delete_table,|,row_after,row_before",
    'theme_advanced_buttons4' : "styleselect,formatselect,fontselect,fontsizeselect",
    'theme_advanced_buttons2' : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,undo,redo,|,link,unlink,cleanup",
    'theme_advanced_buttons4' : "",
    'theme_advanced_toolbar_location' : "top",
    'theme_advanced_toolbar_align' : "left",
    'theme_advanced_statusbar_location' : "bottom",
    'theme_advanced_resizing' : True,
    'table_default_cellpadding': 2,
    'table_default_cellspacing': 2,
    'cleanup_on_startup' : False,
    'cleanup' : False,
    'paste_auto_cleanup_on_paste' : False,
    'paste_block_drop' : False,
    'paste_remove_spans' : False,
    'paste_strip_class_attributes' : False,
    'paste_retain_style_properties' : "",
    'forced_root_block' : False,
    'force_br_newlines' : False,
    'force_p_newlines' : False,
    'remove_linebreaks' : False,
    'convert_newlines_to_brs' : False,
    'inline_styles' : False,
    'relative_urls' : False,
    'formats' : {
        'alignleft' : {'selector' : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', 'classes' : 'align-left'},
        'aligncenter' : {'selector' : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', 'classes' : 'align-center'},
        'alignright' : {'selector' : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', 'classes' : 'align-right'},
        'alignfull' : {'selector' : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', 'classes' : 'align-justify'},
        'strikethrough' : {'inline' : 'del'},
        'italic' : {'inline' : 'em'},
        'bold' : {'inline' : 'strong'},
        'underline' : {'inline' : 'u'}
    },
    'pagebreak_separator' : ""
}
#FILEBROWSER_URL_FILEBROWSER_MEDIA = STATIC_URL + 'filebrowser'
FILEBROWSER_DIRECTORY = 'filebrowser'
2. Найти и установить тот самый, правильный форк. Сегодня для меня это https://github.com/smacker/django-filebrowser-no-grappelli-for-django13 (чтоб установить нужно прописать в INSTALLED_APPS tinymce и добавить url(r'^tinymce/filebrowser/',include('filebrowser.urls')),).
Django-filebrowser-no-grappelli-for-django13 нуждается в https://github.com/tstone/django-uploadify (необходимые настройки сводятся к добавлению uploadify в INSTALLED_APPS и добавлению урл-паттерна  (r'^uploadify/', include('uploadify.urls')), ).

Ну и все, если не считать мануальной терапий по переносу каталогов медиа файлов из подкаталогов приложений (1.3 умеет коллекционировать статику, потому для многих уже и не актуально).