Описание: http://sacrud.readthedocs.org/ (в процессе)
В этой версии делался упор на кастомизацию интерфейса.
Что нового?
* добавлена пагинация
* теперь pk показывается по умолчанию в форме создания/редактирования
* новая опция sacrud_detail_col где можно задать отображаемые поля в форме редактирования
* новая опция sacrud_list_col где можно задать отображаемые поля в списке записей
* новая опция verbose_name для полей и таблиц
* опция sacrud_css_class, назначает CSS стили полям
* новый атрибут колонки sacrud_position: "inline" (см. реализацию horizontal_fields)
* новая функция horizontal_fields
* новый тип exttype.GUID
* для переопределения base.html создан шаблон redefineme.html
* вывод флеш уведомлений если задана sesion_factory
* исправлены названия классов в шаблонах у полей
* исправлен шаблон ForeignKey.jinja2
* sa_create, sa_read, sa_update, sa_delete view вынесены в общий класс CRUD
* в example добавлены pyramid_beaker , примеры с кастомизацией, FileField и все остальные поля которые есть в sacrud/templates/sacrud/types.
Пример кастомизации:
models.py
class TestCustomizing(Base):
__tablename__ = "test_customizing"
id = Column(Integer, primary_key=True)
name = Column(String)
date = Column(Date, info={"verbose_name": 'date JQuery-ui'})
name_ru = Column(String, info={"verbose_name": u'Название', })
name_fr = Column(String, info={"verbose_name": u'nom', })
name_bg = Column(String, info={"verbose_name": u'Име', })
name_cze = Column(String, info={"verbose_name": u'název', })
description = Column(Text)
description2 = Column(Text)
visible = Column(Boolean)
in_menu = Column(Boolean, info={"verbose_name": u'menu?', })
in_banner = Column(Boolean, info={"verbose_name": u'on banner?', })
# SACRUD
verbose_name = u'Customizing table'
sacrud_css_class = {'tinymce': [description, description2],
'content': [description],
'name': [name], 'Date': [date]}
sacrud_list_col = [name, name_ru, name_cze]
sacrud_detail_col = [name,
hosrizontal_field(name_ru, name_bg, name_fr, name_cze,
sacrud_name=u"i18n names"),
description, date,
hosrizontal_field(in_menu, visible, in_banner,
sacrud_name=u"Расположение"),
description2]
templates/sacrud/redefineme.jinja2
{% extends "sacrud/base.jinja2" %}
{% block userspace %}
{{ super() }}
<!-- Date field -->
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
<link href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css" rel="stylesheet"></link>
<style>
.content {
height: 550px;
}
.name {
width: 400px;
}
</style>
<script>
$(function() {
$(".Date").datepicker({ dateFormat: 'yy-mm-dd' });
});
</script>
<script src="//tinymce.cachefly.net/4.0/tinymce.min.js"></script>
<script>
tinymce.init({
selector:'textarea.tinymce',
plugins: "image link",
file_browser_callback: function(field_name, url, type, win) {
tinymce.activeEditor.windowManager.open({
title: "SACRUD file browser",
url: "/image/filebrowser",
width: 600,
height: 400,
}, {
oninsert: function(url) {
win.document.getElementById(field_name).value = url;
}
});
},
});
</script>
{% endblock %}
{% block sa_body %}
{{ super() }}
{% endblock %}
Результат:
![]() |
| Пример кастомного CRUD интерфейса для SQLAlchemy |
Демо приложение: https://github.com/uralbash/pyramid_sacrud_example


Комментариев нет:
Отправить комментарий