Commit fd80711e authored by Serge S. Koval's avatar Serge S. Koval

Allow inline model post-processing for sqla/pewee backends

parent 9207bdc6
...@@ -85,11 +85,15 @@ class FilterSmaller(BaseMongoEngineFilter): ...@@ -85,11 +85,15 @@ class FilterSmaller(BaseMongoEngineFilter):
# Customized type filters # Customized type filters
class BooleanEqualFilter(FilterEqual, filters.BaseBooleanFilter): class BooleanEqualFilter(FilterEqual, filters.BaseBooleanFilter):
pass def apply(self, query, value):
flt = {'%s' % self.column.name: value == '1'}
return query.filter(**flt)
class BooleanNotEqualFilter(FilterNotEqual, filters.BaseBooleanFilter): class BooleanNotEqualFilter(FilterNotEqual, filters.BaseBooleanFilter):
pass def apply(self, query, value):
flt = {'%s' % self.column.name: value != '1'}
return query.filter(**flt)
# Base peewee filter field converter # Base peewee filter field converter
......
...@@ -13,10 +13,11 @@ from .tools import get_primary_key ...@@ -13,10 +13,11 @@ from .tools import get_primary_key
class InlineModelFormList(InlineFieldList): class InlineModelFormList(InlineFieldList):
def __init__(self, form, model, prop, **kwargs): def __init__(self, form, model, prop, inline_view, **kwargs):
self.form = form self.form = form
self.model = model self.model = model
self.prop = prop self.prop = prop
self.inline_view = inline_view
self._pk = get_primary_key(model) self._pk = get_primary_key(model)
...@@ -63,6 +64,8 @@ class InlineModelFormList(InlineFieldList): ...@@ -63,6 +64,8 @@ class InlineModelFormList(InlineFieldList):
# Force relation # Force relation
setattr(model, self.prop, model_id) setattr(model, self.prop, model_id)
self.inline_view.on_model_change(field, model)
model.save() model.save()
......
...@@ -18,11 +18,6 @@ except ImportError: ...@@ -18,11 +18,6 @@ except ImportError:
has_identity_key = False has_identity_key = False
__all__ = (
'QuerySelectField', 'QuerySelectMultipleField',
)
class QuerySelectField(SelectFieldBase): class QuerySelectField(SelectFieldBase):
""" """
Will display a select drop-down field to choose between ORM results in a Will display a select drop-down field to choose between ORM results in a
...@@ -184,7 +179,7 @@ class InlineModelFormList(InlineFieldList): ...@@ -184,7 +179,7 @@ class InlineModelFormList(InlineFieldList):
""" """
TODO: Documentation TODO: Documentation
""" """
def __init__(self, form, session, model, prop, **kwargs): def __init__(self, form, session, model, prop, inline_view, **kwargs):
""" """
Default constructor. Default constructor.
...@@ -196,11 +191,14 @@ class InlineModelFormList(InlineFieldList): ...@@ -196,11 +191,14 @@ class InlineModelFormList(InlineFieldList):
Related model Related model
:param prop: :param prop:
Related property name Related property name
:param inline_view:
Inline view
""" """
self.form = form self.form = form
self.session = session self.session = session
self.model = model self.model = model
self.prop = prop self.prop = prop
self.inline_view = inline_view
self._pk = get_primary_key(model) self._pk = get_primary_key(model)
...@@ -234,6 +232,8 @@ class InlineModelFormList(InlineFieldList): ...@@ -234,6 +232,8 @@ class InlineModelFormList(InlineFieldList):
field.populate_obj(model, None) field.populate_obj(model, None)
self.inline_view.on_model_change(field, model)
def get_pk_from_identity(obj): def get_pk_from_identity(obj):
# TODO: Remove me # TODO: Remove me
......
...@@ -470,11 +470,11 @@ class InlineModelConverter(InlineModelConverterBase): ...@@ -470,11 +470,11 @@ class InlineModelConverter(InlineModelConverterBase):
# Create form # Create form
child_form = get_form(info.model, child_form = get_form(info.model,
converter, converter,
only=info.form_columns, only=info.form_columns,
exclude=exclude, exclude=exclude,
field_args=info.form_args, field_args=info.form_args,
hidden_pk=True) hidden_pk=True)
# Post-process form # Post-process form
child_form = info.postprocess_form(child_form) child_form = info.postprocess_form(child_form)
...@@ -492,6 +492,7 @@ class InlineModelConverter(InlineModelConverterBase): ...@@ -492,6 +492,7 @@ class InlineModelConverter(InlineModelConverterBase):
self.session, self.session,
info.model, info.model,
reverse_prop.key, reverse_prop.key,
info
**kwargs)) **kwargs))
return form_class return form_class
...@@ -56,6 +56,17 @@ class InlineFormAdmin(object): ...@@ -56,6 +56,17 @@ class InlineFormAdmin(object):
""" """
return form_class return form_class
def on_model_change(self, form, model):
"""
Called when inline model is about to be saved.
:param form:
Inline form
:param model:
Model
"""
pass
class ModelConverterBase(object): class ModelConverterBase(object):
def __init__(self, converters=None, use_mro=True): def __init__(self, converters=None, use_mro=True):
...@@ -93,8 +104,8 @@ class ModelConverterBase(object): ...@@ -93,8 +104,8 @@ class ModelConverterBase(object):
return None return None
def get_form(self, model, base_class=BaseForm, def get_form(self, model, base_class=BaseForm,
only=None, exclude=None, only=None, exclude=None,
field_args=None): field_args=None):
raise NotImplemented() raise NotImplemented()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment