Архив автора: admin

Рецепт острого соуса

А. вы знаете, что азиатские блюда построены на сочетании пяти вкусов: сладкое, горькое, острое, кислое и соленое?

Раньше к нам на Украину, часто приезжали мамины родственники из Казахстана, привозили с собой дыни, урюк и «Цицабели».

Это такое название имеет аджика или острый соус, он сочетает в себе сладкий помидор и перец, горький и острый чеснок и перец, приятную кислоту помидора и его рецептом я сегодня поделюсь с вами. Читать

Бисквитный торт с фруктами

Этим рецептом поделилась со мной подруга. Мне он тоже очень понравился: нежный бисквит, сметанный крем и фрукты.

Для приготовления теста взять:

4 охлажденных яйца;

1 стакан сахара;

1 стакан муки.

Вначале хорошо взбить охлажденный белок, затем по частям, добавлять 1 стакан сахара, всё взбить в густую пену, добавить желтки и продолжить взбивать 1- 2 мин. Читать

Украшение обуви

Украшение балеток

Столь модные сегодня тканевые балетки открывают столько возможностей для творчества! Креативные натуры не согласны упускать такую возможность и используют разные способы достижения индивидуальности и эксклюзивности во всем. Мы также можем смело назвать себя креативными натурами, а значит сегодня же займемся очередной переделкой. И нашей сегодняшней целью станет украшение текстильных балеток.

Украшение обуви

Украшение обуви

Читать

Почтовый клиент Geary обновлен до версии 3.0

 Организация Yorba Foundation, основной сферой деятельности которой является разработка бесплатных приложений для рабочего стола GNOME, объявила о выпуске третьей версии почтовика Geary.

 Интерфейс Geary 3.0 разработан на базе библиотеки GTK3+. Одними из целей проекта разработчики называют создание многофункционального решения, потребляющего минимум ресурсов, и максимально простого в использовании решения. Почтовик Geary 3.0 может быть использован как для обособленного применения, так и совместим с такими почтовыми сервисами, как Yahoo! Mail и Gmail. Хотя, установка мини атс обеспечит живое общение с пользователями и позволит быстро решить вопросы внутри компании.

 На данный момент доступны готовые инсталляционные пакеты для Fedora Linux и Ubuntu. Пользователи других платформ могут выполнить сборку почтовика из исходных текстов. При написании почтовой программы Geary 3.0 был использован сугубо язык Vala. Решение распространяется по условиям лицензии LGPL. Сообщения сохраняются в DB SQLite, а для поиска сообщений в базе генерируется полноценный текстовый индекс. Для работы с протоколом IMAP была применена новая библиотека на базе GObject, которая функционирует в разновременном режиме, когда загрузка почты не становится причиной блокировки интерфейса.

 В версии почтовой программы Geary 3.0 можно отметить следующие нововведения: — Поддержку одновременного использования нескольких учетных записей;
— Редактор учетных записей;
— Режим полного просмотра цепочек сообщений с отображением собственных ответов;
— Новая упрощенная форма загрузки сообщений, благодаря которой клиент стал намного быстрее;
— Возможность помечать сообщения, как спам;
— Внедрена папка для хранения наиболее важных сообщений
— Возможность сворачивать непрочитанные сообщения непосредственно в просмотровщике переписки;
— Поддержку authentication-less SMTP-сеансов;
— Активация режим проверки WebKit в просмотровщике переписки.

Автор: Сергей Курган

Бабочка из фетра

Декоративные бабочки из фетра

Вот и долгожданная весна наступает, а нам хочется еще больше тепла, еще больше солнца, еще больше цветов, еще больше зелени, птиц и, конечно же, бабочек. Именно с их появлением приходит восторженное ощущение: наконец-то, вот оно, лето! А мы не будем ждать, пока лето постучится и в нашу дверь, а будем создавать летнюю атмосферу  у себя дома своими силами. Предлагаем сделать эти превосходные декоративные бабочки из фетра и украсить ними ваш дом.

Украшение дома бабочками

Украшение дома бабочками

Читать

Документация South — Перевод. Часть 4: Пользовательские поля

В South 0.7 появилось радикальное отличие от предыдущих версий. До сих пор, если у Вас было пользовательское поле, South пытался использовать очень сильное колдунство для того, чтобы определить, как «замораживать» это поле,так что оно могло быть отклонено в миграции (и это было не очень красивое колдунство — комбинация регулярных выражений и модуля parser).
Хотя это, как ни странно, работало хорошо у большинства пользователей, тем не менее в некоторых случаях что-то шло не так, и Вы даже не знали об этом, пока не проходило несколько недель… В целях большей вменяемости и меньшей магии теперь Вы должны указать South как замораживать ваши пользовательские поля.
Не волнуйтесь, это достаточно просто и Вам надо сделать это лишь раз для каждого поля.

Наше поле

В этом примере мы будем использовать пользовательское поле, которое хранит список тегов в БД. Мы будем просто хранить их в TEXT колонке с некоторым разделителем (по умолчанию мы будем использовать |, но можно использовать и любой другой символ — просто передайте его как именованный аргумент).
Вот класс этого поля. Я разместил его в appname/fields.py (более подробно о создании собственных полей смотрите документацию Django):
 from django.db import models

class TagField(models.TextField):

description = "Stores tags in a single database column."

__metaclass__ = models.SubfieldBase

def __init__(self, delimiter="|", *args, **kwargs):
self.delimiter = delimiter
super(TagField, self).__init__(*args, **kwargs)

def to_python(self, value):
# If it's already a list, leave it
if isinstance(value, list):
return value

# Otherwise, split by delimiter
return value.split(self.delimiter)

def get_prep_value(self, value):
return self.delimiter.join(value)
Для того, чтобы рассказать South об этом поле, Вам нужно сообщить две вещи: что этот класс можно использовать и как получить именованный аргумент из экземпляра поля.

Именованные аргументы

South замораживает поля сохраняя их имя класса и модуль (таким образом можно получить сам класс поля) и именованные аргументы, которые Вы используете для конкретного экземпляра класса (например, CharField(max_lengh=50) не то же самое, что CharField(max_lengh=150)).
Так как Python не хранит именованные аргументы, переданные конструктору класса, South должен восстановить их уже из полученного экземпляра класса. Например, мы знаем что значение именованного аргумента max_length класса CharField хранится в атрибуте self.max_lenght, тогда как ForeignKeys хранят свои именованные аргументы to (определяющие модель, на которую они указывают, так же первый позиционный аргумент) как self.rel.to.
South знает все эти правила для стандартных полей Django, но Вам необходимо объяснить все это касательно своих полей. Хорошая новость состоит в том, что South может отследить цепочку наследования, так что о полях, определённых в родительских классах говорить заново в дочерних классах не надо (или надо сообщить только о тех дополнительных именованных аргументах, которых не было в родительском классе).
В нашем примере мы определяем только один дополнительный именованный аргумент — delimiter. Вот код, который мы добавляем для того, чтобы South мог обработать наше новое поле. Чуть позже мы его объясним:

 from south.modelsinspector import add_introspection_rules
add_introspection_rules([
(
[TagField], # Класс(ы) к которым это применимо
[], # позиционные аргументы (не используется)
{ # именованные аргументы
"delimiter": ["delimiter", {"default": "|"}],
},
),
], ["^southtut.fields.TagField"])

Как Вы можете видеть, для того, чтобы рассказать South о вашем новом поле Вам нужно вызвать функцию south.modelsinspector.add_introspection_rules. Вы должны разместить этот код рядом с определением вашего поля. Так как последнее, что Вы хотели бы — это импортировать поле, но чтобы этот код не был выполнен.
add_introspection_rules принимает два аргумента: список правил и список регулярных выражений. Список регулярных выражений используется South для того чтобы понять, можно ли исследовать это поле. Просто иметь правило, которое подходит для поля недостаточно, так как наследование правил подразумевает, что любой пользовательский класс поля будет иметь хотя бы одно правило, под которое он подпадает (
опять — «(as they will inherit from «Field«, if not something more specificlike «CharField«), and some custom fields can get by with only those inherited rules (more on that shortly)«).
Первый аргумент — список правил. Каждое правило — это кортеж (или список) с тремя элементами:

  1. Список классов к которым применимы эти правила. Практически наверняка у Вас будет тут только одно поле, например, то, про которое мы сейчас говорим.
  2. Спецификация позиционных аргументов. Практически наверняка будет пустым списком — []
  3. Спецификация именованных аргументов: это словарь, где ключ — имя аргумента, а значение — список или кортеж (имя_аргумента, опции)
Имя аргумента определяет место, где может быть найдено значение именованного аргумента — в нашем случае это delimiter, так как значение именованного аргумента мы храним в self.delimiter. (Если бы это было правило ForeignKey, то тут бы стояло rel.to)
Опции- это словарь. Вы можете безопасно оставить этот аргумент пустым, но можно и использовать его для определения значения по умолчанию и если South обнаружит значение, соответствующее этому, то он не будет указывать это ключевое слово в определении заморозки, что позволит это определение сделать более простым и читаемым.

Простые наследования

Если ваше поле наследуется напрямую из другого поля Django, например, CharField, и не добавляет других именованных аргументов, то Вам не нужно добавлять какие-либо правила в add_introspection_rules. Вы можете просто сказать South, что с этим полем всё в порядке:
 class UpperCaseField(models.TextField):
"Убеждаемся, что содержимое всегда в верхнем регистре."

def to_python(self, value):
return value.upper()

def get_prep_value(self, value):
return value.upper()

from south.modelsinspector import add_introspection_rules
add_introspection_rules([], ["^southtut.fields.UpperCaseField"])

Больше информации

Более подробную документацию на эту тему можно обнаружить в разделе Extending introspection.

Автор: Ishayahu Lastov