Merge pull request 'dev_d' (#1) from dev_d into master
Some checks failed
continuous-integration/drone Build is failing
Some checks failed
continuous-integration/drone Build is failing
Reviewed-on: #1
This commit is contained in:
@@ -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_"]
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
14
drone.yaml
14
drone.yaml
@@ -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:
|
||||||
|
|||||||
@@ -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
|
||||||
(
|
(
|
||||||
|
|||||||
Reference in New Issue
Block a user