From 835dac1b22c9920f0c418b75809822415b3a61d5 Mon Sep 17 00:00:00 2001
From: Felix Chadwick-Smith <chadwick-smithff@cardiff.ac.uk>
Date: Wed, 10 Jan 2024 15:59:04 +0000
Subject: [PATCH] Add Flask-WTF to requirements.txt

---
 requirements.txt                              |   1 +
 .../INSTALLER                                 |   0
 .../METADATA                                  |   2 +-
 .../RECORD                                    |  16 ++++++-------
 .../REQUESTED                                 |   0
 .../WHEEL                                     |   0
 .../licenses/LICENSE.rst                      |   0
 venv/Lib/site-packages/flask_wtf/__init__.py  |   2 +-
 .../__pycache__/__init__.cpython-311.pyc      | Bin 532 -> 532 bytes
 .../__pycache__/_compat.cpython-311.pyc       | Bin 698 -> 698 bytes
 .../__pycache__/csrf.cpython-311.pyc          | Bin 15040 -> 15040 bytes
 .../__pycache__/file.cpython-311.pyc          | Bin 8377 -> 8532 bytes
 .../__pycache__/form.cpython-311.pyc          | Bin 7261 -> 7261 bytes
 .../__pycache__/i18n.cpython-311.pyc          | Bin 2060 -> 2060 bytes
 venv/Lib/site-packages/flask_wtf/file.py      |  22 +++++++++++-------
 .../__pycache__/__init__.cpython-311.pyc      | Bin 380 -> 380 bytes
 .../__pycache__/fields.cpython-311.pyc        | Bin 1134 -> 1134 bytes
 .../__pycache__/validators.cpython-311.pyc    | Bin 3739 -> 3739 bytes
 .../__pycache__/widgets.cpython-311.pyc       | Bin 2875 -> 2875 bytes
 wsgi.py                                       |   5 +++-
 20 files changed, 28 insertions(+), 20 deletions(-)
 rename venv/Lib/site-packages/{flask_wtf-1.2.1.dist-info => flask_wtf-1.2.0.dist-info}/INSTALLER (100%)
 rename venv/Lib/site-packages/{flask_wtf-1.2.1.dist-info => flask_wtf-1.2.0.dist-info}/METADATA (99%)
 rename venv/Lib/site-packages/{flask_wtf-1.2.1.dist-info => flask_wtf-1.2.0.dist-info}/RECORD (70%)
 rename venv/Lib/site-packages/{flask_wtf-1.2.1.dist-info => flask_wtf-1.2.0.dist-info}/REQUESTED (100%)
 rename venv/Lib/site-packages/{flask_wtf-1.2.1.dist-info => flask_wtf-1.2.0.dist-info}/WHEEL (100%)
 rename venv/Lib/site-packages/{flask_wtf-1.2.1.dist-info => flask_wtf-1.2.0.dist-info}/licenses/LICENSE.rst (100%)

diff --git a/requirements.txt b/requirements.txt
index 65df85b..b7475d8 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 92f1ff2..cb81ed4 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 a781466..c0e003b 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 be2649e..3f884c0 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
GIT binary patch
delta 25
hcmbQjGKGbEIWI340|Ntt#J+hGxvwx9Y<ytC2mnrn2I2q!

delta 25
hcmbQjGKGbEIWI340|Ns?qR!lj+*cS4H$E_71OQ8>2AKc=

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
GIT binary patch
delta 20
ccmdnRx{H;2IWI340|Ntt#J+hOxz{rR05vNGHUIzs

delta 20
bcmdnRx{H;2IWI340|Ns?qR!ln-0PVDGr0up

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
GIT binary patch
delta 20
ccmX?5dZ3hhIWI340|Ntt#J+hOxwl#Y07erAU;qFB

delta 20
bcmX?5dZ3hhIWI340|Ns?qR!ln+*_>xM4<*2

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
GIT binary patch
delta 1626
zcmdn#c*Ti#IWI340|Ntt#J+i{(>L-;bFzG3U|^X1p3l^rw}vT;5hMq~>5Mf@@o-)V
zJ4g(IQy5zqkX25SlILYd7TCOnlbMmxbn*_aRte@J83qQ1TP$h$MY*?F(=t<YQi_>D
z7AA4)88$L7Ff=gS<(HhHI!9}1%0+(dEBx9Y7#KO#Zb-?`(V8LC;o9T%l!yNUzv~5l
z*Bz>RCLiDyXZAm%HTed2IHS>I10HKp4pzPo4Cut>2A<!HjAoN-_)HnSCU4?1XX{~N
zU}$Hd(3`d>-YjNHVF+eOVL}ZJ7lvgF3=FFwLB+tpP|IAy?7|THpo?YlTz+pxmd!8u
z85t*Ab8<6vvP^y}kj(gSa-iTk#-K?;ry0X0pAp)^Xg#@6*p4x3@&Vy<jAoPjMV#wd
z!GTz0z`(#zWC#jQ&a}*&)V##p)Z!v*1_p*=Rt5$J1qB5KhazE+8Y2b<hAI)a%$!um
zoSgjf)D*q=_~gW#ocMS@km>|R28JIbgu9{Y9<2-ft{3@TukgEG<Z->i<NAS_nN#?N
zm;V_pFzW*w1Fvw0+XE4s3nDffM7K<C7TwOox@EGJShlh`%tb}wAeI=20K3uz!~zla
zlV#-OCO;Dsk&|K-`oMrm6oECFOzz~-+3X^IpHU9vjUr!=em#(fSfJjA_}+Z7qof#P
z<>UxSI~Fk}iqp0!mPkiV?Jf+ln`)U$IN>qQP{X`{b#kJB$m9?ySzDG8USydXmKugE
zcxI|$$l`#>E@NR}SPk+CSbz~^3g_fR0ny3bQbL{}U2v7zU=_vOsAgq@^%i-Qh=QfT
zL=8h0H<-b|z))aZ!?b`0WFj;30$z~&1dy!<Icu_#v^nGE$x+g)8Ji}v$@p-CgBTRp
zntYREWfbaJ3yL!HN{T=t;NZW-Qk<HaT?F!b5hx~#^g(gr%D}*&iJoSQY~cwvzBscg
z6`p1lAh8Bcvx1;B8=P5{3Qw?gp!gMIgp?EYlEfAiM5b3ku_;m?82C7az(j}RT?y$K
zj`Q7Sxy|&L<1v$W4sVC&T^_*+iW4Fiuq@$S!BeuP_9Bn%6&~9QJhqcFW$R42VS2$y
zRFkQQiGhK^ugDV=3~0&S8zcrI@+Qm38Oe!(k~$^<HmAsYa*o_WZcyGRatCYMEFsUy
zSTD%P_kjVEm|*h}B>DwJK;$(T1Z5j|Kd@;s3VmR}BtC+~zJLgbYy=~NfOG@T2R1d3
cdQ9RYgBqjI7Y0eVOb{ajuV@1&2!b6903|?SSO5S3

delta 1467
zcmccOw9}DyIWI340|Ns?qR!mZq>a4NoQw}9YjRo`a?~(oF@hvOIGr(%4VhodT*3|#
zhu{>(7KR$;$%*{(%uF@Rn~!iZGcuY?KEc(h%2Fi5z`$^eB`v=w_ZDkfW@=8#EiNz>
zpORRTSj@t}z@RWWm0QoFj)8%pf#I&E@dno|UPoCjYPw$0biE)NIw5sR)`XY|F(*vV
zSaonc<>9};?|OmXb%)jke%Fiqu2=Y7FY>rv;c@-I%*x4k!z*O+J??Nu<H=?`)}rjJ
zd><IliOp?1zZn_LCpYn#GI~zl!Dr5v!NkDO&N^9#)08|vYcka^7c-?W1T&;Cfx^Ls
zVHpDh!)i#-FfcIGvedA+FvQ;OVx7E~-<y$jGp7I}BQtX+>tu1kWX3y_s|D9F229ox
zI?Wg|`J2!dMw`j2h3yz4CchFs$7nuzr--vT8#ok;3>X*~iVQ)75hzeO(=u~X^AdAY
zi;HX+7#ND#Kw+t%prGJTBn(nyJXu#%(##hm70JlJ@Pm}lom?v_E)w#AnVD1g0~-Uc
zaEIFi5t|DlHXA0d5#2sHRV-WC0&E3{5C;)rAOdWyDToCk>?UuQlbb9kE+Qw%D)fN?
zlPCgfGM(Jdqq8|*{63?pKS-+|h|mMM8k{&36cixd0a;ij=$4t28k|{`suv%hnU`4-
zA74JXS<;T_2;*cePIL0&PZ1t}HOwvyvD0c<N;u(>$56wvfOT@CfXL)pA->7l0(@+>
ztTikP*d{j$h)({=$?wI;P{UfokOj{T*<h{3++a}-Fo%JGAsgfuh9Zv=P!K@{YZ$V?
z84tuQFs@;mTrVKb$UHewT1)`hz#4`uj>+?-&Dp1el9(pz<VL}U$+0r3jP;Y7Wqi27
z!37F9P2S13WEARIic?dwi{PR~Ag>gGg0n~;6tHd#3=EoB(^HWhJW<6LXI7;m(i1cS
zj2RdhP$D2XF()TJz6KOkKVi97oyhD9N?`h^2~1G>0|PIo5SZw2yelC+!*RabEVr2+
zb3A79&f)FwoXjFuXUYjv0!}@eOhrr#3=DonULen*r9>Z)7>LN3yj{*nP6U(+F$u6a
zMLv_+<ri{;l5LR(Sli~!@|=wI0*rhg7%+(mHXlKvUqA#zUX4Lewt@Epn+BuM2L?>y
uBS`EEh=9n3F)|29H}HI5Qvs>RBt9~zFbaKPkc7+lF*5LqHgJL<*uemb6H<Tx

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
GIT binary patch
delta 20
bcmca>ao2)-IWI340|Ntt#J+hOxr1Z?K<Nda

delta 20
bcmca>ao2)-IWI340|Ns?qR!ln+(9w`KX(OH

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
GIT binary patch
delta 20
bcmeAX=n>#v&dbZiz`(#Dv2Wf+Zbl9OE{z08

delta 20
bcmeAX=n>#v&dbZiz`($es55sXHzNlCEgJ*=

diff --git a/venv/Lib/site-packages/flask_wtf/file.py b/venv/Lib/site-packages/flask_wtf/file.py
index a720dff..5646600 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
GIT binary patch
delta 20
bcmeyv^oNOiIWI340|Ntt#J+hOxeFNqJ`M$S

delta 20
bcmeyv^oNOiIWI340|Ns?qR!ln+=Yw)Je&n9

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
GIT binary patch
delta 20
bcmaFI@s5LgIWI340|Ntt#J+hOxszD{Jh=s0

delta 20
bcmaFI@s5LgIWI340|Ns?qR!ln+{r8eJ4Xc&

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
GIT binary patch
delta 20
ccmbO&J6o1}IWI340|Ntt#J+hOxhL=e05iV@6#xJL

delta 20
bcmbO&J6o1}IWI340|Ns?qR!ln+!Oc!GED@_

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
GIT binary patch
delta 20
bcmdljwp)yQIWI340|Ntt#J+hOxed4hHoyer

delta 20
bcmdljwp)yQIWI340|Ns?qR!ln+y>kLHBJPY

diff --git a/wsgi.py b/wsgi.py
index 7868190..ab58b4e 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)
-- 
GitLab