From c97e3e8d4e474d3728ba46192527e65d093d7908 Mon Sep 17 00:00:00 2001 From: ydb5755 Date: Wed, 4 Sep 2024 20:22:49 +0300 Subject: [PATCH] init --- .gitignore | 5 ++ README.md | 1 + app/__init__.py | 61 ++++++++++++++++++ app/__pycache__/__init__.cpython-311.pyc | Bin 0 -> 3296 bytes app/__pycache__/config.cpython-311.pyc | Bin 0 -> 1047 bytes app/__pycache__/models.cpython-311.pyc | Bin 0 -> 2879 bytes app/config.py | 20 ++++++ app/main/__init__.py | 9 +++ app/main/__pycache__/__init__.cpython-311.pyc | Bin 0 -> 431 bytes app/main/__pycache__/routes.cpython-311.pyc | Bin 0 -> 1068 bytes app/main/routes.py | 17 +++++ app/main/templates/base.html | 38 +++++++++++ app/main/templates/homepage.html | 2 + app/users/__init__.py | 9 +++ .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 435 bytes app/users/__pycache__/models.cpython-311.pyc | Bin 0 -> 2885 bytes app/users/__pycache__/routes.cpython-311.pyc | Bin 0 -> 1119 bytes app/users/forms.py | 0 app/users/models.py | 43 ++++++++++++ app/users/routes.py | 18 ++++++ wsgi.py | 8 +++ 21 files changed, 231 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 app/__init__.py create mode 100644 app/__pycache__/__init__.cpython-311.pyc create mode 100644 app/__pycache__/config.cpython-311.pyc create mode 100644 app/__pycache__/models.cpython-311.pyc create mode 100644 app/config.py create mode 100644 app/main/__init__.py create mode 100644 app/main/__pycache__/__init__.cpython-311.pyc create mode 100644 app/main/__pycache__/routes.cpython-311.pyc create mode 100644 app/main/routes.py create mode 100644 app/main/templates/base.html create mode 100644 app/main/templates/homepage.html create mode 100644 app/users/__init__.py create mode 100644 app/users/__pycache__/__init__.cpython-311.pyc create mode 100644 app/users/__pycache__/models.cpython-311.pyc create mode 100644 app/users/__pycache__/routes.cpython-311.pyc create mode 100644 app/users/forms.py create mode 100644 app/users/models.py create mode 100644 app/users/routes.py create mode 100644 wsgi.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..54ba69a --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +/__pycache__ +/errorlog.txt +/instance +/logs.log +/migrations \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..9f7986b --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Pilzno diff --git a/app/__init__.py b/app/__init__.py new file mode 100644 index 0000000..94b3f63 --- /dev/null +++ b/app/__init__.py @@ -0,0 +1,61 @@ +from flask import Flask, redirect, url_for +from celery import Celery +from app.config import Config +from flask_sqlalchemy import SQLAlchemy +from flask_migrate import Migrate +from flask_login import LoginManager +from flask_mail import Mail +from werkzeug.middleware.proxy_fix import ProxyFix +from logging import FileHandler, INFO + +db = SQLAlchemy() +migrate = Migrate() +login_manager = LoginManager() +mail = Mail() +celery = Celery('app', broker=Config.CELERY_BROKER_URL, backend=Config.CELERY_RESULT_BACKEND) + + +def create_app(): + app = Flask(__name__) + app.config.from_object(Config) + + celery.conf.update(app.config) + + db.init_app(app) + migrate.init_app(app,db) + login_manager.init_app(app) + mail.init_app(app) + file_handler = FileHandler('errorlog.txt') + file_handler.setLevel(INFO) + app.logger.addHandler(file_handler) + app.wsgi_app = ProxyFix( + app.wsgi_app, x_for=1, x_proto=1 + ) + + from app.users.models import User + @login_manager.user_loader + def load_user(user_id): + user = User.query.get(user_id) + if user: + return user + else: + return None + login_manager.login_view = 'users.login' + + from app.users import users + from app.main import main + # from app.reports import reports + # from app.plan_management import plan_management + # from app.agent_reports import agent_reports + # from app.status_reports import status_reports + app.register_blueprint(users) + app.register_blueprint(main) + # app.register_blueprint(reports) + # app.register_blueprint(plan_management) + # app.register_blueprint(agent_reports) + # app.register_blueprint(status_reports) + + @app.route('/') + def reroute_base_url(): + return redirect(url_for('main.homepage')) + return app, celery \ No newline at end of file diff --git a/app/__pycache__/__init__.cpython-311.pyc b/app/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ad90979c2ab86b8057bb519078986072d690b4c4 GIT binary patch literal 3296 zcmZ3^%ge>Uz`#&bcO%V@oq^#ohy%l{P{wB#Mh1rI3@HpLj5!Rsj8TlaOi@g^%u&pY zATg#KmR!~-Rxq16hb@;qiXF^m$>GT5jN$~dS#!8@xudwjY_=SpT;3>NFq=JxFPA@x zAI#>+5y%yc5(Kk3bA)n*ql9xsqC^-Om>5zymoYFftcE&=fgwtii6NC6O-zi5A(ay$ zfj*8o$r-7+AaQoz%=Dtfl2lE`TRcAb>6v-HiFt|XsUXcPzKNMRnvAzN0*dl0D%~~^c`yu$ zK9Dy)M=&!mw6jfTC}D(2F))-cA=t|p85mZ>hzZEdsmjZbNh~OciI30B%PfhH*DI*J#hH_zm=X^%r%E=t zC^fMpH9oPRK+h&8KRGd{*iH{Ft-`>-P^`hg!0@Ai;Q_yJPgQ?iSKW;Ci~MR=_|-aC zZgBH|U|{ByxFIaw;r&2Ze1gemkPoZ4K}Hwr<$wxCO~zZSU@j==auYN2elhA}6msCu zvtj_%Q7A+^U?>8WqAMAS zKv}N{looFZ6r~pBmzJc)CnXlA#+Mf5RH4hC77IwlEw<8vl*E$MTTCfQw>ZF&l~_=4i#-=o)7;_(2WNaPq@uaSlAD;BQ^d=_ zz;KJBIJLwlwJbHK2vq3YV#~=-Pfsnn#g&+n09%sc#8+cK1e&nzOu~J@>`s6^+obvlR$h>U>7NXxI#s#>6yhPsYUTgIi;xu zMVWaew^+eJtjS))4^qLCmYI_pp8=@>i$J*-Y!Fy`5h#^`9Z(Dk6$LPGfJ7A+B4Ubc z7#J9YKnZdYBRE0c<>H^p(W&2~-{5?Mg}ue=I*ZgL7OA;r7g?09uqa(%QF_Y4)#81f zMeGub*o5LKRY>A&?cPn^6PPcuh+JV2xxgZFmxcQ}i^wGwkqNf{oFR;kpW#MS|ZStL~K3hP}F)@$&&!6I;- zMe-7h0GBdEr!{vAw6m(mCudv8G06X~t5_y9~ z_5v#Uz{SAI0rjToMHa;?EQ%Lc6mPJwL&Z!kvM5|(QMkaO@PUVcjk7(nDYB!uF|H-< z0}~^w(FX=bRwIz@B2a+`+? zK#2*I12WSg*+KxUA-=dUClS)%DgrfDZt+5dq4}YR6O^vFA!6X9S_Epg+~R_WfO7{o zNQrEDYEgDoYH7M&Ze~hKPHK5#QL0`6sBIRXmRSMG8SJ1elbM$e&QIW6RHO|mI&?vV z9*EEf871iK>f;&|8SfP2@9i2C9~$IyOB5;;(^b literal 0 HcmV?d00001 diff --git a/app/__pycache__/config.cpython-311.pyc b/app/__pycache__/config.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..311e52c776654d5f2bd7d6731d4ec88190035aac GIT binary patch literal 1047 zcmZ3^%ge>Uz`(F2<3`#eCI*JbAPx+(KpCGc7#J9)Go&!2Fy=5sL1@M(#uTO$=1j&Y zCME`Vh7^_-h7{IiObiUGnV`BDqL@<{gBdj0UV;StZpj4)`Z)SHd${^W#=AI%I6657 zyT*qGdBz6^`gn%8RtXjt=46(nTIuWS7iX5F>ZK$lgEYc0GnDc99N00b3{i|J3{gy} z%nM-7gerhgDU8b)85mYGLU;@eQLH#sGNGwtOJR;;PhpATNMViQOks=SN@0uQPGOJY z!D#{qnhCr(RdS-KX1+ zLjvMMgI$Ae@q(EFj={m<{y{E&n*6so;^XrYb5rBvZ*j%P=jNxB=788d@$rSFi8)Xi zwq&rAZZW5)mfRA@5qU*y3=9mnIDH*Gec}WBgFT>acbJZ=d(yZX2WMaDY?`Fpzt#fJv@+!BQf1-S-?`h>(gIXZj0`nlZVg9>~4 zf{YF>VrO7rDB@sXU|7lU85FO-beyeXLW@(2ier3I^YY8`V_Z^;vrF;|VgfRAs`Bz< z5(^4qAimHms4QXyX$KLY6klA*z`)P|hd1O@=4Z{yx}fQKQO@g%oYw^wX{gW&nTv8} zSLDnZyl%)THhA8UQ)=+JA*X+VMeK&0#RV2oFe!OM&ZNN)rbGIooaq%gQ;=e?sVn3! z%2{5KvuyAM!6Gr3J2Y8tG36KEV#zAb&nx1Ai57{1SYSos3=9mvIBXyhWLG4`z`y`X z(8Uo93=AKb85tRGFmN`2;SC1v1~B}<#lWh1LCx|5GZPn61KS4l44A}6kk}Ux JfhG%f9suYP0KotN literal 0 HcmV?d00001 diff --git a/app/__pycache__/models.cpython-311.pyc b/app/__pycache__/models.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6f929044e502e08685e54462daea840f179032b3 GIT binary patch literal 2879 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 literal 0 HcmV?d00001 diff --git a/app/main/__pycache__/routes.cpython-311.pyc b/app/main/__pycache__/routes.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..167bfcf533032d871fde8ff5b11f4839220fce52 GIT binary patch literal 1068 zcmZ3^%ge>Uz`!6}eI;5i6NCaOAP8Bh7`_aj0_B`8R2}c z7KUXE3=FGb0t`{&DICEJn%plzBASf1m{O878E>)VCT8Y==+NTSB2Cs?{6(pGDXB&A zC8@auIf*5yw>XMYQ!JH^{e94&&bbBEl5mHO$K=ghCvYo!k-nu z5mW*X5C(=6M${k*X3%8vtKx+jqnA;Vo1@8C#KyqDu#(|3$iQEQ&Q>v?fGLjgNzKbI z%a3tMEzT~jhyev)Oi_MmNouiPLFFwDn0ZB@xZz`9U?>)1U|?uq z_{zq>BR#|ZBDeMxZtV*!+C?G^3=EnQx0n+P3W`8ZzQvJPP@o4gu84(!f#H?_hzkm| zV!hn_l+>K!B36(vIP|l@&MabQU|=ZX01=!Z0+eoVaf4zfJ02VZMcg1^9uUC`B0$c$ zC0L$XlwFltnyy!znp|3xSyEZV50VrB5rQBqnDUEnv4Xt>_C%2|NCxEGB2fkghF=^u zx%nxjIjMF<@(c_Npb##8$H2hwftit!@dks?1ypo{LGl7By1}4$0Tn%9aJfJny20Rk zfe^aE;CTTXy1^iO0Tta~;A{ZH4_pjPJPjf(QXSqG86~bTN_=2qV$}J-z{IHYk(q%> L5=8_o430hkO_d;@ literal 0 HcmV?d00001 diff --git a/app/main/routes.py b/app/main/routes.py new file mode 100644 index 0000000..01b8a13 --- /dev/null +++ b/app/main/routes.py @@ -0,0 +1,17 @@ +from app import db +from app.main import main +from app.users.models import User +# from forms import LoginForm, RequestResetForm, ResetPasswordForm, EditUserForm, AddUserForm +from flask import render_template, redirect, url_for, flash, request +from flask_login import login_required, login_user, current_user, logout_user +from werkzeug.security import check_password_hash, generate_password_hash +from datetime import datetime +import os +# import logging +# logging.basicConfig(filename='logs.log', encoding='utf-8', level=logging.INFO) + + +@main.route('/homepage') +def homepage(): + + return render_template('homepage.html') \ No newline at end of file diff --git a/app/main/templates/base.html b/app/main/templates/base.html new file mode 100644 index 0000000..22262c1 --- /dev/null +++ b/app/main/templates/base.html @@ -0,0 +1,38 @@ + + + + + + + {% block title %}{% endblock title %} + + + + {% block stylesheet %}{% endblock stylesheet %} + + + + {% with messages = get_flashed_messages(with_categories=true) %} + {% if messages %} + {% for category, message in messages %} +
+ {{ message }} +
+ {% endfor %} + {% endif %} + {% endwith %} + {% block content %}{% endblock content %} + + \ No newline at end of file diff --git a/app/main/templates/homepage.html b/app/main/templates/homepage.html new file mode 100644 index 0000000..8aad2a0 --- /dev/null +++ b/app/main/templates/homepage.html @@ -0,0 +1,2 @@ +{% extends 'base.html' %} +{% block title %}Customer Search{% endblock title %} \ No newline at end of file diff --git a/app/users/__init__.py b/app/users/__init__.py new file mode 100644 index 0000000..a390092 --- /dev/null +++ b/app/users/__init__.py @@ -0,0 +1,9 @@ +from flask import Blueprint + +users = Blueprint('users', + __name__, + template_folder='templates', + static_folder='static', + url_prefix='/users') + +from app.users import routes \ No newline at end of file diff --git a/app/users/__pycache__/__init__.cpython-311.pyc b/app/users/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..829a5b541102f3c16fabcedc3ed1565f62b5dbb1 GIT binary patch literal 435 zcmZ3^%ge>Uz`&4PawCm{k%8echy%myP{wCF1_p-d3@HpLj5!Rsj8Tk?3``8Ej44d1 zOexGMEGevO*p{&}Fsx>Us%MB|PGLx4&tb`BjbdeFNZ|-((BymxlGJ3p#p#q&np#kl znOAa)wX`_3sQ4CVNosCEPGU)F@h!IElEjkCUz`(GiP_?6+7# zTq8nmu{r1Gl;-B$Vt2~V&q+}UzD1ep68ufS;Wr3z;KJ*(=Wu;-8JYIdzfR8 zvxj4lpC^%f_Hm6DoMl9&u~5)8uw(TWiih^Y)wj42FJ zOeu^}%uEcaEGbM(Ag?hnFsz2@U`SzJ!?KK-fnhZ>Oel&Ctd^CDA(ed@s#>-+>}YB^ zz-mDxVYQrKwIC8hZ3^=mF0>%$0;}dG$`v40EGaxhspUx#OyO%`jN(n@OW|)}K=ol1 ze~LgbgQn0e7Eol~Vgbe9EvC$r5Kwd%6lLZn7FEV)r&iwLO3N%NE{V@e%uRLEWW2?Z zSDKTPn3R)xi!&z?Dt?PKH8(LcN0X^Y3>3F)rFof!rKz_#3KENp%kzs;ZgGN4k1we# zNPQW>#K4fu1d9O%1_n@a0L94X1K{jX!ibQ|g0pKFvfz43Ksum`vfv4~1f1a@!dbA? z!LWvL86yM3YPdNi{16o&vW9UD6RK<#0|P?}^BkrU0gyZdXK_Mk28I+CNf?tMg>?-Z zYWk>Us$mLd&}8=mWtx(zm5jI8i&K;H^HPd6nQpNs=jWwm7UkYzPOT`o#TD%89ON1j z@9i3Si`668$ka@e@fK%dPI`V(W=Te_Cf6B};J%0|P??!(B1SDOnGs<>#2+6_=k{9j zi{d6%#7*u>Dy^`(AZd0{((H<)*+*tZ3G)xEEWCUl7+84uzH%|}N?hTQn^ALxN9Tr^ z><4}hajuUH9O7JGKtu=k2O$Ol=?ffEpFt6l43Ayp)D!?N7dRPkrKb{5z=5^z`*bll-G*nLFrP3fq_Aj=@wf~YHE36 zH}Rd#{H zsF;I+fuYIVieVR%J+q%CW04FftORax#DmM(`1o5~@$tF&DWy57@$t8K;^PZT6LUZ% zaD4nN-uU^8AT#{IlnVg$i zl98WMWW~V1u#%z303;0x=OR#?fC*6YFa87$#0CZkydfgh;Cn+*e1g~vmKo_Y(r0GQ z$=ncfLD1@=pw$&Ys|F{C9M6K31t|;DmZWVcy&!0NQPB2^plyQ}M2>qw$byiCVN1d` zq+SrTxhQCJMbM_f6C%gHKxBc)La`-c8&nUlTo81yB52*<0g=OQ>IW7sR_PB6sDuOqo6rX)9#-QI3_PsHADJ20gj!+{0$@={ zaDYNWQ{)zNVnIO>sD!x1nwFDToDC^*xxwuCoc#36ydqXm=z%JoTU^D3If*&R8L7FD zh7KftKtWjq&NSed;sGfKab(=mrB<0~p?5FuH&nePB~! aH2%PVNpu+XSWJlg2$J~%BGA-;!yf=6W~o*H literal 0 HcmV?d00001 diff --git a/app/users/__pycache__/routes.cpython-311.pyc b/app/users/__pycache__/routes.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..945ef39e0be4b8f9f8b20298c441cf0fce13b741 GIT binary patch literal 1119 zcmZ3^%ge>Uz`(#?et!^5yg?q8O52)6~&dy9mNfnW6j~o<&EOa<%{CW<&Wae z6^If5i?ihj<_bj#(c7N-^!Yck$q2`x@7(qz5G zUzD1cl3EmBlA2qPlUR~^i=!wtC9^0sx#SjmX;DsmT7J}dc7Kt)2Fz_)jFcb?jFfcSQeC1%^k-i|UeUV$|3b)P$7M;)F7?QZfoLEp$ z1oFTw&cuQOJ&*y#MJx;q47UW}e7)TKl+>K!B36(vI9{^BjxJ(nU|=ZX01=!Z0+hsW zaf9M5J02W2Mcg1^9uUC`B0vthC0L$XlwFltnyy!znp|3xSyEZV50VrB5rQBqnDUEn zv4VXC_QpzvB2bbn5@BFq_{Cw9o1apelWJE43UE+R75`*lVEDky$jEquLFfW1y1^iQ z0Tta~P`rSO9x%9EAP(JN@V!6?-C*#%fDPSXkiCG4ZZL2*fZ+!&1}5GH(H7|oyvi3D rRjx3q++gJYz{JF;`+') +@login_required +def user_page(user_id): + + return render_template('user_page.html') \ No newline at end of file diff --git a/wsgi.py b/wsgi.py new file mode 100644 index 0000000..c4f077c --- /dev/null +++ b/wsgi.py @@ -0,0 +1,8 @@ +from app import create_app + + +app, celery = create_app() + +if __name__ == '__main__': + with app.app_context(): + app.run(debug=True) \ No newline at end of file