Merge pull request 'dev_d' (#1) from dev_d into master
Some checks failed
continuous-integration/drone Build is failing

Reviewed-on: #1
This commit is contained in:
2025-09-25 17:22:01 +03:00
6 changed files with 32 additions and 14 deletions

View File

@@ -1,5 +1,4 @@
from .database_engine import async_session_ from .database_engine import async_session_
from .models import Worker,Component, Order from .models import Worker, Component, Order, job_title
__all__ = ["Worker", "Component", "Order", "async_session_", "job_title"]
__all__ = ["Worker", "Component", "Order", "async_session_"]

View File

@@ -8,7 +8,7 @@ import dotenv
dotenv.load_dotenv(".env") dotenv.load_dotenv(".env")
DATABASE_URL = (f"postgresql+asyncpg://{os.getenv('DB_USER')}:{os.getenv('DB_PASSWORD')}@" DATABASE_URL = (f"postgresql+asyncpg://{os.getenv('DB_USER')}:{os.getenv('DB_PASSWORD')}@"
f"{os.getenv('DB_HOST')}:9432/{os.getenv('DATABASE')}") f"{os.getenv('DB_HOST')}/{os.getenv('DATABASE')}")
print(DATABASE_URL) print(DATABASE_URL)
engine = create_async_engine(DATABASE_URL, echo=True) engine = create_async_engine(DATABASE_URL, echo=True)
async_session_ = async_sessionmaker(bind=engine, expire_on_commit=False) async_session_ = async_sessionmaker(bind=engine, expire_on_commit=False)

View File

@@ -1,8 +1,9 @@
from sqlalchemy import Column, Integer, String, Date, ForeignKey, func, Null from sqlalchemy import Column, Integer, String, Date, ForeignKey, func, Null, BIGINT
from sqlalchemy.dialects.postgresql import ENUM from sqlalchemy.dialects.postgresql import ENUM
from sqlalchemy.orm import relationship, DeclarativeBase from sqlalchemy.orm import relationship, DeclarativeBase
status_enum = ENUM('Выполнено', 'В процессе', 'Создано', 'Ожидание комплектующих', name='status') status_enum = ENUM('Выполнено', 'В процессе', 'Создано', 'Ожидание комплектующих', name='status')
job_title = ENUM('Начальник цеха', 'Мастер', 'Сборщик', name='job_title')
class Base(DeclarativeBase): class Base(DeclarativeBase):
@@ -22,10 +23,11 @@ class Worker(Base):
__tablename__ = "workers" __tablename__ = "workers"
id = Column(Integer, primary_key=True, autoincrement=True) id = Column(Integer, primary_key=True, autoincrement=True)
telegram_id = Column(Integer, unique=True, nullable=False) telegram_id = Column(BIGINT, unique=True, nullable=False)
name = Column(String, nullable=False) name = Column(String, nullable=False)
email = Column(String, nullable=True) email = Column(String, nullable=True)
phone_number = Column(String, nullable=False) phone_number = Column(String, default=None)
job_title = Column(job_title, default='Сборщик'),
created_at = Column(Date, server_default=func.now()) created_at = Column(Date, server_default=func.now())
updated_at = Column(Date, onupdate=func.now()) updated_at = Column(Date, onupdate=func.now())
@@ -47,7 +49,7 @@ class Order(Base):
id = Column(Integer, primary_key=True, autoincrement=True) id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String) name = Column(String)
worker_id = Column(Integer, ForeignKey('workers.telegram_id'), nullable=False) worker_id = Column(BIGINT, ForeignKey('workers.telegram_id'), nullable=False)
status_id = Column(status_enum) status_id = Column(status_enum)
counterparty = Column(String) counterparty = Column(String)
customer = Column(String, nullable=False) customer = Column(String, nullable=False)

View File

@@ -62,8 +62,7 @@ async def orders_menu(message: Message):
async def get_order_worker_id(callback: CallbackQuery, state: FSMContext): async def get_order_worker_id(callback: CallbackQuery, state: FSMContext):
await state.set_state(OrderForm.worker_id) await state.set_state(OrderForm.worker_id)
async with async_session_() as session: async with async_session_() as session:
async with session.begin(): result = await session.execute(select(Worker.name, Worker.telegram_id).where(Worker.job_title == "Сборщик"))
result = await session.execute(select(Worker.name, Worker.telegram_id))
workers = result.all() workers = result.all()
await callback.message.answer("Введите сборщика ответственного за заказ:", await callback.message.answer("Введите сборщика ответственного за заказ:",
reply_markup=create_inline_kb( reply_markup=create_inline_kb(

View File

@@ -1,7 +1,14 @@
kind: pipeline kind: pipeline
type: docker type: docker
name: default name: default
clone:
git:
url: https://gitea.ronis0505.tech/ronis_0505/telegram-bot-for-manipulate-orders.git
user:
from_secret: GITEA_USER
password:
from_secret: GITEA_TOKEN
steps: steps:
- name: install-dependencies - name: install-dependencies
image: python:3.12 image: python:3.12
@@ -18,8 +25,13 @@ steps:
- name: deploy - name: deploy
image: appleboy/ssh image: appleboy/ssh
environment:
ENV_CONTENT:
from_secret: DOT_ENV_CONTENT
commands:
- echo "$ENV_CONTENT" > .env
settings: settings:
host: your.server.ip host: https://gitea.ronis-0505.ru/ronis_0505/telegram-bot-for-manipulate-orders.git
username: ronis_0505 username: ronis_0505
password: 667766 password: 667766
script: script:

View File

@@ -1,15 +1,21 @@
CREATE TYPE job_title AS ENUM ('Начальник цеха','Мастер','Сборщик');
CREATE TYPE status AS ENUM ('Выполнено','В процессе','Создано','Ожидание комплектующих');
CREATE TABLE workers CREATE TABLE workers
( (
id SERIAL PRIMARY KEY, id SERIAL PRIMARY KEY,
telegram_id BIGINT UNIQUE NOT NULL, telegram_id BIGINT UNIQUE NOT NULL,
name VARCHAR NOT NULL, name VARCHAR NOT NULL,
email VARCHAR(50), email VARCHAR(50),
phone_number VARCHAR(20) NOT NULL, phone_number VARCHAR(20),
job_title job_title default 'Сборщик',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP updated_at TIMESTAMP
); );
CREATE TYPE status AS ENUM ('Выполнено','В процессе','Создано','Ожидание комплектующих');
CREATE TABLE orders CREATE TABLE orders
( (