Посты с тэгом pyramid


Ищу Python программиста г.Екатеринбург

требуется Python разработчик.

г.Екатеринбург
полный рабочий день

Требования:
* Python
* Pyramid
* git
* postgres

Задачи:
* участие в разработке нового ПО по ТЗ

От нас:
* з/п от 30 000
* интересные задачи
* индексация зарплаты по сдаче проекта
* обучение, в том числе заграницей
* чай, кофе(натуральный), плюшки в офисе

резюме слать мне на почту root@uralbash.ru


REST API для Pyramid при помощи Cornice и SACRUD

Mozilla использует в своих проектах Pyramid и у них есть отличный модуль для создания REST API https://cornice.readthedocs.org/en/latest/

REST API обычно меняет, создает и удаляет записи, которые хранятся в БД. Что бы не писать много кода на SQLAlchemy я использую заготовленные функции из sacrud

Итак поехали, представим сервис REST API для платежных карт с моделью типа:

class Card(Base):
__tablename__ = 'card'

id = Column(Integer, primary_key=True)
number = Column(BigInteger, nullable=False, unique=True)
uid = Column(BYTEA, nullable=False, unique=True)
balance = Column(Numeric(10, 2), nullable=False, default=0)
preference = Column(GUID())

def __json__(self):
return {'id': self.id,
'number': self.number,
'uid': str(self.uid),


Локальный Continuous Integration сервер

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

Принцип работы у всех примерно один:
  • скачать код
  • создать окружение
  • установить (собрать) код
  • запустить и протестировать
  • отправить уведомление
Это можно сделать самостоятельно, например при помощи fabric, cron, chroot или docker или при помощи готовых CI серверов:


Локальный Continuous Integration сервер

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

Принцип работы у всех примерно один:
  • скачать код
  • создать окружение
  • установить (собрать) код
  • запустить и протестировать
  • отправить уведомление
Это можно сделать самостоятельно, например при помощи fabric, cron, chroot или docker или при помощи готовых CI серверов:


Обновление sacrud. Версия 0.1.2

Код: https://github.com/uralbash/sacrud
Описание: http://sacrud.readthedocs.org/ (в процессе)

В этой версии делался упор на кастомизацию интерфейса.

Что нового?
* добавлена пагинация
* теперь pk показывается по умолчанию в форме создания/редактирования
* новая опция sacrud_detail_col где можно задать отображаемые поля в форме редактирования
* новая опция sacrud_list_col где можно задать отображаемые поля в списке записей
* новая опция verbose_name для полей и таблиц
* опция sacrud_css_class, назначает CSS стили полям
* новый атрибут колонки sacrud_position: "inline" (см. реализацию horizontal_fields)
* новая функция horizontal_fields


Обновление sacrud. Версия 0.1.2

Код: https://github.com/uralbash/sacrud
Описание: http://sacrud.readthedocs.org/ (в процессе)

В этой версии делался упор на кастомизацию интерфейса.

Что нового?
* добавлена пагинация
* теперь pk показывается по умолчанию в форме создания/редактирования
* новая опция sacrud_detail_col где можно задать отображаемые поля в форме редактирования
* новая опция sacrud_list_col где можно задать отображаемые поля в списке записей
* новая опция verbose_name для полей и таблиц
* опция sacrud_css_class, назначает CSS стили полям
* новая функция horizontal_fields
* новый тип exttype.GUID
* для переопределения base.html создан шаблон redefineme


Своя панель в pyramid_debugtoolbar

В pyramid_debugtoolbar можно создавать панели для своих нужд.
Документация здесь: http://docs.pylonsproject.org/projects/pyramid_debugtoolbar/en/latest/#adding-custom-panels

Я создал небольшой пример, как это сделать на примере sadisplay.
sadisplay - это модуль который отображает модели SQLAlchemy в виде UML диаграммы.



Было бы удобно видеть схему БД проекта в дебаг панеле. Для этого создадим папку проекта


Своя панель в pyramid_debugtoolbar

В pyramid_debugtoolbar можно создавать панели для своих нужд.
Документация здесь: http://docs.pylonsproject.org/projects/pyramid_debugtoolbar/en/latest/#adding-custom-panels

Я создал небольшой пример, как это сделать на примере sadisplay.
sadisplay - это модуль который отображает модели SQLAlchemy в виде UML диаграммы.



Было бы удобно видеть схему БД проекта в дебаг панеле. Для этого создадим папку проекта


Обновление sacrud. Версия 0.1.1

  
Код: https://github.com/uralbash/sacrud
Описание: http://sacrud.readthedocs.org/

Что нового?
* в расширении для pyramid параметр "sacrud_models" переименован в "sacrud.models"
* "sacrud.models" теперь словарь, а не список:
    settings['sacrud.models'] = {
'Company': [Company, User, EmployeeType],
'Auth': [Group, GroupPermission, UserGroup,
GroupResourcePermission, Resource, UserPermission,
UserResourcePermission, ExternalIdentity],
'': [Company]
}
* в словаре можно поделить модели на группы
* тесты исправлены для Pyramid 1.5:
Removed the ability to influence and query a pyramid.request.Request object as if it were a dictionary. Previously it was possible to use methods like __getitem__, get, items, and other dictlike methods to access value


Обновление sacrud. Версия 0.1.1

  
Код: https://github.com/uralbash/sacrud
Описание: http://sacrud.readthedocs.org/

Что нового?
* в расширении для pyramid параметр "sacrud_models" переименован в "sacrud.models"
* "sacrud.models" теперь словарь, а не список:
    settings['sacrud.models'] = {
'Company': [Company, User, EmployeeType],
'Auth': [Group, GroupPermission, UserGroup,
GroupResourcePermission, Resource, UserPermission,
UserResourcePermission, ExternalIdentity],
'': [Company]
}
* в словаре можно поделить модели на группы
* тесты исправлены для Pyramid 1.5:
Removed the ability to influence and query a pyramid.request.Request object as if it were a dictionary. Previously it was possible to use methods like __getitem__, get, items, and other dictlike methods to access value