Skip to content
Snippets Groups Projects
Commit 835dac1b authored by Felix Chadwick-Smith's avatar Felix Chadwick-Smith
Browse files

Add Flask-WTF to requirements.txt

parent 94dc5ea5
No related branches found
No related tags found
1 merge request!6Master
Showing
with 28 additions and 20 deletions
......@@ -4,6 +4,7 @@ click==8.1.7
colorama==0.4.6
Flask==3.0.0
Flask-SQLAlchemy==3.1.1
Flask-WTF==1.2.0
gevent==23.9.1
greenlet==3.0.3
gunicorn==21.2.0
......
Metadata-Version: 2.1
Name: Flask-WTF
Version: 1.2.1
Version: 1.2.0
Summary: Form rendering, validation, and CSRF protection for Flask with WTForms.
Project-URL: Documentation, https://flask-wtf.readthedocs.io/
Project-URL: Changes, https://flask-wtf.readthedocs.io/changes/
......
flask_wtf-1.2.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
flask_wtf-1.2.1.dist-info/METADATA,sha256=9Y5upDJ7WU2m2l4erWImF3HcVSWIZKH3TdX6klYpq4M,3373
flask_wtf-1.2.1.dist-info/RECORD,,
flask_wtf-1.2.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
flask_wtf-1.2.1.dist-info/WHEEL,sha256=9QBuHhg6FNW7lppboF2vKVbCGTVzsFykgRQjjlajrhA,87
flask_wtf-1.2.1.dist-info/licenses/LICENSE.rst,sha256=1fGQNkUVeMs27u8EyZ6_fXyi5w3PBDY2UZvEIOFafGI,1475
flask_wtf/__init__.py,sha256=x6ydw5SJzsXZgz-Y6IM_95Sy8VufRepvZH1DUIlFoTo,214
flask_wtf-1.2.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
flask_wtf-1.2.0.dist-info/METADATA,sha256=DzMrNjYSRoyVUkYdVzRXCc0AOriWm1nM4HzNyd8VSMo,3373
flask_wtf-1.2.0.dist-info/RECORD,,
flask_wtf-1.2.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
flask_wtf-1.2.0.dist-info/WHEEL,sha256=9QBuHhg6FNW7lppboF2vKVbCGTVzsFykgRQjjlajrhA,87
flask_wtf-1.2.0.dist-info/licenses/LICENSE.rst,sha256=1fGQNkUVeMs27u8EyZ6_fXyi5w3PBDY2UZvEIOFafGI,1475
flask_wtf/__init__.py,sha256=ObJw25Z-Uq2HgLhMKhfKk-BVr2hBXxBdEx_fyV4geBA,214
flask_wtf/__pycache__/__init__.cpython-311.pyc,,
flask_wtf/__pycache__/_compat.cpython-311.pyc,,
flask_wtf/__pycache__/csrf.cpython-311.pyc,,
......@@ -13,7 +13,7 @@ flask_wtf/__pycache__/form.cpython-311.pyc,,
flask_wtf/__pycache__/i18n.cpython-311.pyc,,
flask_wtf/_compat.py,sha256=N3sqC9yzFWY-3MZ7QazX1sidvkO3d5yy4NR6lkp0s94,248
flask_wtf/csrf.py,sha256=O-fjnWygxxi_FsIU2koua97ZpIhiOJVDHA57dXLpvTA,10171
flask_wtf/file.py,sha256=AsfkYTCgtqGWySimc_NjeAxg-DtpdcthhqMLrXIDAhU,4706
flask_wtf/file.py,sha256=CKr7kAgGqmKyC47gPuYoR7EHVSgl06xKtkyMmEPsXhs,4759
flask_wtf/form.py,sha256=TmR7xCrxin2LHp6thn7fq1OeU8aLB7xsZzvv52nH7Ss,4049
flask_wtf/i18n.py,sha256=TyO8gqt9DocHMSaNhj0KKgxoUrPYs-G1nVW-jns0SOw,1166
flask_wtf/recaptcha/__init__.py,sha256=m4eNGoU3Q0Wnt_wP8VvOlA0mwWuoMtAcK9pYT7sPFp8,106
......
......@@ -5,4 +5,4 @@ from .recaptcha import Recaptcha
from .recaptcha import RecaptchaField
from .recaptcha import RecaptchaWidget
__version__ = "1.2.1"
__version__ = "1.2.0"
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
......@@ -47,9 +47,10 @@ class FileRequired(DataRequired):
"""
def __call__(self, form, field):
field_data = [field.data] if not isinstance(field.data, list) else field.data
if not isinstance(field.data, list):
field.data = [field.data]
if not (
all(isinstance(x, FileStorage) and x for x in field_data) and field_data
all(isinstance(x, FileStorage) and x for x in field.data) and field.data
):
raise StopValidation(
self.message or field.gettext("This field is required.")
......@@ -75,13 +76,14 @@ class FileAllowed:
self.message = message
def __call__(self, form, field):
field_data = [field.data] if not isinstance(field.data, list) else field.data
if not isinstance(field.data, list):
field.data = [field.data]
if not (
all(isinstance(x, FileStorage) and x for x in field_data) and field_data
all(isinstance(x, FileStorage) and x for x in field.data) and field.data
):
return
filenames = [f.filename.lower() for f in field_data]
filenames = [f.filename.lower() for f in field.data]
for filename in filenames:
if isinstance(self.upload_set, abc.Iterable):
......@@ -95,7 +97,7 @@ class FileAllowed:
).format(extensions=", ".join(self.upload_set))
)
if not self.upload_set.file_allowed(field_data, filename):
if not self.upload_set.file_allowed(field.data, filename):
raise StopValidation(
self.message
or field.gettext("File does not have an approved extension.")
......@@ -122,14 +124,16 @@ class FileSize:
self.message = message
def __call__(self, form, field):
field_data = [field.data] if not isinstance(field.data, list) else field.data
if not isinstance(field.data, list):
field.data = [field.data]
if not (
all(isinstance(x, FileStorage) and x for x in field_data) and field_data
all(isinstance(x, FileStorage) and x for x in field.data) and field.data
):
return
for f in field_data:
for f in field.data:
file_size = len(f.read())
print(f, file_size, self.max_size, self.min_size)
f.seek(0) # reset cursor position to beginning of file
if (file_size < self.min_size) or (file_size > self.max_size):
......
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
import sys
import logging
from app import app as application
from markupsafe import Markup
sys.modules['flask'].Markup = Markup
logging.basicConfig(stream=sys.stderr)
if __name__ == '__main__':
application.run(host='0.0.0.0', port=int(os.environ.get('PORT', 8080)))
application.run(host='0.0.0.0', port=8080)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment