Skip to content

Revisiting a form step does not refresh the return from storage.get_step_files(). #207

Open
@ShaheedHaque

Description

@ShaheedHaque

Let say you have a wizard with steps A, B, C... such that step A (for example) has an uploaded file. When step A is passed, form A is validated and the selected file is remembered by storage.get_step_files() in a cache called self._files, and now the current step is B.

If one navigates back to A, even if the selected file is changed, the cache is NOT refreshed because the logic for self._files look like this:

            if (step, field) not in self._files:
                self._files[(step, field)] = UploadedFile(
                    file=self.file_storage.open(tmp_name), **field_dict)

Since neither step nor field have changed, the cache is not refreshed!

The problem is most obvious when the physical name of the file changes, because the content of self.data[self.step_files_key][step] has the new file, but self.get_step_files(self.current_step) and thus current_step_files have the old file name.

I'm not 100% sure of the reason for the cache, but it seems to me that when a step is revisited, the cache MUST be cleared (even if the filename is the same, it might contain something new!!!).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions