Commit 7506616f authored by Tim Graham's avatar Tim Graham
Browse files

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

parent da5747f8
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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.
+3 −5
Original line number Diff line number Diff line
@@ -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)