#33254: Issue with django.forms.fields.FilePathField() and callable path
-----------------------------------------+-------------------------------
               Reporter:  Chakib         |          Owner:  nobody
                   Type:  Uncategorized  |         Status:  new
              Component:  Forms          |        Version:  3.2
               Severity:  Normal         |       Keywords:  FilePathField
           Triage Stage:  Unreviewed     |      Has patch:  0
    Needs documentation:  0              |    Needs tests:  0
Patch needs improvement:  0              |  Easy pickings:  0
                  UI/UX:  0              |
-----------------------------------------+-------------------------------
 Hi,

 First post here, so I don't know if it's the correct channel for this kind
 of issue.
 Sorry if it's not.

 Since v 3.0 we can set path attribute as a callable in a
 models.fields.FilePathField(),
 as discussed here:
 [https://code.djangoproject.com/ticket/29529]

 and documented here:
 
[https://docs.djangoproject.com/en/3.0/ref/models/fields/#django.db.models.FilePathField.path]

 The commit adding this feature can be found here:
 
[https://github.com/django/django/commit/ef082ebb84f00e38af4e8880d04e8365c2766d34]

 I have an issue when I try to use django.forms.fields.FilePathField()
 
[https://github.com/django/django/blob/stable/3.2.x/django/forms/fields.py#L1095]

 In the case where path is defined as a callable, and
 "os.scandir(self.path)" is called (as showed in
 
[https://github.com/django/django/blob/stable/3.2.x/django/forms/fields.py#L1126]).
 I have this explicit error:
 "scandir: path should be string, bytes, os.PathLike, integer or None, not
 function"

 If I monkey-patch "self.path"  in the {{{__init__}}} method with a pre-
 check similar to what it was done for the added feature
 
[https://github.com/django/django/blob/stable/3.2.x/django/db/models/fields/__init__.py#L1711]
 it seems to solve this issue.
 {{{
 ...
 path = self.path() if callable(self.path) else self.path
 for f in os.scandir(path):
 ...
 }}}

 I don't know if it's a bug or if I miss something using
 models.fields.FilePathField() and django.forms.fields.FilePathField()

-- 
Ticket URL: <https://code.djangoproject.com/ticket/33254>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/051.397d416e5eee6dba7ad118f27977bee0%40djangoproject.com.

Reply via email to