Ваш вариант принимает ответы 'Yд', 'Nн'и т.д. К тому же, несмотря на кажущуюся изящность предложенного решения, идет разбор словаря (окей, это py3, список ключей достается бесплатно), а сам поиск происходит в строках 'yYдД', т.е. вроде как используется самый быстрый инструмент, но по факту ради красоты.
Чтобы два раза не вставать:
В этом способе тоже можно использовать принцип отсечения лишнего и сократить регулярные выражения до вида [YД] и [NН] с помощью метода upper().
поддержка атрибута __prefix__ для кастомных префиксов, которые идут вразрез с pep8 (по-умолчанию берется имя класса, которое не может содержать подчеркивания)
поддержка методов и свойств (property) типа так:
from pkgconf import Conf
class MyEmailService(Conf):
USERNAME = 'username'
PASSWORD = 'password'
@property
def DEBUG(self):
return self.USERNAME.startswith('test_')
Пользуясь случяем, прошу разрабов Opera Mobile для Android добавить этот поисковик. Часто перемещаюсь, иногда инет едва ползет, турбо спасает, но для пользования DDG приходится открвать его через speeddial.
У меня через полгода отключился номер теле2, которому было почти 10 лет. Вероятно, другие операторы поддерживают номер дольше, но т2 я ни на что не променяю.
За год пожил в трех странах. На российском номере было около 5-6 баксов, онлайн форма для перевода денег на другой номер работает вкривь и вкось, раза 3 заполнял, деньги так и не перевели, кому-то достанется приятный бонус. Каждый раз новый аккаунт, потому что больше никак не связать. Приходится пользоваться по работе, вот и сейчас сижу, жду, когда вылетит этот номер и придется привязываться к другому.
Урвать кусочек десктопов, конечно же, где все эти оптимизации энергопотребления и тепловыделения не так интересны потребителю, как разница в цене при сопоставимой производительности.
одна и та же материнская плата может подойти для продуктов двух или более поколений.
Менять один дорогой проц на другой дорогой из-за 10% прироста можно, разве что, от скуки, имхо.
Сейчас пишу документацию и до меня дошло, что я упустил одну важную деталь: во момент инициализации виджета, ему передается объект request, т.е. вы можете делать так:
class OrdersWidget(widgets.ItemList):
model = Order
def get_queryset(self):
queryset = super(OrdersWidget, self).get_queryset()
if not self.request.user.is_superuser:
# Если это менеджер, ограничить выдачу его заказами
return queryset.filter(manager=self.request.user)
return queryset
Это не админка, скорее расширение. Технически джанга использует Model как апи, а ModelAdmin как конфигурацию. Model хранит в себе представление данных и их поведение (тип, валидации). Для формирования интерфейса используются мета-данные, вроде, названия приложения и имени модели — все это есть в Model, поэтому и я ее использую, к тому же джангистам все это знакомо — я не хотел сильно велосипедить. Только с этим есть одна проблема: джанга не умеет брать одну модель из СУБД, другую из монги, третью из редис и т.д. Мои обертки рассчитаны на это.
Спасибо, поправил. Я давно не был на хабре, раньше было принято писать о грамматических ошибках в личку, если, конечно, аудитории все еще интереснее обсуждать техническую сторону публикации.
Ваш вариант принимает ответы
'Yд','Nн'и т.д. К тому же, несмотря на кажущуюся изящность предложенного решения, идет разбор словаря (окей, это py3, список ключей достается бесплатно), а сам поиск происходит в строках'yYдД', т.е. вроде как используется самый быстрый инструмент, но по факту ради красоты.Чтобы два раза не вставать:
Достаточно добавить флаг игнорирования регистра:
Вынес в отдельный пакет. Пост на хабре.
Обновил версию до 0.2.0
Добавил релиз 0.2.0
__prefix__для кастомных префиксов, которые идут вразрез с pep8 (по-умолчанию берется имя класса, которое не может содержать подчеркивания)поддержка методов и свойств (
property) типа так:Менять один дорогой проц на другой дорогой из-за 10% прироста можно, разве что, от скуки, имхо.