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


pyramid_formalchemy


FormAlchemy это CRUD для SQLAlchemy. Для Pylons существовало расширение прямо в самом модуле в разделе ext. Для Pyramid создали отдельный пакет pyramid_formalchemy. Посмотрим как это работает:

Создаем проект

pcreate -s alchemy -s pyramid_fa myapp

добавляем в проект файл forms.py
from formalchemy import FieldSet, Grid

структура файлов должна выглядеть так
| |+static/
| |+templates/
| |-__init__.py
| |-faforms.py
| |-fainit.py
| |-faroutes.py
| |-forms.py
| |-models.py
| |-tests.py
| `-views.py

изм


FormAlchemy KeyError: "Key not found: "

Ошибка в FormAlchemy типа KeyError: "Key not found: u'Task--super_task_id'" лечится обновлением

pip install formalchemy --upgrade
При этом новая версия подтянет бетта версию webob 1.2 с которым pylons 1 еще не работает. Откатимся
pip install webob==1.1.1
Ошибка должна исчезнуть, вот обсуждение google groups


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,


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


Админка FormAlchemy для Pylons и Jinja

Для SQLAlchemy существуют интерфейсы управления моделями(что-то типа админки). Как минимум их 2, это Rum и formalchemy.ext.pylons.

Рассмотрим FormAlchemy. Вообще как обычно можно прочитать документацию, но я опишу еще как это все состыковать с шаблонами на Jinja и поддержкой полей Postgres таких как mac, cidr, net и т.д..

Создаем контроллер admin

paster controller admin

Далее редактируем его controllers/admin.py
# coding=utf-8
import logging

from pylons import request, response, session, tmpl_context as c, url

from formalchemy.ext.pylons.controller import ModelsController

from webhelpers.paginate import Page

from repoze.what.predicates import has_permission
from


Админка FormAlchemy для Pylons и Jinja


Для SQLAlchemy существуют интерфейсы управления моделями(что-то типа админки). Как минимум их 2, это Rum и formalchemy.ext.pylons.

Рассмотрим FormAlchemy. Вообще как обычно можно прочитать документацию, но я опишу еще как это все состыковать с шаблонами на Jinja и поддержкой полей Postgres таких как mac, cidr, net и т.д..

Создаем контроллер admin
paster controller admin

Далее редактируем