diff --git a/requirements.txt b/requirements.txt index 65df85baf140ce35bf0eef56cc63cfd249cd40e5..b7475d8bd52429988e23b1cdca449b0fbda62dd1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -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 diff --git a/venv/Lib/site-packages/flask_wtf-1.2.1.dist-info/INSTALLER b/venv/Lib/site-packages/flask_wtf-1.2.0.dist-info/INSTALLER similarity index 100% rename from venv/Lib/site-packages/flask_wtf-1.2.1.dist-info/INSTALLER rename to venv/Lib/site-packages/flask_wtf-1.2.0.dist-info/INSTALLER diff --git a/venv/Lib/site-packages/flask_wtf-1.2.1.dist-info/METADATA b/venv/Lib/site-packages/flask_wtf-1.2.0.dist-info/METADATA similarity index 99% rename from venv/Lib/site-packages/flask_wtf-1.2.1.dist-info/METADATA rename to venv/Lib/site-packages/flask_wtf-1.2.0.dist-info/METADATA index 92f1ff25658838ae9639052003770899dc3851cb..cb81ed403721fc073d4ae733df63c2fa03b7bebc 100644 --- a/venv/Lib/site-packages/flask_wtf-1.2.1.dist-info/METADATA +++ b/venv/Lib/site-packages/flask_wtf-1.2.0.dist-info/METADATA @@ -1,6 +1,6 @@ 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/ diff --git a/venv/Lib/site-packages/flask_wtf-1.2.1.dist-info/RECORD b/venv/Lib/site-packages/flask_wtf-1.2.0.dist-info/RECORD similarity index 70% rename from venv/Lib/site-packages/flask_wtf-1.2.1.dist-info/RECORD rename to venv/Lib/site-packages/flask_wtf-1.2.0.dist-info/RECORD index a7814665f525f142935e652b0eafe2213194eccf..c0e003ba731514066ad17041c32d77cc998b3714 100644 --- a/venv/Lib/site-packages/flask_wtf-1.2.1.dist-info/RECORD +++ b/venv/Lib/site-packages/flask_wtf-1.2.0.dist-info/RECORD @@ -1,10 +1,10 @@ -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 diff --git a/venv/Lib/site-packages/flask_wtf-1.2.1.dist-info/REQUESTED b/venv/Lib/site-packages/flask_wtf-1.2.0.dist-info/REQUESTED similarity index 100% rename from venv/Lib/site-packages/flask_wtf-1.2.1.dist-info/REQUESTED rename to venv/Lib/site-packages/flask_wtf-1.2.0.dist-info/REQUESTED diff --git a/venv/Lib/site-packages/flask_wtf-1.2.1.dist-info/WHEEL b/venv/Lib/site-packages/flask_wtf-1.2.0.dist-info/WHEEL similarity index 100% rename from venv/Lib/site-packages/flask_wtf-1.2.1.dist-info/WHEEL rename to venv/Lib/site-packages/flask_wtf-1.2.0.dist-info/WHEEL diff --git a/venv/Lib/site-packages/flask_wtf-1.2.1.dist-info/licenses/LICENSE.rst b/venv/Lib/site-packages/flask_wtf-1.2.0.dist-info/licenses/LICENSE.rst similarity index 100% rename from venv/Lib/site-packages/flask_wtf-1.2.1.dist-info/licenses/LICENSE.rst rename to venv/Lib/site-packages/flask_wtf-1.2.0.dist-info/licenses/LICENSE.rst diff --git a/venv/Lib/site-packages/flask_wtf/__init__.py b/venv/Lib/site-packages/flask_wtf/__init__.py index be2649e26d8dfa2cde5457f13b72715135d12b5a..3f884c0728d6879b73cccf986664d89bc57c1484 100644 --- a/venv/Lib/site-packages/flask_wtf/__init__.py +++ b/venv/Lib/site-packages/flask_wtf/__init__.py @@ -5,4 +5,4 @@ from .recaptcha import Recaptcha from .recaptcha import RecaptchaField from .recaptcha import RecaptchaWidget -__version__ = "1.2.1" +__version__ = "1.2.0" diff --git a/venv/Lib/site-packages/flask_wtf/__pycache__/__init__.cpython-311.pyc b/venv/Lib/site-packages/flask_wtf/__pycache__/__init__.cpython-311.pyc index 304531c8dd034ce8289de1e379acd11a66bf38cd..cc492fb7f408d036f111ed881bee398192c91b20 100644 Binary files a/venv/Lib/site-packages/flask_wtf/__pycache__/__init__.cpython-311.pyc and b/venv/Lib/site-packages/flask_wtf/__pycache__/__init__.cpython-311.pyc differ diff --git a/venv/Lib/site-packages/flask_wtf/__pycache__/_compat.cpython-311.pyc b/venv/Lib/site-packages/flask_wtf/__pycache__/_compat.cpython-311.pyc index beb00be94d82d4c7316bfcf1139bf843f1194cc5..d3b114711695270b6f6b23c27085d8d5a9e4ac65 100644 Binary files a/venv/Lib/site-packages/flask_wtf/__pycache__/_compat.cpython-311.pyc and b/venv/Lib/site-packages/flask_wtf/__pycache__/_compat.cpython-311.pyc differ diff --git a/venv/Lib/site-packages/flask_wtf/__pycache__/csrf.cpython-311.pyc b/venv/Lib/site-packages/flask_wtf/__pycache__/csrf.cpython-311.pyc index 3a6e9a34361fdea3a9249ed18fe09ac5474f45b6..3fd39c21ef0bbb6810a3f32664d89d8534bea2f1 100644 Binary files a/venv/Lib/site-packages/flask_wtf/__pycache__/csrf.cpython-311.pyc and b/venv/Lib/site-packages/flask_wtf/__pycache__/csrf.cpython-311.pyc differ diff --git a/venv/Lib/site-packages/flask_wtf/__pycache__/file.cpython-311.pyc b/venv/Lib/site-packages/flask_wtf/__pycache__/file.cpython-311.pyc index bac198e45ca285c998a6e60eec1a57deacb716eb..d747ca899480b04119d65dc0245885758a6377a7 100644 Binary files a/venv/Lib/site-packages/flask_wtf/__pycache__/file.cpython-311.pyc and b/venv/Lib/site-packages/flask_wtf/__pycache__/file.cpython-311.pyc differ diff --git a/venv/Lib/site-packages/flask_wtf/__pycache__/form.cpython-311.pyc b/venv/Lib/site-packages/flask_wtf/__pycache__/form.cpython-311.pyc index 156609e14de7e83103f2a2c776a0a668e0e6b194..434265db1bc141bd6e9e00db52dc7ece9afde4a3 100644 Binary files a/venv/Lib/site-packages/flask_wtf/__pycache__/form.cpython-311.pyc and b/venv/Lib/site-packages/flask_wtf/__pycache__/form.cpython-311.pyc differ diff --git a/venv/Lib/site-packages/flask_wtf/__pycache__/i18n.cpython-311.pyc b/venv/Lib/site-packages/flask_wtf/__pycache__/i18n.cpython-311.pyc index 04d2d7e2cbe3df7f61e7c03d89b95925494f4bec..d4ee7b4c91f2cf66961434de6bc21c4f859e9c8c 100644 Binary files a/venv/Lib/site-packages/flask_wtf/__pycache__/i18n.cpython-311.pyc and b/venv/Lib/site-packages/flask_wtf/__pycache__/i18n.cpython-311.pyc differ diff --git a/venv/Lib/site-packages/flask_wtf/file.py b/venv/Lib/site-packages/flask_wtf/file.py index a720dff8d81911df179e80512caa0056a47be410..5646600f82d1acfa9a5b2704bb6c802f96d0f2f0 100644 --- a/venv/Lib/site-packages/flask_wtf/file.py +++ b/venv/Lib/site-packages/flask_wtf/file.py @@ -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): diff --git a/venv/Lib/site-packages/flask_wtf/recaptcha/__pycache__/__init__.cpython-311.pyc b/venv/Lib/site-packages/flask_wtf/recaptcha/__pycache__/__init__.cpython-311.pyc index ad5312065a905cf14e41f922291566616856c8fb..fe79a9aef7d9d7147a94eab5c4c4a48536547539 100644 Binary files a/venv/Lib/site-packages/flask_wtf/recaptcha/__pycache__/__init__.cpython-311.pyc and b/venv/Lib/site-packages/flask_wtf/recaptcha/__pycache__/__init__.cpython-311.pyc differ diff --git a/venv/Lib/site-packages/flask_wtf/recaptcha/__pycache__/fields.cpython-311.pyc b/venv/Lib/site-packages/flask_wtf/recaptcha/__pycache__/fields.cpython-311.pyc index 1eb5b704de329b4e160ea7d0eefa8dd48b16104d..eba47cb335209d9abc36f31be5779b684315a9cc 100644 Binary files a/venv/Lib/site-packages/flask_wtf/recaptcha/__pycache__/fields.cpython-311.pyc and b/venv/Lib/site-packages/flask_wtf/recaptcha/__pycache__/fields.cpython-311.pyc differ diff --git a/venv/Lib/site-packages/flask_wtf/recaptcha/__pycache__/validators.cpython-311.pyc b/venv/Lib/site-packages/flask_wtf/recaptcha/__pycache__/validators.cpython-311.pyc index b8a1ffd5e1f5b5180ec496e94c61d8d59e9302f6..1fd4e8df320b2b9c464813d4b27e912dd20f570a 100644 Binary files a/venv/Lib/site-packages/flask_wtf/recaptcha/__pycache__/validators.cpython-311.pyc and b/venv/Lib/site-packages/flask_wtf/recaptcha/__pycache__/validators.cpython-311.pyc differ diff --git a/venv/Lib/site-packages/flask_wtf/recaptcha/__pycache__/widgets.cpython-311.pyc b/venv/Lib/site-packages/flask_wtf/recaptcha/__pycache__/widgets.cpython-311.pyc index 6f5bb03a28b7e7b55f3ef3a93a63eda13b3d3754..6a613bad6fb737df45ae0e6d900e6d7b2bdaea14 100644 Binary files a/venv/Lib/site-packages/flask_wtf/recaptcha/__pycache__/widgets.cpython-311.pyc and b/venv/Lib/site-packages/flask_wtf/recaptcha/__pycache__/widgets.cpython-311.pyc differ diff --git a/wsgi.py b/wsgi.py index 78681907a56f6e8852ba79e6565c4778be08abb6..ab58b4ebdd8b8760b2bbb45528cdda8c27fba07a 100644 --- a/wsgi.py +++ b/wsgi.py @@ -1,8 +1,11 @@ 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)