Refs #24215 -- Fixed Python 3.5 compatiblity for unhandled lazy ops error.

This commit is contained in:
Tim Graham 2015-09-16 09:10:59 -04:00
parent da5747f8e4
commit 7506616f16
2 changed files with 7 additions and 5 deletions

View File

@ -381,6 +381,10 @@ class Apps(object):
def function(model):
next_function = partial(supplied_fn, model)
# Annotate the function with its field for retrieval in
# migrations.state.StateApps.
if getattr(supplied_fn, 'keywords', None):
next_function.field = supplied_fn.keywords.get('field')
self.lazy_model_operation(next_function, *more_models)
# If the model is already loaded, pass it to the function immediately.

View File

@ -244,11 +244,9 @@ class StateApps(Apps):
has a keyword argument called 'field'.
"""
def extract_field(operation):
# Expect a functools.partial() with a kwarg called 'field' applied.
try:
return operation.func.keywords['field']
except (AttributeError, KeyError):
return None
# operation is annotated with the field in
# apps.register.Apps.lazy_model_operation().
return getattr(operation, 'field', None)
def extract_field_names(operations):
return (str(field) for field in map(extract_field, operations) if field)