Opened 13 months ago

Last modified 13 months ago

#34920 closed Bug

Reordered file extensions for improved validation — at Version 4

Reported by: ksg Owned by: ksg
Component: Core (Other) Version: dev
Severity: Normal Keywords:
Cc: Triage Stage: Ready for checkin
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Tim Graham)

django.core.validators.FileExtensionValidator had an __eq__ method to compare the validator class. However, comparing arrays is not accurate when the order of elements in the arrays is different.

def __eq__(self, other):
    return (
        isinstance(other, self.__class__)
        and sorted(self.allowed_extensions) == sorted(other.allowed_extensions)
        and self.message == other.message
        and self.code == other.code
    )

This test case failed:

self.assertEqual(
    FileExtensionValidator(["jpg", "png", "txt"]),
    FileExtensionValidator(["txt", "jpg", "png"]),
)

So I suggest comparing two extension arrays after sorting them.

Change History (4)

comment:1 by ksg, 13 months ago

Description: modified (diff)

comment:3 by ksg, 13 months ago

Owner: changed from nobody to ksg
Status: newassigned

comment:4 by Tim Graham, 13 months ago

Description: modified (diff)

I'd think that validators that behave identically should be considered equal. Did you run into a real-world bug with the current behavior?

Note: See TracTickets for help on using tickets.
Back to Top