diff --git a/app/.dockerignore b/.dockerignore similarity index 100% rename from app/.dockerignore rename to .dockerignore 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/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/cli.py b/app/cli.py deleted file mode 100644 index fdecee2..0000000 --- a/app/cli.py +++ /dev/null @@ -1,21 +0,0 @@ -import click -from flask import Blueprint - -from models.Names import Names - -from 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/app/config.py b/app/config.py deleted file mode 100644 index df7ffee..0000000 --- a/app/config.py +++ /dev/null @@ -1,5 +0,0 @@ -import os - -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 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/routes.py b/app/routes.py deleted file mode 100644 index e14b1ab..0000000 --- a/app/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 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..9adb365 --- /dev/null +++ b/backend/app.py @@ -0,0 +1,19 @@ +from flask import Flask +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", 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/config.py b/backend/config.py new file mode 100644 index 0000000..49e24ca --- /dev/null +++ b/backend/config.py @@ -0,0 +1,7 @@ +import os +from dotenv import load_dotenv +load_dotenv() + +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/main_routers_db.py b/backend/models/main_routers_db.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/models/user/main_user.py b/backend/models/user/main_user.py new file mode 100644 index 0000000..aa9e4db --- /dev/null +++ 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 5b98088..9393490 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -1,7 +1,4 @@ -version: '3' -# docker-compose -f docker-compose.dev.yml build -# docker-compose -f docker-compose.dev.yml up -d services: app: build: ./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 diff --git a/app/requirements.txt b/requirements.txt similarity index 100% rename from app/requirements.txt rename to requirements.txt