From f6d42ab50a6b561da721d47f04a5a1eee07a48a9 Mon Sep 17 00:00:00 2001 From: pablaofficeal Date: Thu, 4 Dec 2025 15:47:07 +0100 Subject: [PATCH 1/5] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D1=8B?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=80=D0=B8?= =?UTF-8?q?=D0=B8=20=D0=BE=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D0=B0?= =?UTF-8?q?=D1=85=20docker-compose=20=D0=B8=D0=B7=20=D1=84=D0=B0=D0=B9?= =?UTF-8?q?=D0=BB=D0=B0=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D1=83=D1=80?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.dev.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 5b98088..21f4513 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -1,7 +1,5 @@ version: '3' -# docker-compose -f docker-compose.dev.yml build -# docker-compose -f docker-compose.dev.yml up -d services: app: build: ./app From 05c5ad94ac02a4422f565f5a20c6cd30eeb51616 Mon Sep 17 00:00:00 2001 From: pablaofficeal Date: Thu, 4 Dec 2025 15:53:06 +0100 Subject: [PATCH 2/5] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=BD=D0=B0=20=D0=BD=D0=BE=D0=B2=D1=83=D1=8E=20=D1=81=D1=82?= =?UTF-8?q?=D1=80=D1=83=D0=BA=D1=82=D1=83=D1=80=D1=83=20=D0=BA=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D0=BB=D0=BE=D0=B3=D0=BE=D0=B2=20=D0=B8=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=84=D1=83?= =?UTF-8?q?=D0=BD=D0=BA=D1=86=D0=B8=D0=BE=D0=BD=D0=B0=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B8=20=D0=B4=D0=BB=D1=8F=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D1=8B=20=D1=81=20=D0=B1=D0=B0=D0=B7=D0=BE?= =?UTF-8?q?=D0=B9=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/.dockerignore => .dockerignore | 0 app/app.py | 19 ------------------- app/db.py | 6 ------ app/models/Names.py | 26 -------------------------- {app => backend}/Dockerfile | 0 backend/app.py | 9 +++++++++ {app => backend}/cli.py | 2 +- {app => backend}/config.py | 0 backend/models/Names.py | 0 backend/models/db.py | 0 {app => backend}/requirements.txt | 0 {app => backend}/routes.py | 0 12 files changed, 10 insertions(+), 52 deletions(-) rename app/.dockerignore => .dockerignore (100%) delete mode 100644 app/app.py delete mode 100644 app/db.py delete mode 100644 app/models/Names.py rename {app => backend}/Dockerfile (100%) create mode 100644 backend/app.py rename {app => backend}/cli.py (92%) rename {app => backend}/config.py (100%) create mode 100644 backend/models/Names.py create mode 100644 backend/models/db.py rename {app => backend}/requirements.txt (100%) rename {app => backend}/routes.py (100%) diff --git a/app/.dockerignore b/.dockerignore similarity index 100% rename from app/.dockerignore rename to .dockerignore diff --git a/app/app.py b/app/app.py deleted file mode 100644 index e29af60..0000000 --- a/app/app.py +++ /dev/null @@ -1,19 +0,0 @@ -from flask import Flask - - -import routes -from cli import bp -from db import conn - -app = Flask(__name__) - -app.config.from_pyfile("config.py") -app.config['JSON_AS_ASCII'] = False # для кириллицы в конфиге -conn.init_app(app) - -app.register_blueprint(bp) -app.register_blueprint(routes.bp) - - -if __name__ == "__main__": - app.run(debug=True, host="0.0.0.0") \ No newline at end of file diff --git a/app/db.py b/app/db.py deleted file mode 100644 index 37df2d1..0000000 --- a/app/db.py +++ /dev/null @@ -1,6 +0,0 @@ -from flask_sqlalchemy import SQLAlchemy -conn = SQLAlchemy() - -""" -БД вынесено в отдельный файл для декомпозиции моделей -""" \ No newline at end of file diff --git a/app/models/Names.py b/app/models/Names.py deleted file mode 100644 index a0f1a3c..0000000 --- a/app/models/Names.py +++ /dev/null @@ -1,26 +0,0 @@ -import string -import random - -from db import conn - -class Names(conn.Model): - """ - Пример модели для работы с базой данныз - """ - id = conn.Column(conn.Integer, primary_key=True) - name = conn.Column(conn.String(80), unique=False, nullable=False) - amount = conn.Column(conn.Integer(), unique=True, nullable=False) - - def fill_random(self): - """ - Заполняю поля модели случайными данными - """ - self.name = ''.join(random.choice(string.ascii_letters) for i in range(10)) - self.amount = random.randrange(1000, 9999) - - def save(self): - """ - По факту модель не изменяется, а создается новая запись в БД - """ - conn.session.add(self) - conn.session.commit() \ No newline at end of file diff --git a/app/Dockerfile b/backend/Dockerfile similarity index 100% rename from app/Dockerfile rename to backend/Dockerfile diff --git a/backend/app.py b/backend/app.py new file mode 100644 index 0000000..a2aab77 --- /dev/null +++ b/backend/app.py @@ -0,0 +1,9 @@ +from flask import Flask + + +app.register_blueprint(bp) +app.register_blueprint(routes.bp) + + +if __name__ == "__main__": + app.run(debug=True, host="0.0.0.0") \ No newline at end of file diff --git a/app/cli.py b/backend/cli.py similarity index 92% rename from app/cli.py rename to backend/cli.py index fdecee2..d340a6d 100644 --- a/app/cli.py +++ b/backend/cli.py @@ -3,7 +3,7 @@ from models.Names import Names -from db import conn +from backend.models.db import conn bp = Blueprint('commands', __name__) diff --git a/app/config.py b/backend/config.py similarity index 100% rename from app/config.py rename to backend/config.py diff --git a/backend/models/Names.py b/backend/models/Names.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/models/db.py b/backend/models/db.py new file mode 100644 index 0000000..e69de29 diff --git a/app/requirements.txt b/backend/requirements.txt similarity index 100% rename from app/requirements.txt rename to backend/requirements.txt diff --git a/app/routes.py b/backend/routes.py similarity index 100% rename from app/routes.py rename to backend/routes.py From d738896a1f6fa9cfbab28d802c65b99bcb02256d Mon Sep 17 00:00:00 2001 From: pablaofficeal Date: Thu, 4 Dec 2025 15:56:36 +0100 Subject: [PATCH 3/5] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3=20=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82?= =?UTF-8?q?=D1=83=D1=80=D1=8B=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B0?= =?UTF-8?q?:=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=BD=D0=B5?= =?UTF-8?q?=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D1=83=D0=B5=D0=BC?= =?UTF-8?q?=D1=8B=D0=B5=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B,=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=BA=D0=BE=D0=BD?= =?UTF-8?q?=D1=84=D0=B8=D0=B3=D1=83=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=8B=20=D1=81=20?= =?UTF-8?q?=D0=B1=D0=B0=D0=B7=D0=BE=D0=B9=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B?= =?UTF-8?q?=D1=85=20=D0=B8=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20.gitignore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 7 ++++++- backend/app.py | 7 +++---- backend/cli.py | 21 ------------------- backend/config.py | 8 ++++--- backend/models/imp.py | 3 +++ .../models/{Names.py => main_routers_db.py} | 0 backend/models/{db.py => user/main_user.py} | 0 backend/requirements.txt => requirements.txt | 0 8 files changed, 17 insertions(+), 29 deletions(-) delete mode 100644 backend/cli.py create mode 100644 backend/models/imp.py rename backend/models/{Names.py => main_routers_db.py} (100%) rename backend/models/{db.py => user/main_user.py} (100%) rename backend/requirements.txt => requirements.txt (100%) diff --git a/.gitignore b/.gitignore index 834f575..21aac08 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,9 @@ .idea /.idea/ /pg_db/ -__pycache__ \ No newline at end of file +__pycache__ + +.venv/ +.venv/* +.env +.env/* \ No newline at end of file diff --git a/backend/app.py b/backend/app.py index a2aab77..3029be2 100644 --- a/backend/app.py +++ b/backend/app.py @@ -1,9 +1,8 @@ from flask import Flask +from config import Config - -app.register_blueprint(bp) -app.register_blueprint(routes.bp) - +app = Flask(__name__) +app.config.from_object(Config) if __name__ == "__main__": app.run(debug=True, host="0.0.0.0") \ No newline at end of file diff --git a/backend/cli.py b/backend/cli.py deleted file mode 100644 index d340a6d..0000000 --- a/backend/cli.py +++ /dev/null @@ -1,21 +0,0 @@ -import click -from flask import Blueprint - -from models.Names import Names - -from backend.models.db import conn - -bp = Blueprint('commands', __name__) - -@bp.cli.command("say_my_name") -@click.option('-name', default="Noname") -def say_my_name(name): - print("say_my_name %s " % name) - -@bp.cli.command("create_db") -@click.option('-name', default="Noname") -def create_db(name): - print("creating db %s " % name) - conn.drop_all() - conn.create_all() - conn.session.commit() diff --git a/backend/config.py b/backend/config.py index df7ffee..49e24ca 100644 --- a/backend/config.py +++ b/backend/config.py @@ -1,5 +1,7 @@ import os +from dotenv import load_dotenv +load_dotenv() -HELLO_MESSAGE="Привет, подписчики канала Аззраэль Коде на ТыТрубе !" # не забудь про app.config['JSON_AS_ASCII'] = False -SQLALCHEMY_DATABASE_URI = os.getenv("DATABASE_URL", "sqlite:///db/data.db") # DATABASE_URL д.б. проброшено из Docker Compose -SQLALCHEMY_TRACK_MODIFICATIONS = False \ No newline at end of file +class Config: + SQLALCHEMY_DATABASE_URI = os.getenv("DATABASE_URL") + SQLALCHEMY_TRACK_MODIFICATIONS = False diff --git a/backend/models/imp.py b/backend/models/imp.py new file mode 100644 index 0000000..2e1eeb6 --- /dev/null +++ b/backend/models/imp.py @@ -0,0 +1,3 @@ +from flask_sqlalchemy import SQLAlchemy + +db = SQLAlchemy() \ No newline at end of file diff --git a/backend/models/Names.py b/backend/models/main_routers_db.py similarity index 100% rename from backend/models/Names.py rename to backend/models/main_routers_db.py diff --git a/backend/models/db.py b/backend/models/user/main_user.py similarity index 100% rename from backend/models/db.py rename to backend/models/user/main_user.py diff --git a/backend/requirements.txt b/requirements.txt similarity index 100% rename from backend/requirements.txt rename to requirements.txt From e37cbcf7dac2cce00a225f2a07ccd31664f31f22 Mon Sep 17 00:00:00 2001 From: pablaofficeal Date: Thu, 4 Dec 2025 15:58:49 +0100 Subject: [PATCH 4/5] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D1=8B?= =?UTF-8?q?=20=D0=BD=D0=B5=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D1=83?= =?UTF-8?q?=D0=B5=D0=BC=D1=8B=D0=B5=20=D0=BC=D0=B0=D1=80=D1=88=D1=80=D1=83?= =?UTF-8?q?=D1=82=D1=8B=20=D0=B8=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=B8=D0=BC=D0=BF=D0=BE=D1=80=D1=82=D1=8B?= =?UTF-8?q?=20=D0=B4=D0=BB=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=8B=20?= =?UTF-8?q?=D1=81=20=D0=B1=D0=B0=D0=B7=D0=BE=D0=B9=20=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=BD=D1=8B=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app.py | 3 +++ backend/routes.py | 27 --------------------------- 2 files changed, 3 insertions(+), 27 deletions(-) delete mode 100644 backend/routes.py diff --git a/backend/app.py b/backend/app.py index 3029be2..0c9361d 100644 --- a/backend/app.py +++ b/backend/app.py @@ -1,8 +1,11 @@ from flask import Flask from config import Config +from models.main_routers_db import * +from models.imp import db app = Flask(__name__) app.config.from_object(Config) +#db.init_app(app) if __name__ == "__main__": app.run(debug=True, host="0.0.0.0") \ No newline at end of file diff --git a/backend/routes.py b/backend/routes.py deleted file mode 100644 index e14b1ab..0000000 --- a/backend/routes.py +++ /dev/null @@ -1,27 +0,0 @@ -from flask import jsonify, current_app -from flask import Blueprint -from sqlalchemy import func - -from models.Names import Names - -bp = Blueprint('routes', __name__) - -@bp.route("/") -def index(): - return jsonify([ - {"response": current_app.config['HELLO_MESSAGE']}, - {"db_path": current_app.config['SQLALCHEMY_DATABASE_URI']} - ]) - -@bp.route("/name") -def name(): - n = Names.query.order_by(func.random()).first() - return jsonify({"names" : "%s = %d" % (n.name, n.amount) }) - -# http://azzrael_code.yt/add_random -@bp.route("/add_random") -def add_random(): - n = Names() - n.fill_random() - n.save() - return jsonify({"added" : "%s = %d" % (n.name, n.amount)}) \ No newline at end of file From ba7addb5b4a63da65647865c0e8466de118df9f3 Mon Sep 17 00:00:00 2001 From: pablaofficeal Date: Thu, 4 Dec 2025 16:05:11 +0100 Subject: [PATCH 5/5] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=20=D0=B1=D0=B0=D0=B7=D1=8B=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B?= =?UTF-8?q?=D1=85=20=D0=B8=20=D1=80=D0=B5=D0=B3=D0=B8=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BC=D0=B0=D1=80=D1=88=D1=80=D1=83?= =?UTF-8?q?=D1=82=D0=BE=D0=B2;=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D1=8B=20=D0=BD=D0=B5=D0=BD=D1=83=D0=B6=D0=BD=D1=8B=D0=B5=20?= =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8?= =?UTF-8?q?=D0=B3=D1=83=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20Nginx=20=D0=B8=20D?= =?UTF-8?q?ocker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app.py | 10 +++++++++- backend/blueprints/all_routers_bpp.py | 4 ++++ backend/models/user/main_user.py | 18 ++++++++++++++++++ backend/routers/home/main_home_bpp.py | 7 +++++++ docker-compose.dev.yml | 1 - nginx/Dockerfile | 5 ----- nginx/nginx.conf | 25 ------------------------- nginx/web/default/index.html | 1 - 8 files changed, 38 insertions(+), 33 deletions(-) create mode 100644 backend/blueprints/all_routers_bpp.py create mode 100644 backend/routers/home/main_home_bpp.py delete mode 100644 nginx/Dockerfile delete mode 100644 nginx/nginx.conf delete mode 100644 nginx/web/default/index.html diff --git a/backend/app.py b/backend/app.py index 0c9361d..9adb365 100644 --- a/backend/app.py +++ b/backend/app.py @@ -2,10 +2,18 @@ from config import Config from models.main_routers_db import * from models.imp import db +from blueprints.all_routers_bpp import register_all_routers_bpp app = Flask(__name__) + app.config.from_object(Config) + #db.init_app(app) +register_all_routers_bpp(app) + +with app.app_context(): + db.create_all() + if __name__ == "__main__": - app.run(debug=True, host="0.0.0.0") \ No newline at end of file + app.run(debug=True, host="0.0.0.0", port=6543) \ No newline at end of file diff --git a/backend/blueprints/all_routers_bpp.py b/backend/blueprints/all_routers_bpp.py new file mode 100644 index 0000000..ed7d20c --- /dev/null +++ b/backend/blueprints/all_routers_bpp.py @@ -0,0 +1,4 @@ +from routers.home.main_home_bpp import home_bpp + +def register_all_routers_bpp(app): + app.register_blueprint(home_bpp) \ No newline at end of file diff --git a/backend/models/user/main_user.py b/backend/models/user/main_user.py index e69de29..aa9e4db 100644 --- a/backend/models/user/main_user.py +++ b/backend/models/user/main_user.py @@ -0,0 +1,18 @@ +from models.imp import db +from werkzeug.security import generate_password_hash, check_password_hash + +class User(db.Model): + id = db.Column(db.Integer, primary_key=True) + username = db.Column(db.String(80), unique=True, nullable=False) + email = db.Column(db.String(120), unique=True, nullable=False) + password_hash = db.Column(db.String(600), nullable=False) + is_admin = db.Column(db.Boolean, default=False) + is_active = db.Column(db.Boolean, default=True) + def set_password(self, password): + self.password_hash = generate_password_hash(password) + + def check_password(self, password): + return check_password_hash(self.password_hash, password) + + def __repr__(self): + return f'' \ No newline at end of file diff --git a/backend/routers/home/main_home_bpp.py b/backend/routers/home/main_home_bpp.py new file mode 100644 index 0000000..00ba50b --- /dev/null +++ b/backend/routers/home/main_home_bpp.py @@ -0,0 +1,7 @@ +from flask import Blueprint, render_template + +home_bpp = Blueprint("home_bpp", __name__) + +@home_bpp.route("/") +def index(): + return render_template("index.html") diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 21f4513..9393490 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -1,4 +1,3 @@ -version: '3' services: app: diff --git a/nginx/Dockerfile b/nginx/Dockerfile deleted file mode 100644 index c5497e8..0000000 --- a/nginx/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM nginx:1.20-alpine - -RUN rm /etc/nginx/conf.d/default.conf -COPY nginx.conf /etc/nginx/conf.d -RUN mkdir -p /home/web/default \ No newline at end of file diff --git a/nginx/nginx.conf b/nginx/nginx.conf deleted file mode 100644 index b6ae06f..0000000 --- a/nginx/nginx.conf +++ /dev/null @@ -1,25 +0,0 @@ -server { - - listen 80; - - server_name azzrael_code.yt; - root /home/web/default; - - location /static/ { - - } - - location /pg { - proxy_set_header X-Script-Name /pg; - proxy_set_header Host $host; - proxy_pass http://pgadmin:5555; - proxy_redirect off; - } - - location / { - proxy_pass http://app:5000; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header Host $host; - proxy_redirect off; - } -} \ No newline at end of file diff --git a/nginx/web/default/index.html b/nginx/web/default/index.html deleted file mode 100644 index ea636a8..0000000 --- a/nginx/web/default/index.html +++ /dev/null @@ -1 +0,0 @@ -Silence is golden! \ No newline at end of file