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


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),


Обновление 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


Обновление 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


CRUD интерфейс для SQLAlchemy и подключение к Pyramid

Запилил Yet another CRUD интерфейс для SQLAlchemy. По сути это аналог Django админки или FormAlchemy, но ОЧЕНЬ сильно упрощенный, ничего лишнего. Есть поддержка большинства полей + кастомные поля типа файл(для загрузки файлов, изображений) и GUID. Довольно просто подключить к Pyramid проекту и сразу начать работать по адресу http://localhost:6543/sacrud

Проект доступен на github https://github.com/uralbash/sacrud

В след. релизах планирую добавить новые типы полей, кастомные поля типа tree и btree с AJAX обработкой в интерфейсе, расширение для других фреймворков (например flask), кастомные фильтры, пагинацию итд


Установка

PyPi

pip install sacrud

Из исходников

python setup.py install

 

Пример использования в Pyramid



[Из песочницы] Связка ExtJS+Django+Apache+SVN deploy (и простой CRUD контроллер на Django)

Предисловие

Сразу хочу попросить прощения за столь перегруженную статью, но для меня сейчас всё это актуально и связано. Думаю что некоторым это может пригодиться для будущей разработки. Хочу обратить внимание, что в этой статье я не стану рассказывать вам как устанавливать те или иные тривиальные вещи, установка которых, к тому же, зависит от той или иной платформы. Также в статье я не описываю телодвижения по настройке прав доступа к файлам сервера, опять же, это зависит от реализации. В статье описан процесс настройки на PDC сервер с именем tci.lan, все имена сохранены, в вашем случае их следует заменить на соответствующие вам. Данная статья содержит код, для улучшения читаемости он спрятан в спойлерах. Читать дальше →


Smarter CRUD для Django

Хабы: Django

Выпустил в свет инструмент для более удобного создания CRUD-based приложений на Django: github.com/05bit/django-smarter.

Для чего это нужно? Бывает, что приложение состоит из однотипных страниц — создать, удалить, посмотреть объект, список объектов. При этом, функционал стандартной админки уже тесен, так как нужен более хитрый интерфейс и не всегда стандартная логика.

Да, есть Generic views, но это все равно достаточно много однотипного кода, что быстро приводит к огульному копи-пасту.

Пример использования — взят из документации. Читать дальше →



Pylons + FormAlchemy REST Controller


Для своих REST контроллеров можно использовать, формы FormAlchemy.
Создаем контроллер:
yourproj% paster restcontroller comment comments
Creating yourproj/yourproj/controllers/comments.py
Creating yourproj/yourproj/tests/functional/test_comments.py
Или если нужно в отдельной директории
yourproj% paster restcontroller admin/tracback admin/trackbacks
Creating yourproj/controllers/admin
Creating yourproj/yourproj/controllers/admin/trackbacks.py
Creating yourproj/yourproj/tests/functional/test_admin_trackbacks.py

В файле нашего REST контроллера добавим
from formalchemy.ext.pylons.controller impor


Pylons + FormAlchemy REST Controller

Для своих REST контроллеров можно использовать, формы FormAlchemy.
Создаем контроллер:

yourproj% paster restcontroller comment comments
Creating yourproj/yourproj/controllers/comments.py
Creating yourproj/yourproj/tests/functional/test_comments.py
Или если нужно в отдельной директории
yourproj% paster restcontroller admin/tracback admin/trackbacks
Creating yourproj/controllers/admin
Creating yourproj/yourproj/controllers/admin/trackbacks.py
Creating yourproj/yourproj/tests/functional/test_admin_trackbacks.py

В файле нашего REST контроллера добавим
from formalchemy.ext.pylons.controller import RESTController

И в конце файла обернем его так
# wrap with formalchemy RESTController
CommentsController = RESTController(CommentsController, 'comment', 'comments')

Теперь если закомментировать какой-нибудь из стандартных методов в контроллере(index, new, update,