save point
This commit is contained in:
parent
17f2dfe1d1
commit
ce08699104
5 changed files with 47 additions and 30 deletions
|
@ -44,9 +44,9 @@ from edbob.util import prettify
|
||||||
from edbob.pyramid import Session
|
from edbob.pyramid import Session
|
||||||
|
|
||||||
|
|
||||||
__all__ = ['AlchemyGrid', 'ChildGridField', 'EnumFieldRenderer',
|
__all__ = ['AlchemyGrid', 'ChildGridField', 'PropertyField',
|
||||||
'PrettyDateTimeFieldRenderer', 'make_fieldset', 'required',
|
'EnumFieldRenderer', 'PrettyDateTimeFieldRenderer',
|
||||||
'pretty_datetime']
|
'make_fieldset', 'required', 'pretty_datetime']
|
||||||
|
|
||||||
|
|
||||||
class TemplateEngine(formalchemy.templates.TemplateEngine):
|
class TemplateEngine(formalchemy.templates.TemplateEngine):
|
||||||
|
@ -110,8 +110,8 @@ class AlchemyGrid(formalchemy.Grid):
|
||||||
# self.url_kwargs = url_kwargs
|
# self.url_kwargs = url_kwargs
|
||||||
# self.sortable = config.get('sortable', False)
|
# self.sortable = config.get('sortable', False)
|
||||||
|
|
||||||
def __init__(self, cls, instances, config, url_grid, url_object=None,
|
def __init__(self, cls, instances, config, gridurl=None, objurl=None,
|
||||||
url_delete=None, **kwargs):
|
delurl=None, **kwargs):
|
||||||
"""
|
"""
|
||||||
Grid constructor.
|
Grid constructor.
|
||||||
|
|
||||||
|
@ -123,9 +123,10 @@ class AlchemyGrid(formalchemy.Grid):
|
||||||
|
|
||||||
formalchemy.Grid.__init__(self, cls, instances, **kwargs)
|
formalchemy.Grid.__init__(self, cls, instances, **kwargs)
|
||||||
self.config = config
|
self.config = config
|
||||||
self.url_grid = url_grid
|
self.request = config['request']
|
||||||
self.url_object = url_object
|
self.gridurl = gridurl
|
||||||
self.url_delete = url_delete
|
self.objurl = objurl
|
||||||
|
self.delurl = delurl
|
||||||
self.sortable = config.get('sortable', False)
|
self.sortable = config.get('sortable', False)
|
||||||
self.deletable = config.get('deletable', False)
|
self.deletable = config.get('deletable', False)
|
||||||
self.pager = instances if isinstance(instances, paginate.Page) else None
|
self.pager = instances if isinstance(instances, paginate.Page) else None
|
||||||
|
@ -149,9 +150,15 @@ class AlchemyGrid(formalchemy.Grid):
|
||||||
return format_attrs(**attrs)
|
return format_attrs(**attrs)
|
||||||
|
|
||||||
def url_attrs(self):
|
def url_attrs(self):
|
||||||
return format_attrs(url=self.url_grid,
|
attrs = {}
|
||||||
objurl=self.url_object,
|
url = self.request.route_url
|
||||||
delurl=self.url_delete)
|
if self.gridurl:
|
||||||
|
attrs['url'] = self.gridurl
|
||||||
|
if self.objurl:
|
||||||
|
attrs['objurl'] = url(self.objurl, uuid='{uuid}')
|
||||||
|
if self.delurl:
|
||||||
|
attrs['delurl'] = url(self.delurl, uuid='{uuid}')
|
||||||
|
return format_attrs(**attrs)
|
||||||
|
|
||||||
# def render(self, class_=None, **kwargs):
|
# def render(self, class_=None, **kwargs):
|
||||||
# """
|
# """
|
||||||
|
@ -278,6 +285,20 @@ class ChildGridField(formalchemy.Field):
|
||||||
self.set(readonly=True)
|
self.set(readonly=True)
|
||||||
|
|
||||||
|
|
||||||
|
class PropertyField(formalchemy.Field):
|
||||||
|
"""
|
||||||
|
Convenience class for fields which simply involve a read-only property
|
||||||
|
value.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, name, attr=None, *args, **kwargs):
|
||||||
|
super(PropertyField, self).__init__(name, *args, **kwargs)
|
||||||
|
if not attr:
|
||||||
|
attr = name
|
||||||
|
self.set(value=lambda x: getattr(x, attr))
|
||||||
|
self.set(readonly=True)
|
||||||
|
|
||||||
|
|
||||||
def make_fieldset(model, **kwargs):
|
def make_fieldset(model, **kwargs):
|
||||||
kwargs.setdefault('session', Session())
|
kwargs.setdefault('session', Session())
|
||||||
return FieldSet(model, **kwargs)
|
return FieldSet(model, **kwargs)
|
||||||
|
|
|
@ -137,6 +137,7 @@ def get_grid_config(name, request, search=None, url=None, **kwargs):
|
||||||
elif request.session.get(full_key):
|
elif request.session.get(full_key):
|
||||||
value = request.session[full_key]
|
value = request.session[full_key]
|
||||||
config[key] = value
|
config[key] = value
|
||||||
|
config['request'] = request
|
||||||
config['search'] = search
|
config['search'] = search
|
||||||
config['url'] = url
|
config['url'] = url
|
||||||
return config
|
return config
|
||||||
|
|
|
@ -149,7 +149,7 @@ $(function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#add-filter').live('change', function() {
|
$('#add-filter').live('change', function() {
|
||||||
var div = $(this).parents('div.filters:first');
|
var div = $(this).parents('div.filterset:first');
|
||||||
var filter = div.find('#filter-'+$(this).val());
|
var filter = div.find('#filter-'+$(this).val());
|
||||||
filter.find(':first-child').attr('checked', true);
|
filter.find(':first-child').attr('checked', true);
|
||||||
filter.show();
|
filter.show();
|
||||||
|
@ -238,7 +238,7 @@ $(function() {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
location.href = div.attr('objurl') + '?uuid=' + get_uuid(this);
|
location.href = div.attr('objurl').replace(/%7Buuid%7D/, get_uuid(this));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -273,8 +273,7 @@ $(function() {
|
||||||
if (confirm("Do you really wish to delete this object?")) {
|
if (confirm("Do you really wish to delete this object?")) {
|
||||||
var grid = $(this).parents('div.grid:first');
|
var grid = $(this).parents('div.grid:first');
|
||||||
var url = grid.attr('delurl');
|
var url = grid.attr('delurl');
|
||||||
// alert(url + '?uuid=' + get_uuid(this) + '&delete=true');
|
location.href = url.replace(/%7Buuid%7D/, get_uuid(this));
|
||||||
location.href = url + '?uuid=' + get_uuid(this) + '&delete=true';
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<% visible = [] %>
|
<% visible = [] %>
|
||||||
% for f in search.sorted_filters():
|
% for f in search.sorted_filters():
|
||||||
<% f = search.filters[f] %>
|
<% f = search.filters[f] %>
|
||||||
<div class="filter" id="filter-${f.name}"${' style="display: none;"' if not search.config.get('include_filter_'+f.name) else ''}>
|
<div class="filter" id="filter-${f.name}"${' style="display: none;"' if not search.config.get('include_filter_'+f.name) else ''|n}>
|
||||||
${search.checkbox('include_filter_'+f.name)}
|
${search.checkbox('include_filter_'+f.name)}
|
||||||
<label for="${f.name}">${f.label}</label>
|
<label for="${f.name}">${f.label}</label>
|
||||||
${f.types_select()}
|
${f.types_select()}
|
||||||
|
|
|
@ -114,21 +114,17 @@ def crud(request, cls, fieldset_factory, home=None, delete=None, post_sync=None,
|
||||||
if res:
|
if res:
|
||||||
return res
|
return res
|
||||||
|
|
||||||
if request.params.get('partial'):
|
if request.params.get('partial'):
|
||||||
# Session.flush()
|
# Session.flush()
|
||||||
# return self.json_success(uuid=fs.model.uuid)
|
# return self.json_success(uuid=fs.model.uuid)
|
||||||
assert False, "need to fix this"
|
assert False, "need to fix this"
|
||||||
|
|
||||||
# Session.commit()
|
if not home:
|
||||||
if not home:
|
fs.model = Session.merge(fs.model)
|
||||||
# FIXME
|
home = request.current_route_url(uuid=fs.model.uuid)
|
||||||
# home = request.route_url.current() + '?uuid=' + fs.model.uuid
|
request.session.flash("%s \"%s\" has been %s." % (
|
||||||
# home = request.route_url('home')
|
fs.crud_title, fs.get_display_text(),
|
||||||
fs.model = Session.merge(fs.model)
|
'updated' if fs.edit else 'created'))
|
||||||
home = request.current_route_url() + '?uuid=' + fs.model.uuid
|
|
||||||
request.session.flash("%s \"%s\" has been %s." % (
|
|
||||||
fs.crud_title, fs.get_display_text(),
|
|
||||||
'updated' if fs.edit else 'created'))
|
|
||||||
return HTTPFound(location=home)
|
return HTTPFound(location=home)
|
||||||
|
|
||||||
data = {'fieldset': fs, 'crud': True}
|
data = {'fieldset': fs, 'crud': True}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue