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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
__all__ = ['AlchemyGrid', 'ChildGridField', 'EnumFieldRenderer',
 | 
			
		||||
           'PrettyDateTimeFieldRenderer', 'make_fieldset', 'required',
 | 
			
		||||
           'pretty_datetime']
 | 
			
		||||
__all__ = ['AlchemyGrid', 'ChildGridField', 'PropertyField',
 | 
			
		||||
           'EnumFieldRenderer', 'PrettyDateTimeFieldRenderer',
 | 
			
		||||
           'make_fieldset', 'required', 'pretty_datetime']
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TemplateEngine(formalchemy.templates.TemplateEngine):
 | 
			
		||||
| 
						 | 
				
			
			@ -110,8 +110,8 @@ class AlchemyGrid(formalchemy.Grid):
 | 
			
		|||
    #     self.url_kwargs = url_kwargs
 | 
			
		||||
    #     self.sortable = config.get('sortable', False)
 | 
			
		||||
 | 
			
		||||
    def __init__(self, cls, instances, config, url_grid, url_object=None,
 | 
			
		||||
                 url_delete=None, **kwargs):
 | 
			
		||||
    def __init__(self, cls, instances, config, gridurl=None, objurl=None,
 | 
			
		||||
                 delurl=None, **kwargs):
 | 
			
		||||
        """
 | 
			
		||||
        Grid constructor.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -123,9 +123,10 @@ class AlchemyGrid(formalchemy.Grid):
 | 
			
		|||
 | 
			
		||||
        formalchemy.Grid.__init__(self, cls, instances, **kwargs)
 | 
			
		||||
        self.config = config
 | 
			
		||||
        self.url_grid = url_grid
 | 
			
		||||
        self.url_object = url_object
 | 
			
		||||
        self.url_delete = url_delete
 | 
			
		||||
        self.request = config['request']
 | 
			
		||||
        self.gridurl = gridurl
 | 
			
		||||
        self.objurl = objurl
 | 
			
		||||
        self.delurl = delurl
 | 
			
		||||
        self.sortable = config.get('sortable', False)
 | 
			
		||||
        self.deletable = config.get('deletable', False)
 | 
			
		||||
        self.pager = instances if isinstance(instances, paginate.Page) else None
 | 
			
		||||
| 
						 | 
				
			
			@ -149,9 +150,15 @@ class AlchemyGrid(formalchemy.Grid):
 | 
			
		|||
        return format_attrs(**attrs)
 | 
			
		||||
 | 
			
		||||
    def url_attrs(self):
 | 
			
		||||
        return format_attrs(url=self.url_grid,
 | 
			
		||||
                            objurl=self.url_object,
 | 
			
		||||
                            delurl=self.url_delete)
 | 
			
		||||
        attrs = {}
 | 
			
		||||
        url = self.request.route_url
 | 
			
		||||
        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):
 | 
			
		||||
    #     """
 | 
			
		||||
| 
						 | 
				
			
			@ -278,6 +285,20 @@ class ChildGridField(formalchemy.Field):
 | 
			
		|||
        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):
 | 
			
		||||
    kwargs.setdefault('session', Session())
 | 
			
		||||
    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):
 | 
			
		||||
            value = request.session[full_key]
 | 
			
		||||
            config[key] = value
 | 
			
		||||
    config['request'] = request
 | 
			
		||||
    config['search'] = search
 | 
			
		||||
    config['url'] = url
 | 
			
		||||
    return config
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -149,7 +149,7 @@ $(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());
 | 
			
		||||
	filter.find(':first-child').attr('checked', true);
 | 
			
		||||
	filter.show();
 | 
			
		||||
| 
						 | 
				
			
			@ -238,7 +238,7 @@ $(function() {
 | 
			
		|||
		});
 | 
			
		||||
	    });
 | 
			
		||||
	} 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?")) {
 | 
			
		||||
	    var grid = $(this).parents('div.grid:first');
 | 
			
		||||
	    var url = grid.attr('delurl');
 | 
			
		||||
//	    alert(url + '?uuid=' + get_uuid(this) + '&delete=true');
 | 
			
		||||
	    location.href = url + '?uuid=' + get_uuid(this) + '&delete=true';
 | 
			
		||||
	    location.href = url.replace(/%7Buuid%7D/, get_uuid(this));
 | 
			
		||||
	}
 | 
			
		||||
	return false;
 | 
			
		||||
    });
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,7 @@
 | 
			
		|||
  <% visible = [] %>
 | 
			
		||||
  % for f in search.sorted_filters():
 | 
			
		||||
      <% 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)}
 | 
			
		||||
	<label for="${f.name}">${f.label}</label>
 | 
			
		||||
	${f.types_select()}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -114,21 +114,17 @@ def crud(request, cls, fieldset_factory, home=None, delete=None, post_sync=None,
 | 
			
		|||
                    if res:
 | 
			
		||||
                        return res
 | 
			
		||||
 | 
			
		||||
            if request.params.get('partial'):
 | 
			
		||||
                # Session.flush()
 | 
			
		||||
                # return self.json_success(uuid=fs.model.uuid)
 | 
			
		||||
                assert False, "need to fix this"
 | 
			
		||||
                if request.params.get('partial'):
 | 
			
		||||
                    # Session.flush()
 | 
			
		||||
                    # return self.json_success(uuid=fs.model.uuid)
 | 
			
		||||
                    assert False, "need to fix this"
 | 
			
		||||
 | 
			
		||||
            # Session.commit()
 | 
			
		||||
            if not home:
 | 
			
		||||
                # FIXME
 | 
			
		||||
                # home = request.route_url.current() + '?uuid=' + fs.model.uuid
 | 
			
		||||
                # home = request.route_url('home')
 | 
			
		||||
                fs.model = Session.merge(fs.model)
 | 
			
		||||
                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'))
 | 
			
		||||
                if not home:
 | 
			
		||||
                    fs.model = Session.merge(fs.model)
 | 
			
		||||
                    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)
 | 
			
		||||
 | 
			
		||||
    data = {'fieldset': fs, 'crud': True}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue