Various changes to support current receiving workflows
i.e. for sake of truck dump, adding child from invoice etc.
This commit is contained in:
parent
210508480e
commit
b0e8f7d985
7 changed files with 153 additions and 44 deletions
|
@ -72,6 +72,7 @@ class MasterView(View):
|
|||
results_downloadable_csv = False
|
||||
results_downloadable_xlsx = False
|
||||
creatable = True
|
||||
show_create_link = True
|
||||
viewable = True
|
||||
editable = True
|
||||
deletable = True
|
||||
|
@ -601,12 +602,13 @@ class MasterView(View):
|
|||
def render_mobile_row_listitem(self, obj, i):
|
||||
return obj
|
||||
|
||||
def create(self):
|
||||
def create(self, form=None):
|
||||
"""
|
||||
View for creating a new model record.
|
||||
"""
|
||||
self.creating = True
|
||||
form = self.make_form(self.get_model_class())
|
||||
if form is None:
|
||||
form = self.make_form(self.get_model_class())
|
||||
if self.request.method == 'POST':
|
||||
if self.validate_form(form):
|
||||
# let save_create_form() return alternate object if necessary
|
||||
|
@ -2200,7 +2202,7 @@ class MasterView(View):
|
|||
except os.error:
|
||||
return 0
|
||||
|
||||
def make_form(self, instance=None, factory=None, fields=None, schema=None, **kwargs):
|
||||
def make_form(self, instance=None, factory=None, fields=None, schema=None, make_kwargs=None, configure=None, **kwargs):
|
||||
"""
|
||||
Creates a new form for the given model class/instance
|
||||
"""
|
||||
|
@ -2210,15 +2212,19 @@ class MasterView(View):
|
|||
fields = self.get_form_fields()
|
||||
if schema is None:
|
||||
schema = self.make_form_schema()
|
||||
if make_kwargs is None:
|
||||
make_kwargs = self.make_form_kwargs
|
||||
if configure is None:
|
||||
configure = self.configure_form
|
||||
|
||||
# TODO: SQLAlchemy class instance is assumed *unless* we get a dict
|
||||
# (seems like we should be smarter about this somehow)
|
||||
# if not self.creating and not isinstance(instance, dict):
|
||||
if not self.creating:
|
||||
kwargs['model_instance'] = instance
|
||||
kwargs = self.make_form_kwargs(**kwargs)
|
||||
kwargs = make_kwargs(**kwargs)
|
||||
form = factory(fields, schema, **kwargs)
|
||||
self.configure_form(form)
|
||||
configure(form)
|
||||
return form
|
||||
|
||||
def get_form_fields(self):
|
||||
|
@ -2271,12 +2277,10 @@ class MasterView(View):
|
|||
self.set_labels(form)
|
||||
|
||||
def validate_form(self, form):
|
||||
controls = self.request.POST.items()
|
||||
try:
|
||||
self.form_deserialized = form.validate(controls)
|
||||
except deform.ValidationFailure:
|
||||
return False
|
||||
return True
|
||||
if form.validate(newstyle=True):
|
||||
self.form_deserialized = form.validated
|
||||
return True
|
||||
return False
|
||||
|
||||
def objectify(self, form, data):
|
||||
obj = form.schema.objectify(data, context=form.model_instance)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue