Compare commits
1 Commits
dev_fix_ru
...
f108e013c2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f108e013c2 |
7
.gitignore
vendored
7
.gitignore
vendored
@@ -2,10 +2,11 @@
|
|||||||
.vscode
|
.vscode
|
||||||
instance
|
instance
|
||||||
venv/
|
venv/
|
||||||
|
__pycache__
|
||||||
123
|
123
|
||||||
*.csv
|
*.csv
|
||||||
*.db
|
*.db
|
||||||
c*.txt
|
c*.txt
|
||||||
migrations
|
|
||||||
__pycache__
|
migrations/*
|
||||||
.idea
|
.idea
|
||||||
BIN
VedomostMOL.xls
BIN
VedomostMOL.xls
Binary file not shown.
BIN
VedomostMOL.xlsx
BIN
VedomostMOL.xlsx
Binary file not shown.
166
app.py
166
app.py
@@ -8,6 +8,7 @@ import csv
|
|||||||
import random
|
import random
|
||||||
from urllib.parse import unquote
|
from urllib.parse import unquote
|
||||||
|
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///project.db"
|
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///project.db"
|
||||||
@@ -21,13 +22,7 @@ db.init_app(app)
|
|||||||
migrate = Migrate(app, db)
|
migrate = Migrate(app, db)
|
||||||
|
|
||||||
|
|
||||||
|
@app.route("/", methods=['GET', 'POST'])
|
||||||
@app.route("/login", methods=['GET', 'POST'])
|
|
||||||
def login():
|
|
||||||
return render_template('login.html')
|
|
||||||
|
|
||||||
|
|
||||||
@app.route("/", methods=['GET', 'POST'])
|
|
||||||
def index():
|
def index():
|
||||||
results = []
|
results = []
|
||||||
results1 = []
|
results1 = []
|
||||||
@@ -51,7 +46,7 @@ def index():
|
|||||||
results1.append(s.nazvanie)
|
results1.append(s.nazvanie)
|
||||||
aud = db.session.get(Auditory, s.aud_id)
|
aud = db.session.get(Auditory, s.aud_id)
|
||||||
results1.append(aud.audnazvanie)
|
results1.append(aud.audnazvanie)
|
||||||
return render_template('index.html', aud=all_aud, results=results, res1=results1)
|
return render_template('index.html', aud=all_aud, results=results, res1=results1)
|
||||||
return render_template('index.html', aud=all_aud, results=results, res1=results1)
|
return render_template('index.html', aud=all_aud, results=results, res1=results1)
|
||||||
|
|
||||||
|
|
||||||
@@ -96,7 +91,7 @@ def searchonaud():
|
|||||||
return render_template('searchonaud.html', aud=all_aud, res=res)
|
return render_template('searchonaud.html', aud=all_aud, res=res)
|
||||||
|
|
||||||
|
|
||||||
@app.route("/addaudtodb", methods=['GET', 'POST'])
|
@app.route("/addaudtodb", methods=['GET', 'POST'])
|
||||||
def addaudtodb():
|
def addaudtodb():
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
aud = request.form.get('auditory')
|
aud = request.form.get('auditory')
|
||||||
@@ -124,33 +119,26 @@ def alloborud():
|
|||||||
|
|
||||||
@app.route('/getall')
|
@app.route('/getall')
|
||||||
def getall():
|
def getall():
|
||||||
oborud = db.session.query(Oboruds).order_by(Oboruds.invNumber).all()
|
oboruds = Oboruds.query.all()
|
||||||
|
oboruds_json = [{
|
||||||
|
'id': oborud.id,
|
||||||
|
'invNumber': oborud.invNumber,
|
||||||
|
'nazvanie': oborud.nazvanie,
|
||||||
|
'raspologenie': oborud.raspologenie,
|
||||||
|
'numberved': oborud.numberved,
|
||||||
|
'balancenumber': oborud.balancenumber,
|
||||||
|
'kolichestvo': oborud.kolichestvo,
|
||||||
|
'balancenumber': oborud.balancenumber,
|
||||||
|
'aud_id': oborud.aud_id
|
||||||
|
} for oborud in oboruds]
|
||||||
|
|
||||||
results = []
|
|
||||||
for oboruds in oborud:
|
|
||||||
if oboruds.aud_id is None:
|
|
||||||
results.append({
|
|
||||||
'invNumber': oboruds.invNumber,
|
|
||||||
'nazvanie': oboruds.nazvanie,
|
|
||||||
'raspologenie': oboruds.raspologenie,
|
|
||||||
'balancenumber': oboruds.balancenumber,
|
|
||||||
'kolichestvo': oboruds.kolichestvo,
|
|
||||||
'numberppasu': oboruds.numberppasu,
|
|
||||||
'numberved': oboruds.numberved,
|
|
||||||
'aud': ""})
|
|
||||||
else:
|
|
||||||
aud = db.session.query(Auditory).filter_by(id=oboruds.aud_id).first()
|
|
||||||
results.append({
|
|
||||||
'invNumber': oboruds.invNumber,
|
|
||||||
'nazvanie': oboruds.nazvanie,
|
|
||||||
'raspologenie': oboruds.raspologenie,
|
|
||||||
'balancenumber': oboruds.balancenumber,
|
|
||||||
'kolichestvo': oboruds.kolichestvo,
|
|
||||||
'numberppasu': oboruds.numberppasu,
|
|
||||||
'numberved': oboruds.numberved,
|
|
||||||
'aud': aud.audnazvanie})
|
|
||||||
|
|
||||||
return jsonify(results)
|
return jsonify(oboruds_json)
|
||||||
|
|
||||||
|
@app.route('/updateduplicate', methods=['GET', 'POST'])
|
||||||
|
def updateduplicate():
|
||||||
|
if request.method == 'POST':
|
||||||
|
aud = request.form.get('auditory_dubl')
|
||||||
|
|
||||||
|
|
||||||
@app.route('/vneaud', methods=['GET', 'POST'])
|
@app.route('/vneaud', methods=['GET', 'POST'])
|
||||||
@@ -161,12 +149,12 @@ def vneaud():
|
|||||||
ak = db.session.query(Oboruds).all()
|
ak = db.session.query(Oboruds).all()
|
||||||
|
|
||||||
for dt in data:
|
for dt in data:
|
||||||
res.append([dt.invNumber, dt.nazvanie])
|
res.append([dt.invNumber, dt.nazvanie, dt.typeBalanse])
|
||||||
|
|
||||||
return render_template('vneaud.html', res=res, kolvo=len(data), all_kol=len(ak))
|
return render_template('vneaud.html', res=res, kolvo=len(data), all_kol=len(ak))
|
||||||
|
|
||||||
|
|
||||||
@app.route('/zametki', methods=['GET', 'POST'])
|
@app.route('/zametki', methods=['GET', 'POST'])
|
||||||
def zametki():
|
def zametki():
|
||||||
zam = db.session.query(Zametki).filter(Zametki.rmdt == None).all()
|
zam = db.session.query(Zametki).filter(Zametki.rmdt == None).all()
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
@@ -189,7 +177,7 @@ def js2():
|
|||||||
return jsonify({'success': True}), 200, {'ContentType': 'application/json'}
|
return jsonify({'success': True}), 200, {'ContentType': 'application/json'}
|
||||||
|
|
||||||
|
|
||||||
@app.route('/zamsearch', methods=['GET', 'POST'])
|
@app.route('/zamsearch', methods=['GET', 'POST'])
|
||||||
def zamsearch():
|
def zamsearch():
|
||||||
p = request.form.get('srch')
|
p = request.form.get('srch')
|
||||||
|
|
||||||
@@ -197,61 +185,42 @@ def zamsearch():
|
|||||||
Zametki.txtzam.contains(p)).ll()
|
Zametki.txtzam.contains(p)).ll()
|
||||||
zam = []
|
zam = []
|
||||||
for item in searchedZam:
|
for item in searchedZam:
|
||||||
zam.append([item.txtzam, item.created_date])
|
zam.append([item.txtzam, item.created_date])
|
||||||
return render_template('zametki.html', zam=zam)
|
return render_template('zametki.html', zam=zam)
|
||||||
|
|
||||||
|
|
||||||
@app.route('/addraspved', methods=['GET', 'POST'])
|
@app.route('/addraspved', methods=['GET', 'POST'])
|
||||||
def addraspved():
|
def addraspved():
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
|
|
||||||
query_string = request.data.decode()
|
query_string = request.data.decode()
|
||||||
|
|
||||||
|
print(query_string)
|
||||||
un_query_string = unquote(unquote(query_string)).split(',')
|
un_query_string = unquote(unquote(query_string)).split(',')
|
||||||
|
|
||||||
|
print(un_query_string)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ob = db.session.query(Oboruds).filter_by(invNumber=un_query_string[0]).first()
|
ob = db.session.query(Oboruds).filter_by(invNumber=un_query_string[0]).first()
|
||||||
|
ob.raspologenie=un_query_string[2]
|
||||||
ob.numberved = un_query_string[1]
|
ob.numberved = un_query_string[1]
|
||||||
ob.kolichestvo = un_query_string[2]
|
|
||||||
ob.balancenumber = un_query_string[3]
|
|
||||||
ob.raspologenie = un_query_string[4]
|
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
db.session.close()
|
db.session.close()
|
||||||
|
|
||||||
return jsonify({'success': True}, 200, {'ContentType': 'application/json'})
|
return jsonify({'success': True}, 200, {'ContentType': 'application/json'})
|
||||||
|
|
||||||
|
|
||||||
@app.route('/addoborudasu', methods=['GET', 'POST'])
|
|
||||||
def addoborud():
|
|
||||||
if request.method == 'POST':
|
|
||||||
query_string = request.data.decode()
|
|
||||||
|
|
||||||
un_query_string = unquote(unquote(query_string)).split(',')
|
|
||||||
db.session.add(
|
|
||||||
Oboruds(invNumber=un_query_string[0],
|
|
||||||
nazvanie=un_query_string[5],
|
|
||||||
raspologenie=un_query_string[4],
|
|
||||||
numberved=un_query_string[1],
|
|
||||||
kolichestvo=un_query_string[2],
|
|
||||||
balancenumber=un_query_string[3]
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
db.session.commit()
|
|
||||||
|
|
||||||
return jsonify({'success': True}, 200, {'ContentType': 'application/json'})
|
|
||||||
|
|
||||||
|
|
||||||
# ==================================================================================
|
# ==================================================================================
|
||||||
|
|
||||||
|
|
||||||
def ranomraspr():
|
def ranomraspr():
|
||||||
with app.app_context():
|
with app.app_context():
|
||||||
while len(db.session.query(Oboruds).filter(Oboruds.aud_id is None).all()) > 0:
|
while len(db.session.query(Oboruds).filter(Oboruds.aud_id == None).all()) > 0:
|
||||||
audid = random.choice(db.session.query(Auditory).all())
|
audid = random.choice(db.session.query(Auditory).all())
|
||||||
oborud = random.choice(db.session.query(Oboruds).filter(Oboruds.aud_id is None).all())
|
oborud = random.choice(db.session.query(Oboruds).filter(Oboruds.aud_id == None).all())
|
||||||
oborud.aud_id = audid.id
|
oborud.aud_id = audid.id
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
def createdb():
|
def createdb():
|
||||||
@@ -293,52 +262,13 @@ def createdb():
|
|||||||
for row in csv_reader:
|
for row in csv_reader:
|
||||||
db.session.add(
|
db.session.add(
|
||||||
Oboruds(invNumber=row[0], nazvanie=row[1], typeBalanse='баланс'))
|
Oboruds(invNumber=row[0], nazvanie=row[1], typeBalanse='баланс'))
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
def write2excell():
|
|
||||||
wb = xlrd.open_workbook("VedIsh.xls")
|
|
||||||
sheet = wb.sheet_by_index(0)
|
|
||||||
|
|
||||||
newFile = copy(wb)
|
|
||||||
newSheet = newFile.get_sheet(0)
|
|
||||||
invNomerColum = 6
|
|
||||||
|
|
||||||
column_index = 1
|
|
||||||
for row_idx in range(sheet.nrows):
|
|
||||||
cell_value = sheet.cell(row_idx, column_index)
|
|
||||||
|
|
||||||
if cell_value:
|
|
||||||
|
|
||||||
tmp_inv_number = str(cell_value).split(':')[1]
|
|
||||||
|
|
||||||
try:
|
|
||||||
a = tmp_inv_number[1:-1]
|
|
||||||
|
|
||||||
inv_number = int(tmp_inv_number[1:-1])
|
|
||||||
|
|
||||||
with app.app_context():
|
|
||||||
auditory_obj = db.session.query(Auditory).join(Oboruds, Oboruds.aud_id == Auditory.id).filter(
|
|
||||||
Oboruds.invNumber == inv_number).first()
|
|
||||||
|
|
||||||
print(auditory_obj.audnazvanie)
|
|
||||||
|
|
||||||
# cur.execute("SELECT aud.audnazvanie FROM oboruds AS ob JOIN auditory AS aud ON ob.aud_id = aud.id WHERE ob.invNumber = ?", (inv_number,))
|
|
||||||
|
|
||||||
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
"""
|
|
||||||
else:
|
|
||||||
#newSheet.write(row_idx, invNomerColum, "Нет инв номера")
|
|
||||||
pass
|
|
||||||
newFile.save("Ved31.xls")
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
#write2excell()
|
|
||||||
|
|
||||||
app.run(debug=True, host='0.0.0.0', port='3800')
|
#ranomraspr()
|
||||||
|
#createdb()
|
||||||
|
app.run(debug=True, host='0.0.0.0', port='3800')
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
"""Backend package initializer."""
|
|
||||||
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
from backend.models import Base
|
|
||||||
from backend.database import engine
|
|
||||||
|
|
||||||
Base.metadata.drop_all(bind=engine) # Опционально, если вдруг есть
|
|
||||||
Base.metadata.create_all(bind=engine)
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
# backend/database.py
|
|
||||||
from sqlalchemy import create_engine
|
|
||||||
from sqlalchemy.orm import sessionmaker, scoped_session
|
|
||||||
|
|
||||||
SQLALCHEMY_DATABASE_URL = "sqlite:///./app.db" # или PostgreSQL URL
|
|
||||||
|
|
||||||
engine = create_engine(SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False})
|
|
||||||
SessionLocal = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine))
|
|
||||||
|
|
||||||
def get_db():
|
|
||||||
db = SessionLocal()
|
|
||||||
try:
|
|
||||||
yield db
|
|
||||||
finally:
|
|
||||||
db.close()
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
# backend/main.py
|
|
||||||
from fastapi import FastAPI
|
|
||||||
from fastapi.responses import RedirectResponse
|
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
|
||||||
|
|
||||||
from backend.routers.equipment_types import equipment_types
|
|
||||||
from backend.routers.auditories import auditories
|
|
||||||
from backend.routers.oboruds import oboruds
|
|
||||||
from backend.routers.components import components
|
|
||||||
from backend.routers.rashodniki import consumables
|
|
||||||
from backend.routers.zametki import zametki
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
app = FastAPI()
|
|
||||||
|
|
||||||
# Для фронтенда Vue.js
|
|
||||||
app.add_middleware(
|
|
||||||
CORSMiddleware,
|
|
||||||
allow_origins=["*"], # заменить на ['http://localhost:5173'] для безопасности
|
|
||||||
allow_credentials=True,
|
|
||||||
allow_methods=["*"],
|
|
||||||
allow_headers=["*"],
|
|
||||||
)
|
|
||||||
|
|
||||||
@app.get("/ping")
|
|
||||||
def ping():
|
|
||||||
return {"message": "pong"}
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/")
|
|
||||||
def root():
|
|
||||||
return RedirectResponse(url="/docs")
|
|
||||||
|
|
||||||
|
|
||||||
# Подключение роутов
|
|
||||||
app.include_router(equipment_types)
|
|
||||||
app.include_router(auditories)
|
|
||||||
app.include_router(oboruds)
|
|
||||||
app.include_router(components)
|
|
||||||
app.include_router(consumables)
|
|
||||||
app.include_router(zametki)
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
import sys
|
|
||||||
from sqlalchemy import create_engine, text
|
|
||||||
from sqlalchemy.orm import sessionmaker
|
|
||||||
from backend.database import SessionLocal as NewSession
|
|
||||||
from backend import models
|
|
||||||
|
|
||||||
OLD_DB_URL = "sqlite:///./backend/old_app.db"
|
|
||||||
old_engine = create_engine(OLD_DB_URL, connect_args={"check_same_thread": False})
|
|
||||||
OldSession = sessionmaker(bind=old_engine)
|
|
||||||
old_db = OldSession()
|
|
||||||
|
|
||||||
new_db = NewSession()
|
|
||||||
|
|
||||||
def log(msg: str):
|
|
||||||
print(f"[INFO] {msg}", file=sys.stderr)
|
|
||||||
|
|
||||||
def migrate():
|
|
||||||
log("Запуск переноса данных из old_app.db → app.db")
|
|
||||||
|
|
||||||
# Тип оборудования по умолчанию
|
|
||||||
log("Добавление типа оборудования по умолчанию: 'Неизвестно'")
|
|
||||||
default_type = models.EquipmentType(name="Неизвестно")
|
|
||||||
new_db.add(default_type)
|
|
||||||
new_db.commit()
|
|
||||||
|
|
||||||
# Перенос аудиторий
|
|
||||||
log("Перенос аудиторий...")
|
|
||||||
auditory_map = {}
|
|
||||||
aud_rows = old_db.execute(text("SELECT id, audnazvanie FROM auditory")).fetchall()
|
|
||||||
for aud in aud_rows:
|
|
||||||
new_aud = models.Auditory(audnazvanie=aud.audnazvanie)
|
|
||||||
new_db.add(new_aud)
|
|
||||||
new_db.flush()
|
|
||||||
auditory_map[aud.id] = new_aud.id
|
|
||||||
log(f" → перенесено: {len(aud_rows)}")
|
|
||||||
|
|
||||||
# Перенос оборудования
|
|
||||||
log("Перенос оборудования...")
|
|
||||||
ob_rows = old_db.execute(text("SELECT * FROM oboruds")).fetchall()
|
|
||||||
for ob in ob_rows:
|
|
||||||
new_ob = models.Oboruds(
|
|
||||||
invNumber=ob.invNumber,
|
|
||||||
nazvanie=ob.nazvanie,
|
|
||||||
raspologenie=ob.raspologenie,
|
|
||||||
numberppasu=ob.numberppasu,
|
|
||||||
kolichestvo=ob.kolichestvo,
|
|
||||||
aud_id=auditory_map.get(ob.aud_id),
|
|
||||||
type_id=default_type.id
|
|
||||||
)
|
|
||||||
new_db.add(new_ob)
|
|
||||||
log(f" → перенесено: {len(ob_rows)}")
|
|
||||||
|
|
||||||
# Перенос заметок
|
|
||||||
log("Перенос заметок...")
|
|
||||||
z_rows = old_db.execute(text("SELECT * FROM zametki")).fetchall()
|
|
||||||
for z in z_rows:
|
|
||||||
new_z = models.Zametki(
|
|
||||||
txtzam=z.txtzam,
|
|
||||||
created_date=z.created_date,
|
|
||||||
rmdt=z.rmdt
|
|
||||||
)
|
|
||||||
new_db.add(new_z)
|
|
||||||
log(f" → перенесено: {len(z_rows)}")
|
|
||||||
|
|
||||||
new_db.commit()
|
|
||||||
log("✅ Перенос завершён успешно.")
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
migrate()
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
# backend/models.py
|
|
||||||
|
|
||||||
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime
|
|
||||||
from sqlalchemy.orm import relationship, declarative_base
|
|
||||||
import datetime
|
|
||||||
|
|
||||||
Base = declarative_base()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Auditory(Base):
|
|
||||||
__tablename__ = 'auditories'
|
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True)
|
|
||||||
audnazvanie = Column(String)
|
|
||||||
|
|
||||||
oboruds = relationship("Oboruds", back_populates="auditory")
|
|
||||||
|
|
||||||
|
|
||||||
class EquipmentType(Base):
|
|
||||||
__tablename__ = 'equipment_types'
|
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True)
|
|
||||||
name = Column(String, unique=True, nullable=False)
|
|
||||||
|
|
||||||
oboruds = relationship("Oboruds", back_populates="type")
|
|
||||||
|
|
||||||
|
|
||||||
class Oboruds(Base):
|
|
||||||
__tablename__ = 'oboruds'
|
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True)
|
|
||||||
invNumber = Column(Integer)
|
|
||||||
nazvanie = Column(String(500))
|
|
||||||
raspologenie = Column(String(200))
|
|
||||||
numberppasu = Column(String(100))
|
|
||||||
kolichestvo = Column(Integer)
|
|
||||||
|
|
||||||
aud_id = Column(Integer, ForeignKey("auditories.id"))
|
|
||||||
auditory = relationship("Auditory", back_populates="oboruds")
|
|
||||||
|
|
||||||
type_id = Column(Integer, ForeignKey("equipment_types.id"))
|
|
||||||
type = relationship("EquipmentType", back_populates="oboruds")
|
|
||||||
|
|
||||||
components = relationship("Component", back_populates="oborud")
|
|
||||||
consumables = relationship("Consumable", back_populates="oborud")
|
|
||||||
|
|
||||||
|
|
||||||
class Component(Base):
|
|
||||||
__tablename__ = 'components'
|
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True)
|
|
||||||
name = Column(String, nullable=False)
|
|
||||||
description = Column(String)
|
|
||||||
|
|
||||||
oborud_id = Column(Integer, ForeignKey("oboruds.id"))
|
|
||||||
oborud = relationship("Oboruds", back_populates="components")
|
|
||||||
|
|
||||||
|
|
||||||
class Consumable(Base):
|
|
||||||
__tablename__ = 'consumables'
|
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True)
|
|
||||||
name = Column(String, nullable=False)
|
|
||||||
description = Column(String)
|
|
||||||
|
|
||||||
oborud_id = Column(Integer, ForeignKey("oboruds.id"))
|
|
||||||
oborud = relationship("Oboruds", back_populates="consumables")
|
|
||||||
|
|
||||||
|
|
||||||
class Zametki(Base):
|
|
||||||
__tablename__ = 'zametki'
|
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True)
|
|
||||||
txtzam = Column(String(10000))
|
|
||||||
created_date = Column(DateTime, default=datetime.datetime.utcnow)
|
|
||||||
rmdt = Column(DateTime)
|
|
||||||
Binary file not shown.
@@ -1,2 +0,0 @@
|
|||||||
"""Routers package initializer."""
|
|
||||||
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
from fastapi import APIRouter, Depends
|
|
||||||
from sqlalchemy.orm import Session
|
|
||||||
from .. import models, schemas, database
|
|
||||||
|
|
||||||
auditories = APIRouter(prefix="/auditories", tags=["auditories"])
|
|
||||||
|
|
||||||
@auditories.post("/", response_model=schemas.AuditoryRead)
|
|
||||||
def create_auditory(item: schemas.AuditoryCreate, db: Session = Depends(database.get_db)):
|
|
||||||
obj = models.Auditory(**item.dict())
|
|
||||||
db.add(obj)
|
|
||||||
db.commit()
|
|
||||||
db.refresh(obj)
|
|
||||||
return obj
|
|
||||||
|
|
||||||
@auditories.get("/", response_model=list[schemas.AuditoryRead])
|
|
||||||
def list_auditories(db: Session = Depends(database.get_db)):
|
|
||||||
return db.query(models.Auditory).all()
|
|
||||||
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
from fastapi import APIRouter, Depends
|
|
||||||
from sqlalchemy.orm import Session
|
|
||||||
from .. import models, schemas, database
|
|
||||||
|
|
||||||
|
|
||||||
components = APIRouter(prefix="/components", tags=["components"])
|
|
||||||
|
|
||||||
@components.post("/", response_model=schemas.ComponentRead)
|
|
||||||
def create_component(item: schemas.ComponentCreate, db: Session = Depends(database.get_db)):
|
|
||||||
obj = models.Component(**item.dict())
|
|
||||||
db.add(obj)
|
|
||||||
db.commit()
|
|
||||||
db.refresh(obj)
|
|
||||||
return obj
|
|
||||||
|
|
||||||
@components.get("/", response_model=list[schemas.ComponentRead])
|
|
||||||
def list_components(db: Session = Depends(database.get_db)):
|
|
||||||
return db.query(models.Component).all()
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
from fastapi import APIRouter, Depends
|
|
||||||
from sqlalchemy.orm import Session
|
|
||||||
from .. import models, schemas, database
|
|
||||||
|
|
||||||
equipment_types = APIRouter(prefix="/equipment-types", tags=["equipment_types"])
|
|
||||||
|
|
||||||
@equipment_types.post("/", response_model=schemas.EquipmentTypeRead)
|
|
||||||
def create_equipment_type(item: schemas.EquipmentTypeCreate, db: Session = Depends(database.get_db)):
|
|
||||||
obj = models.EquipmentType(**item.dict())
|
|
||||||
db.add(obj)
|
|
||||||
db.commit()
|
|
||||||
db.refresh(obj)
|
|
||||||
return obj
|
|
||||||
|
|
||||||
@equipment_types.get("/", response_model=list[schemas.EquipmentTypeRead])
|
|
||||||
def list_equipment_types(db: Session = Depends(database.get_db)):
|
|
||||||
return db.query(models.EquipmentType).all()
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
from fastapi import APIRouter, Depends, HTTPException
|
|
||||||
from typing import Optional
|
|
||||||
from sqlalchemy.orm import Session
|
|
||||||
from .. import models, schemas, database
|
|
||||||
|
|
||||||
oboruds = APIRouter(prefix="/oboruds", tags=["oboruds"])
|
|
||||||
|
|
||||||
@oboruds.post("/", response_model=schemas.OborudRead)
|
|
||||||
def create_oborud(item: schemas.OborudCreate, db: Session = Depends(database.get_db)):
|
|
||||||
obj = models.Oboruds(**item.dict())
|
|
||||||
db.add(obj)
|
|
||||||
db.commit()
|
|
||||||
db.refresh(obj)
|
|
||||||
return obj
|
|
||||||
|
|
||||||
@oboruds.get("/", response_model=list[schemas.OborudRead])
|
|
||||||
def list_oboruds(aud_id: Optional[int] = None, db: Session = Depends(database.get_db)):
|
|
||||||
query = db.query(models.Oboruds)
|
|
||||||
if aud_id is not None:
|
|
||||||
query = query.filter(models.Oboruds.aud_id == aud_id)
|
|
||||||
return query.all()
|
|
||||||
|
|
||||||
@oboruds.get("/{oborud_id}", response_model=schemas.OborudRead)
|
|
||||||
def get_oborud(oborud_id: int, db: Session = Depends(database.get_db)):
|
|
||||||
obj = db.query(models.Oboruds).filter(models.Oboruds.id == oborud_id).first()
|
|
||||||
if not obj:
|
|
||||||
raise HTTPException(status_code=404, detail="Oborud not found")
|
|
||||||
return obj
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
from fastapi import APIRouter, Depends
|
|
||||||
from sqlalchemy.orm import Session
|
|
||||||
from .. import models, schemas, database
|
|
||||||
|
|
||||||
consumables = APIRouter(prefix="/consumables", tags=["consumables"])
|
|
||||||
|
|
||||||
@consumables.post("/", response_model=schemas.ConsumableRead)
|
|
||||||
def create_consumable(item: schemas.ConsumableCreate, db: Session = Depends(database.get_db)):
|
|
||||||
obj = models.Consumable(**item.dict())
|
|
||||||
db.add(obj)
|
|
||||||
db.commit()
|
|
||||||
db.refresh(obj)
|
|
||||||
return obj
|
|
||||||
|
|
||||||
@consumables.get("/", response_model=list[schemas.ConsumableRead])
|
|
||||||
def list_consumables(db: Session = Depends(database.get_db)):
|
|
||||||
return db.query(models.Consumable).all()
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
from fastapi import APIRouter, Depends
|
|
||||||
from sqlalchemy.orm import Session
|
|
||||||
from .. import models, schemas, database
|
|
||||||
|
|
||||||
zametki = APIRouter(prefix="/zametki", tags=["zametki"])
|
|
||||||
|
|
||||||
@zametki.post("/", response_model=schemas.ZametkaRead)
|
|
||||||
def create_zametka(item: schemas.ZametkaCreate, db: Session = Depends(database.get_db)):
|
|
||||||
obj = models.Zametki(**item.dict())
|
|
||||||
db.add(obj)
|
|
||||||
db.commit()
|
|
||||||
db.refresh(obj)
|
|
||||||
return obj
|
|
||||||
|
|
||||||
@zametki.get("/", response_model=list[schemas.ZametkaRead])
|
|
||||||
def list_zametki(db: Session = Depends(database.get_db)):
|
|
||||||
return db.query(models.Zametki).all()
|
|
||||||
@@ -1,102 +0,0 @@
|
|||||||
# backend/schemas.py
|
|
||||||
|
|
||||||
from pydantic import BaseModel
|
|
||||||
from typing import Optional, List
|
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
|
|
||||||
# === Equipment Type ===
|
|
||||||
class EquipmentTypeBase(BaseModel):
|
|
||||||
name: str
|
|
||||||
|
|
||||||
class EquipmentTypeCreate(EquipmentTypeBase):
|
|
||||||
pass
|
|
||||||
|
|
||||||
class EquipmentTypeRead(EquipmentTypeBase):
|
|
||||||
id: int
|
|
||||||
|
|
||||||
class Config:
|
|
||||||
orm_mode = True
|
|
||||||
|
|
||||||
|
|
||||||
# === Component ===
|
|
||||||
class ComponentBase(BaseModel):
|
|
||||||
name: str
|
|
||||||
description: Optional[str] = None
|
|
||||||
|
|
||||||
class ComponentCreate(ComponentBase):
|
|
||||||
oborud_id: int
|
|
||||||
|
|
||||||
class ComponentRead(ComponentBase):
|
|
||||||
id: int
|
|
||||||
|
|
||||||
class Config:
|
|
||||||
orm_mode = True
|
|
||||||
|
|
||||||
|
|
||||||
# === Consumable ===
|
|
||||||
class ConsumableBase(BaseModel):
|
|
||||||
name: str
|
|
||||||
description: Optional[str] = None
|
|
||||||
|
|
||||||
class ConsumableCreate(ConsumableBase):
|
|
||||||
oborud_id: int
|
|
||||||
|
|
||||||
class ConsumableRead(ConsumableBase):
|
|
||||||
id: int
|
|
||||||
|
|
||||||
class Config:
|
|
||||||
orm_mode = True
|
|
||||||
|
|
||||||
|
|
||||||
# === Oborud ===
|
|
||||||
class OborudBase(BaseModel):
|
|
||||||
invNumber: Optional[int]
|
|
||||||
nazvanie: str
|
|
||||||
raspologenie: Optional[str] = None
|
|
||||||
numberppasu: Optional[str] = None
|
|
||||||
kolichestvo: Optional[int] = None
|
|
||||||
aud_id: int
|
|
||||||
type_id: int
|
|
||||||
|
|
||||||
class OborudCreate(OborudBase):
|
|
||||||
pass
|
|
||||||
|
|
||||||
class OborudRead(OborudBase):
|
|
||||||
id: int
|
|
||||||
type: EquipmentTypeRead
|
|
||||||
components: List[ComponentRead] = []
|
|
||||||
consumables: List[ConsumableRead] = []
|
|
||||||
|
|
||||||
class Config:
|
|
||||||
orm_mode = True
|
|
||||||
|
|
||||||
|
|
||||||
# === Auditory ===
|
|
||||||
class AuditoryBase(BaseModel):
|
|
||||||
audnazvanie: str
|
|
||||||
|
|
||||||
class AuditoryCreate(AuditoryBase):
|
|
||||||
pass
|
|
||||||
|
|
||||||
class AuditoryRead(AuditoryBase):
|
|
||||||
id: int
|
|
||||||
|
|
||||||
class Config:
|
|
||||||
orm_mode = True
|
|
||||||
|
|
||||||
|
|
||||||
# === Zametka ===
|
|
||||||
class ZametkaBase(BaseModel):
|
|
||||||
txtzam: str
|
|
||||||
rmdt: Optional[datetime] = None
|
|
||||||
|
|
||||||
class ZametkaCreate(ZametkaBase):
|
|
||||||
pass
|
|
||||||
|
|
||||||
class ZametkaRead(ZametkaBase):
|
|
||||||
id: int
|
|
||||||
created_date: datetime
|
|
||||||
|
|
||||||
class Config:
|
|
||||||
orm_mode = True
|
|
||||||
BIN
migrations/__pycache__/env.cpython-39.pyc
Normal file
BIN
migrations/__pycache__/env.cpython-39.pyc
Normal file
Binary file not shown.
@@ -1,32 +0,0 @@
|
|||||||
"""empty message
|
|
||||||
|
|
||||||
Revision ID: 10da3140ab2e
|
|
||||||
Revises: 4eacd6dcd461
|
|
||||||
Create Date: 2024-04-05 01:25:48.931573
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '10da3140ab2e'
|
|
||||||
down_revision = '4eacd6dcd461'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
with op.batch_alter_table('oboruds', schema=None) as batch_op:
|
|
||||||
batch_op.add_column(sa.Column('kolichestvo', sa.Integer(), nullable=True))
|
|
||||||
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
with op.batch_alter_table('oboruds', schema=None) as batch_op:
|
|
||||||
batch_op.drop_column('kolichestvo')
|
|
||||||
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
"""empty message
|
|
||||||
|
|
||||||
Revision ID: 4eacd6dcd461
|
|
||||||
Revises: c208cbc25232
|
|
||||||
Create Date: 2024-04-03 23:25:42.271936
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '4eacd6dcd461'
|
|
||||||
down_revision = 'c208cbc25232'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
with op.batch_alter_table('oboruds', schema=None) as batch_op:
|
|
||||||
batch_op.add_column(sa.Column('numberved', sa.String(length=100), nullable=True))
|
|
||||||
batch_op.add_column(sa.Column('numberppasu', sa.String(length=100), nullable=True))
|
|
||||||
batch_op.add_column(sa.Column('balancenumber', sa.Integer(), nullable=True))
|
|
||||||
batch_op.alter_column('nazvanie',
|
|
||||||
existing_type=sa.TEXT(length=500),
|
|
||||||
type_=sa.String(length=500),
|
|
||||||
existing_nullable=True)
|
|
||||||
batch_op.alter_column('raspologenie',
|
|
||||||
existing_type=sa.TEXT(length=200),
|
|
||||||
type_=sa.String(length=200),
|
|
||||||
existing_nullable=True)
|
|
||||||
batch_op.drop_column('buhnumberpp')
|
|
||||||
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
with op.batch_alter_table('oboruds', schema=None) as batch_op:
|
|
||||||
batch_op.add_column(sa.Column('buhnumberpp', sa.VARCHAR(length=100), nullable=True))
|
|
||||||
batch_op.alter_column('raspologenie',
|
|
||||||
existing_type=sa.String(length=200),
|
|
||||||
type_=sa.TEXT(length=200),
|
|
||||||
existing_nullable=True)
|
|
||||||
batch_op.alter_column('nazvanie',
|
|
||||||
existing_type=sa.String(length=500),
|
|
||||||
type_=sa.TEXT(length=500),
|
|
||||||
existing_nullable=True)
|
|
||||||
batch_op.drop_column('balancenumber')
|
|
||||||
batch_op.drop_column('numberppasu')
|
|
||||||
batch_op.drop_column('numberved')
|
|
||||||
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
"""empty message
|
|
||||||
|
|
||||||
Revision ID: 6fc3d1adb061
|
|
||||||
Revises: be7c94c549e5
|
|
||||||
Create Date: 2024-04-02 16:32:23.180273
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '6fc3d1adb061'
|
|
||||||
down_revision = 'be7c94c549e5'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
with op.batch_alter_table('oboruds', schema=None) as batch_op:
|
|
||||||
batch_op.add_column(sa.Column('buhnumberpp', sa.String(length=100), nullable=True))
|
|
||||||
batch_op.add_column(sa.Column('kolichestvo', sa.Integer(), nullable=True))
|
|
||||||
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
with op.batch_alter_table('oboruds', schema=None) as batch_op:
|
|
||||||
batch_op.drop_column('kolichestvo')
|
|
||||||
batch_op.drop_column('buhnumberpp')
|
|
||||||
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
"""empty message
|
|
||||||
|
|
||||||
Revision ID: 8e5efc4de919
|
|
||||||
Revises: c208cbc25232
|
|
||||||
Create Date: 2024-04-03 22:36:46.208266
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = '8e5efc4de919'
|
|
||||||
down_revision = 'c208cbc25232'
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
with op.batch_alter_table('oboruds', schema=None) as batch_op:
|
|
||||||
batch_op.add_column(sa.Column('numberved', sa.String(length=100), nullable=True))
|
|
||||||
batch_op.add_column(sa.Column('numberppasu', sa.String(length=100), nullable=True))
|
|
||||||
batch_op.add_column(sa.Column('balancenumber', sa.Integer(), nullable=True))
|
|
||||||
batch_op.alter_column('nazvanie',
|
|
||||||
existing_type=sa.TEXT(length=500),
|
|
||||||
type_=sa.String(length=500),
|
|
||||||
existing_nullable=True)
|
|
||||||
batch_op.alter_column('raspologenie',
|
|
||||||
existing_type=sa.TEXT(length=200),
|
|
||||||
type_=sa.String(length=200),
|
|
||||||
existing_nullable=True)
|
|
||||||
batch_op.drop_column('buhnumberpp')
|
|
||||||
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
|
||||||
with op.batch_alter_table('oboruds', schema=None) as batch_op:
|
|
||||||
batch_op.add_column(sa.Column('buhnumberpp', sa.TEXT(length=100), nullable=True))
|
|
||||||
batch_op.alter_column('raspologenie',
|
|
||||||
existing_type=sa.String(length=200),
|
|
||||||
type_=sa.TEXT(length=200),
|
|
||||||
existing_nullable=True)
|
|
||||||
batch_op.alter_column('nazvanie',
|
|
||||||
existing_type=sa.String(length=500),
|
|
||||||
type_=sa.TEXT(length=500),
|
|
||||||
existing_nullable=True)
|
|
||||||
batch_op.drop_column('balancenumber')
|
|
||||||
batch_op.drop_column('numberppasu')
|
|
||||||
batch_op.drop_column('numberved')
|
|
||||||
|
|
||||||
# ### end Alembic commands ###
|
|
||||||
BIN
migrations/versions/__pycache__/256c3a3e91a2_.cpython-312.pyc
Normal file
BIN
migrations/versions/__pycache__/256c3a3e91a2_.cpython-312.pyc
Normal file
Binary file not shown.
BIN
migrations/versions/__pycache__/4f95d12a8352_.cpython-312.pyc
Normal file
BIN
migrations/versions/__pycache__/4f95d12a8352_.cpython-312.pyc
Normal file
Binary file not shown.
BIN
migrations/versions/__pycache__/50f85881169e_.cpython-312.pyc
Normal file
BIN
migrations/versions/__pycache__/50f85881169e_.cpython-312.pyc
Normal file
Binary file not shown.
BIN
migrations/versions/__pycache__/873defe09f22_.cpython-312.pyc
Normal file
BIN
migrations/versions/__pycache__/873defe09f22_.cpython-312.pyc
Normal file
Binary file not shown.
BIN
migrations/versions/__pycache__/885bdd7b5161_.cpython-312.pyc
Normal file
BIN
migrations/versions/__pycache__/885bdd7b5161_.cpython-312.pyc
Normal file
Binary file not shown.
BIN
migrations/versions/__pycache__/8e838956713f_.cpython-312.pyc
Normal file
BIN
migrations/versions/__pycache__/8e838956713f_.cpython-312.pyc
Normal file
Binary file not shown.
BIN
migrations/versions/__pycache__/b24baa0d98e6_.cpython-312.pyc
Normal file
BIN
migrations/versions/__pycache__/b24baa0d98e6_.cpython-312.pyc
Normal file
Binary file not shown.
BIN
migrations/versions/__pycache__/b2a61aef79e9_.cpython-312.pyc
Normal file
BIN
migrations/versions/__pycache__/b2a61aef79e9_.cpython-312.pyc
Normal file
Binary file not shown.
BIN
migrations/versions/__pycache__/be7c94c549e5_.cpython-312.pyc
Normal file
BIN
migrations/versions/__pycache__/be7c94c549e5_.cpython-312.pyc
Normal file
Binary file not shown.
BIN
migrations/versions/__pycache__/ec6bbcd361bd_.cpython-312.pyc
Normal file
BIN
migrations/versions/__pycache__/ec6bbcd361bd_.cpython-312.pyc
Normal file
Binary file not shown.
@@ -1,24 +0,0 @@
|
|||||||
"""empty message
|
|
||||||
|
|
||||||
Revision ID: c208cbc25232
|
|
||||||
Revises: 6fc3d1adb061, 885bdd7b5161
|
|
||||||
Create Date: 2024-04-03 22:11:15.008480
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = 'c208cbc25232'
|
|
||||||
down_revision = ('6fc3d1adb061', '885bdd7b5161')
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
pass
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
"""empty message
|
|
||||||
|
|
||||||
Revision ID: d4a8e4c9e65a
|
|
||||||
Revises: 10da3140ab2e, 8e5efc4de919
|
|
||||||
Create Date: 2024-05-06 08:27:39.088982
|
|
||||||
|
|
||||||
"""
|
|
||||||
from alembic import op
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = 'd4a8e4c9e65a'
|
|
||||||
down_revision = ('10da3140ab2e', '8e5efc4de919')
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
pass
|
|
||||||
85
models.py
85
models.py
@@ -1,76 +1,37 @@
|
|||||||
# backend/models.py
|
|
||||||
|
|
||||||
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime
|
from flask_sqlalchemy import SQLAlchemy
|
||||||
from sqlalchemy.orm import relationship, declarative_base
|
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
Base = declarative_base()
|
db = SQLAlchemy()
|
||||||
|
|
||||||
|
|
||||||
class Auditory(Base):
|
class Auditory(db.Model):
|
||||||
__tablename__ = 'auditories'
|
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
|
||||||
|
audnazvanie=db.Column(db.String)
|
||||||
|
oboruds = db.relationship('Oboruds')
|
||||||
|
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True)
|
|
||||||
audnazvanie = Column(String)
|
class Oboruds(db.Model):
|
||||||
|
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
|
||||||
|
invNumber=db.Column(db.Integer)
|
||||||
|
nazvanie=db.Column(db.String(500))
|
||||||
|
balancenumber = db.Column(db.String(30))
|
||||||
|
raspologenie = db.Column(db.String(200))
|
||||||
|
numberved = db.Column(db.String(100))
|
||||||
|
numberppasu = db.Column(db.String(100))
|
||||||
|
kolichestvo = db.Column(db.Integer)
|
||||||
|
|
||||||
oboruds = relationship("Oboruds", back_populates="auditory")
|
aud_id = db.Column(db.Integer, db.ForeignKey(Auditory.id))
|
||||||
|
|
||||||
|
|
||||||
class EquipmentType(Base):
|
|
||||||
__tablename__ = 'equipment_types'
|
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True)
|
|
||||||
name = Column(String, unique=True, nullable=False)
|
|
||||||
|
|
||||||
oboruds = relationship("Oboruds", back_populates="type")
|
|
||||||
|
|
||||||
|
|
||||||
class Oboruds(Base):
|
|
||||||
__tablename__ = 'oboruds'
|
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True)
|
class Zametki(db.Model):
|
||||||
invNumber = Column(Integer)
|
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
|
||||||
nazvanie = Column(String(500))
|
txtzam=db.Column(db.String(10000))
|
||||||
raspologenie = Column(String(200))
|
created_date = db.Column(db.DateTime, default=datetime.datetime.utcnow)
|
||||||
numberppasu = Column(String(100))
|
rmdt = db.Column(db.DateTime)
|
||||||
kolichestvo = Column(Integer)
|
|
||||||
|
|
||||||
aud_id = Column(Integer, ForeignKey("auditories.id"))
|
|
||||||
auditory = relationship("Auditory", back_populates="oboruds")
|
|
||||||
|
|
||||||
type_id = Column(Integer, ForeignKey("equipment_types.id"))
|
|
||||||
type = relationship("EquipmentType", back_populates="oboruds")
|
|
||||||
|
|
||||||
components = relationship("Component", back_populates="oborud")
|
|
||||||
consumables = relationship("Consumable", back_populates="oborud")
|
|
||||||
|
|
||||||
|
|
||||||
class Component(Base):
|
|
||||||
__tablename__ = 'components'
|
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True)
|
|
||||||
name = Column(String, nullable=False)
|
|
||||||
description = Column(String)
|
|
||||||
|
|
||||||
oborud_id = Column(Integer, ForeignKey("oboruds.id"))
|
|
||||||
oborud = relationship("Oboruds", back_populates="components")
|
|
||||||
|
|
||||||
|
|
||||||
class Consumable(Base):
|
|
||||||
__tablename__ = 'consumables'
|
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True)
|
|
||||||
name = Column(String, nullable=False)
|
|
||||||
description = Column(String)
|
|
||||||
|
|
||||||
oborud_id = Column(Integer, ForeignKey("oboruds.id"))
|
|
||||||
oborud = relationship("Oboruds", back_populates="consumables")
|
|
||||||
|
|
||||||
|
|
||||||
class Zametki(Base):
|
|
||||||
__tablename__ = 'zametki'
|
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True)
|
|
||||||
txtzam = Column(String(10000))
|
|
||||||
created_date = Column(DateTime, default=datetime.datetime.utcnow)
|
|
||||||
rmdt = Column(DateTime)
|
|
||||||
|
|||||||
BIN
requirements.txt
Normal file
BIN
requirements.txt
Normal file
Binary file not shown.
6
serve.py
6
serve.py
@@ -1,6 +0,0 @@
|
|||||||
from waitress import serve
|
|
||||||
from app import app
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
serve(app, port='3800')
|
|
||||||
@@ -8,7 +8,7 @@ body {
|
|||||||
min-width: 580px;
|
min-width: 580px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.row {
|
.row{
|
||||||
|
|
||||||
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@@ -24,7 +24,7 @@ body {
|
|||||||
header {
|
header {
|
||||||
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
background-color: #6A90B6;
|
background-color: #6A90B6;
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
}
|
}
|
||||||
@@ -35,7 +35,7 @@ a:hover {
|
|||||||
color: #041322;
|
color: #041322;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a{
|
||||||
|
|
||||||
color: #041322;
|
color: #041322;
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ button {
|
|||||||
|
|
||||||
.card {
|
.card {
|
||||||
|
|
||||||
/*width: 200px; */
|
width: 200px;
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
border-radius: 15px;
|
border-radius: 15px;
|
||||||
border-color: #E07D54;
|
border-color: #E07D54;
|
||||||
@@ -67,62 +67,51 @@ h5 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.hidden-column {
|
|
||||||
display: none;
|
.hidden-column{
|
||||||
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
nav {
|
nav{
|
||||||
|
|
||||||
width: 100%;
|
width:100%;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
table {
|
.table{
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
border-collapse: separate !important;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.table td {
|
.aud{
|
||||||
font-size: 14px;
|
|
||||||
padding: 0;
|
|
||||||
max-width: 10rem;
|
|
||||||
word-break: break-all;
|
|
||||||
border-collapse: separate !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.aud {
|
|
||||||
width: 110px;
|
width: 110px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.inv {
|
.inv{
|
||||||
width: 400px;
|
width: 400px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rasp {
|
.rasp{
|
||||||
width: 200px;
|
max-width: 200px;
|
||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
white-space: nowrap;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#modal_matcenn {
|
#modal_matcenn{
|
||||||
|
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.datatable {
|
.datatable{
|
||||||
background-color: whitesmoke;
|
background-color: whitesmoke;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.datatable th:nth-child(7) {
|
|
||||||
width: 200px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@media print {
|
@media print {
|
||||||
|
|
||||||
* {
|
*{
|
||||||
font-family: "Times New Roman", Times, serif;
|
font-family: "Times New Roman", Times, serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,7 +119,7 @@ table {
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -150,30 +139,29 @@ table {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.no-print {
|
.no-print {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
table.rs-table-bordered {
|
table.rs-table-bordered{
|
||||||
border: 1px solid #000000;
|
border:1px solid #000000;
|
||||||
margin-top: 20px;
|
margin-top:20px;
|
||||||
font-size: 14pt;
|
font-size: 14pt;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
table.rs-table-bordered > thead > tr > th{
|
||||||
table.rs-table-bordered > thead > tr > th {
|
border:1px solid #000000;
|
||||||
border: 1px solid #000000;
|
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
font-size: 14pt;
|
font-size: 14pt;
|
||||||
}
|
}
|
||||||
|
table.rs-table-bordered > tbody > tr > td{
|
||||||
table.rs-table-bordered > tbody > tr > td {
|
border:1px solid #000000;
|
||||||
border: 1px solid #000000;
|
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
font-size: 14pt;
|
font-size: 14pt;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,282 +1,35 @@
|
|||||||
function clearTable() {
|
function getAllData(){
|
||||||
var table = document.getElementById("alldatatable");
|
|
||||||
var rowCount = table.rows.length;
|
|
||||||
|
|
||||||
// Iterate through each row and remove it
|
|
||||||
for (var i = rowCount - 1; i > 0; i--) {
|
|
||||||
table.deleteRow(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function getAllData() {
|
|
||||||
|
|
||||||
clearTable();
|
|
||||||
|
|
||||||
let tableBody = document.getElementById('alldatatable').getElementsByTagName("tbody")[0];
|
|
||||||
i = 0;
|
|
||||||
$.getJSON("/getall", function (data) {
|
|
||||||
$.each(data, function (index, item) {
|
|
||||||
let newRow = tableBody.insertRow(tableBody.rows.length);
|
|
||||||
let cell1 = newRow.insertCell(0);
|
|
||||||
let cell2 = newRow.insertCell(1);
|
|
||||||
let cell3 = newRow.insertCell(2);
|
|
||||||
let cell4 = newRow.insertCell(3);
|
|
||||||
let cell5 = newRow.insertCell(4);
|
|
||||||
let cell6 = newRow.insertCell(5);
|
|
||||||
let cell7 = newRow.insertCell(6);
|
|
||||||
let cell8 = newRow.insertCell(7);
|
|
||||||
|
|
||||||
i++;
|
|
||||||
|
|
||||||
cell1.innerText = i;
|
|
||||||
cell2.innerText = item.numberved;
|
|
||||||
cell3.innerText = item.invNumber;
|
|
||||||
cell4.innerText = item.nazvanie;
|
|
||||||
cell5.innerText = item.kolichestvo;
|
|
||||||
cell6.innerText = item.balancenumber;
|
|
||||||
cell7.innerText = item.aud;
|
|
||||||
cell8.innerText = item.raspologenie;
|
|
||||||
|
|
||||||
|
|
||||||
$(newRow).data('itemData', i);
|
|
||||||
|
|
||||||
|
|
||||||
$(newRow).on("click", function () {
|
|
||||||
|
|
||||||
let vednumbertxt = newRow.cells[1].innerText;
|
|
||||||
let invnomertxt = newRow.cells[2].innerText;
|
|
||||||
let nazvanietxt = newRow.cells[3].innerText;
|
|
||||||
let kolvotxt = newRow.cells[4].innerText;
|
|
||||||
let schettxt = newRow.cells[5].innerText;
|
|
||||||
let raspologtxt = newRow.cells[7].innerText;
|
|
||||||
|
|
||||||
|
|
||||||
$('#getmodal').modal('show');
|
|
||||||
|
|
||||||
|
|
||||||
let vedomost = document.getElementById('modal_vednumber')
|
|
||||||
let invnom = document.getElementById('modal_invnom')
|
|
||||||
let matcen = document.getElementById('modal_matcenn')
|
|
||||||
let kolvo = document.getElementById('modal_kolvo')
|
|
||||||
let balancenumber = document.getElementById('modal_balance')
|
|
||||||
let rasp = document.getElementById('modal_rapolog')
|
|
||||||
|
|
||||||
invnom.innerText = invnomertxt
|
|
||||||
matcen.innerText = nazvanietxt.substring(0, 20)
|
|
||||||
|
|
||||||
if (vednumbertxt.length > 0) {
|
|
||||||
vedomost.value = vednumbertxt;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (kolvotxt.length > 0) {
|
|
||||||
kolvo.value = kolvotxt;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (schettxt.length > 0) {
|
|
||||||
balancenumber.value = schettxt;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (raspologtxt.length > 0) {
|
|
||||||
rasp.value = raspologtxt;
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
$(document).ready(function () {
|
|
||||||
|
|
||||||
getAllData();
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
$('#modalclose').click(function () {
|
|
||||||
|
|
||||||
|
|
||||||
let vednumber = document.getElementById('modal_vednumber')
|
|
||||||
let kolvo = document.getElementById('modal_kolvo')
|
|
||||||
let balancenumber = document.getElementById('modal_balance')
|
|
||||||
let matcen = document.getElementById('modal_matcenn')
|
|
||||||
let rasp = document.getElementById('modal_rapolog')
|
|
||||||
|
|
||||||
|
|
||||||
vednumber.value = '';
|
|
||||||
kolvo.value = '';
|
|
||||||
balancenumber.value = '';
|
|
||||||
matcen.value = '';
|
|
||||||
rasp.value = '';
|
|
||||||
$('#getmodal').modal('hide')
|
|
||||||
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
$('#modalsavetodb').click(function () {
|
|
||||||
|
|
||||||
let invnom = document.getElementById('modal_invnom')
|
|
||||||
let vednumber = document.getElementById('modal_vednumber')
|
|
||||||
let kolvo = document.getElementById('modal_kolvo')
|
|
||||||
let balancenumber = document.getElementById('modal_balance')
|
|
||||||
let matcen = document.getElementById('modal_matcenn')
|
|
||||||
let rasp = document.getElementById('modal_rapolog')
|
|
||||||
let nazv = document.getElementById('modal_nazvanie')
|
|
||||||
|
|
||||||
|
|
||||||
let changeddata = new Array()
|
|
||||||
|
|
||||||
changeddata[0] = invnom.text;
|
|
||||||
changeddata[1] = vednumber.value;
|
|
||||||
changeddata[2] = kolvo.value;
|
|
||||||
changeddata[3] = balancenumber.value;
|
|
||||||
changeddata[4] = rasp.value;
|
|
||||||
|
|
||||||
|
|
||||||
let sendData = changeddata.join(',')
|
|
||||||
console.log(sendData)
|
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
|
||||||
url: "/addraspved",
|
url: "/getall",
|
||||||
type: "POST",
|
type: "get",
|
||||||
contentType: "application/json;charset=utf-8",
|
contentType: 'application/json',
|
||||||
dataType: "json",
|
dataType: 'json',
|
||||||
data: sendData,
|
|
||||||
|
|
||||||
success: function () {
|
|
||||||
$('#getmodal').modal('hide')
|
|
||||||
|
|
||||||
vednumber.value = '';
|
|
||||||
kolvo.value = '';
|
|
||||||
balancenumber.value = '';
|
|
||||||
matcen.value = '';
|
|
||||||
rasp.value = '';
|
|
||||||
changeddata = [];
|
|
||||||
window.location.reload();
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
$('#addoborud').click(function () {
|
|
||||||
|
|
||||||
$('#addmodal').modal('show');
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
$('#modal2savetodb').click(function () {
|
|
||||||
|
|
||||||
let invnomer = document.getElementById('modal2_invnom')
|
|
||||||
let vednumber = document.getElementById('modal2_vednumber')
|
|
||||||
let kolvo = document.getElementById('modal2_kolvo')
|
|
||||||
let balancenumber = document.getElementById('modal2_balance')
|
|
||||||
let matcen = document.getElementById('modal2_matcenn')
|
|
||||||
let rasp = document.getElementById('modal2_rapolog')
|
|
||||||
let nazv = document.getElementById('modal2_nazvanie')
|
|
||||||
|
|
||||||
|
|
||||||
let changeddata = new Array()
|
|
||||||
|
|
||||||
changeddata[0] = invnomer.value;
|
|
||||||
changeddata[1] = vednumber.value;
|
|
||||||
changeddata[2] = kolvo.value;
|
|
||||||
changeddata[3] = balancenumber.value;
|
|
||||||
changeddata[4] = rasp.value;
|
|
||||||
changeddata[5] = nazv.value;
|
|
||||||
|
|
||||||
|
|
||||||
let sendData = changeddata.join(',')
|
|
||||||
console.log(sendData)
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
|
|
||||||
url: "/addoborudasu",
|
|
||||||
type: "POST",
|
|
||||||
contentType: "application/json;charset=utf-8",
|
|
||||||
dataType: "json",
|
|
||||||
data: sendData,
|
|
||||||
|
|
||||||
success: function () {
|
|
||||||
vednumber.value = '';
|
|
||||||
invnomer.value = '';
|
|
||||||
nazvanie.value = '';
|
|
||||||
kolvo.value = '';
|
|
||||||
balancenumber.value = '';
|
|
||||||
matcen.value = '';
|
|
||||||
rasp.value = '';
|
|
||||||
|
|
||||||
$('#addmodal').modal('hide')
|
|
||||||
window.location.reload()
|
|
||||||
|
|
||||||
|
success: function(response){
|
||||||
|
console.log(response)
|
||||||
|
let data = response;
|
||||||
|
$('#datatable tbody').empty();
|
||||||
|
$.each(response, function(index, item) {
|
||||||
|
$('#datatable tbody').append(
|
||||||
|
'<tr>' +
|
||||||
|
'<td>' + item.invNumber + '</td>' +
|
||||||
|
'<td>' + item.nazvanie + '</td>' +
|
||||||
|
'<td>' + item.raspologenie + '</td>' +
|
||||||
|
'<td>' + item.numberved + '</td>' +
|
||||||
|
'<td>' + item.buhnumberpp + '</td>' +
|
||||||
|
'<td>' + item.kolichestvo + '</td>' +
|
||||||
|
'<td>' + item.balancenumber + '</td>' +
|
||||||
|
'</tr>'
|
||||||
|
);
|
||||||
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).ready(function(){
|
||||||
|
|
||||||
})
|
getAllData()
|
||||||
|
})
|
||||||
$('#modal2close').click(function () {
|
|
||||||
|
|
||||||
|
|
||||||
let vednumber = document.getElementById('modal2_vednumber')
|
|
||||||
let invnomer = document.getElementById('modal2_invnom')
|
|
||||||
let nazvanie = document.getElementById('modal2_nazvanie')
|
|
||||||
let kolvo = document.getElementById('modal2_kolvo')
|
|
||||||
let balancenumber = document.getElementById('modal2_balance')
|
|
||||||
let matcen = document.getElementById('modal2_matcenn')
|
|
||||||
let rasp = document.getElementById('modal2_rapolog')
|
|
||||||
|
|
||||||
|
|
||||||
vednumber.value = '';
|
|
||||||
invnomer.value = '';
|
|
||||||
nazvanie.value = '';
|
|
||||||
kolvo.value = '';
|
|
||||||
balancenumber.value = '';
|
|
||||||
matcen.value = '';
|
|
||||||
rasp.value = '';
|
|
||||||
|
|
||||||
$('#addmodal').modal('hide')
|
|
||||||
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
$('#modal2').on('hidden.bs.modal', function () {
|
|
||||||
location.reload();
|
|
||||||
})
|
|
||||||
|
|
||||||
$(document).ready(function () {
|
|
||||||
// Слушаем событие клика по заголовкам таблицы
|
|
||||||
$('#alldatatable thead th').on('click', function () {
|
|
||||||
var columnIndex = $(this).index(); // Индекс колонки
|
|
||||||
var sortColumn = $(this).text().toLowerCase(); // Текст заголовка колонки
|
|
||||||
|
|
||||||
// Сортируем таблицу по выбранной колонке
|
|
||||||
$('#alldatatable tbody tr').sort(function (a, b) {
|
|
||||||
var valA;
|
|
||||||
var valB;
|
|
||||||
|
|
||||||
if (isNaN(parseFloat($(a).find('td:eq(' + columnIndex + ')').text()))) {
|
|
||||||
// если это текстовая колонка, то сортируем по алфавиту
|
|
||||||
valA = $(a).find('td:eq(' + columnIndex + ')').text().toLowerCase();
|
|
||||||
valB = $(b).find('td:eq(' + columnIndex + ')').text().toLowerCase();
|
|
||||||
} else {
|
|
||||||
// если это числовая колонка, то сортируем по числовому значению
|
|
||||||
valA = parseFloat($(a).find('td:eq(' + columnIndex + ')').text());
|
|
||||||
valB = parseFloat($(b).find('td:eq(' + columnIndex + ')').text());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (valA < valB) return -1;
|
|
||||||
if (valA > valB) return 1;
|
|
||||||
return 0;
|
|
||||||
}).appendTo('#alldatatable tbody');
|
|
||||||
|
|
||||||
// Обновляем классы для активной колонки
|
|
||||||
$('#alldatatable thead th').removeClass('active');
|
|
||||||
$(this).addClass('active');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -16,9 +16,9 @@ function getData(){
|
|||||||
|
|
||||||
var data = response;
|
var data = response;
|
||||||
const table = document.getElementById('datatable')
|
const table = document.getElementById('datatable')
|
||||||
|
table.innerHTML = ''
|
||||||
var headTable = '<tr> <td >Номер в Инв. вед</td> <td id="invnomer">Инв. номер</td><td>Название</td><td class="no-print aud">Аудитория</td> <td >Расположение</td> <td id="proverka"class="hidden-column"> Проверено</td> </tr>'
|
var headTable = '<tr> <td >Номер в Инв. вед</td> <td id="invnomer">Инв. номер</td><td>Название</td><td class="no-print aud">Аудитория</td> <td >Расположение</td> <td id="proverka"class="hidden-column"> Проверено</td> </tr>'
|
||||||
|
table.innerHTML += headTable
|
||||||
var tr =""
|
var tr =""
|
||||||
|
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ function getData(){
|
|||||||
|
|
||||||
tr += '</tr>'
|
tr += '</tr>'
|
||||||
});
|
});
|
||||||
table.innerHTML = headTable + tr
|
table.innerHTML += tr
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,142 +2,31 @@
|
|||||||
|
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<!-- Modal -->
|
|
||||||
<div class="modal fade" id="getmodal" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
|
|
||||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-body" id="textarea">
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<a id="modal_invnom"> </a><a id="modal_matcenn"></a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
№ из ведомости
|
|
||||||
<input type="text" class="form-control" id ='modal_vednumber' placeholder="Номер из ведомости">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
Количество
|
|
||||||
<input type="text" class="form-control" id ='modal_kolvo' placeholder="Количество">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
Балансовый счёт
|
|
||||||
<input type="text" class="form-control" id ='modal_balance' placeholder="Балансовый счёт">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
Расположение
|
|
||||||
<input type="text" class="form-control" id ='modal_rapolog' placeholder="Введите расположение">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="button" class="btn btn-secondary" data-dismiss="modal" id="modalclose">Закрыть</button>
|
|
||||||
<button type="button" class="btn btn-primary" id="modalsavetodb" >Сохранить изменения</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Modal2 -->
|
|
||||||
<div class="modal fade" id="addmodal" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
|
|
||||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-body" id="textarea">
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<a id="modal_invnom"> </a><a id="modal2_matcenn"></a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
№ из ведомости
|
|
||||||
<input type="text" class="form-control" id ='modal2_vednumber' placeholder="Номер из ведомости">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
Инвентарный номер
|
|
||||||
<input type="text" class="form-control" id ='modal2_invnom' placeholder="Инвентарный номер">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
Название
|
|
||||||
<input type="text" class="form-control" id ='modal2_nazvanie' placeholder="Название">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
Количество
|
|
||||||
<input type="text" class="form-control" id ='modal2_kolvo' placeholder="Количество">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
Балансовый счёт
|
|
||||||
<input type="text" class="form-control" id ='modal2_balance' placeholder="Балансовый счёт">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
Расположение
|
|
||||||
<input type="text" class="form-control" id ='modal2_rapolog' placeholder="Введите расположение">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="button" class="btn btn-secondary" data-dismiss="modal" id="modal2close">Закрыть</button>
|
|
||||||
<button type="button" class="btn btn-primary" id="modal2savetodb" >Сохранить изменения</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
|
|
||||||
<h3 id ='123' class=" no-print"> Все мат. ценности </h3>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row col-12">
|
<div class="row col-12">
|
||||||
<button class="button" id="printallbutton"> Печать </button>
|
<div class=" card col-11">
|
||||||
</div>
|
<h3 class=" no-print"> Все мат. ценности </h3>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="row col-12">
|
||||||
|
<button class="button" id="printallbutton"> Печать </button>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="row col-12">
|
|
||||||
<button class="button" id="addoborud"> Добавить </button>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="card col-md-11 table-responsive">
|
<div class="card col-md-11" >
|
||||||
<table id="alldatatable" class="alldatable table pagebreak" >
|
<table id="datable" class="datable table pagebreak" >
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="col">№ <br>п/п <br>АСУ</th>
|
<th scope="col">№ п/п</th>
|
||||||
<th scope="col">№ п/п <br>вед</th>
|
<th scope="col">№ п/п вед</th>
|
||||||
<th scope="col">Инв. номер</th>
|
<th scope="col">Инв. номер</th>
|
||||||
<th scope="col">Название</th>
|
<th scope="col">Название</th>
|
||||||
<th scope="col">Кол-во</th>
|
<th scope="col">Кол-во</th>
|
||||||
<th scope="col">Счёт</th>
|
<th scope="col">Счёт</th>
|
||||||
<th scope="col">Ауд - я</th>
|
<th scope="col">Аудитория</th>
|
||||||
<th scope="col">Расположение</th>
|
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tr>
|
|
||||||
|
|
||||||
|
|
||||||
</tr>
|
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
147
templates/all_OLD.html
Normal file
147
templates/all_OLD.html
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
{% extends 'base.html' %}
|
||||||
|
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<!-- Modal -->
|
||||||
|
<div class="modal fade" id="getmodal" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-body" id="textarea">
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<a id="modal_invnom"> </a><a id="modal_matcenn"></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
№ из ведомости
|
||||||
|
<input type="text" class="form-control" id ='modal_vednumber' placeholder="Номер из ведомости">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
Количество
|
||||||
|
<input type="text" class="form-control" id ='modal_kolvo' placeholder="Количество">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
Балансовый счёт
|
||||||
|
<input type="text" class="form-control" id ='modal_balance' placeholder="Балансовый счёт">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
Расположение
|
||||||
|
<input type="text" class="form-control" id ='modal_rapolog' placeholder="Введите расположение">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal" id="modalclose">Закрыть</button>
|
||||||
|
<button type="button" class="btn btn-primary" id="modalsavetodb" >Сохранить изменения</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Modal2 -->
|
||||||
|
<div class="modal fade" id="addmodal" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-body" id="textarea">
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<a id="modal_invnom"> </a><a id="modal2_matcenn"></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
№ из ведомости
|
||||||
|
<input type="text" class="form-control" id ='modal2_vednumber' placeholder="Номер из ведомости">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
Инвентарный номер
|
||||||
|
<input type="text" class="form-control" id ='modal2_invnom' placeholder="Инвентарный номер">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
Название
|
||||||
|
<input type="text" class="form-control" id ='modal2_nazvanie' placeholder="Название">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
Количество
|
||||||
|
<input type="text" class="form-control" id ='modal2_kolvo' placeholder="Количество">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
Балансовый счёт
|
||||||
|
<input type="text" class="form-control" id ='modal2_balance' placeholder="Балансовый счёт">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
Расположение
|
||||||
|
<input type="text" class="form-control" id ='modal2_rapolog' placeholder="Введите расположение">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal" id="modal2close">Закрыть</button>
|
||||||
|
<button type="button" class="btn btn-primary" id="modal2savetodb" >Сохранить изменения</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<h3 id ='123' class=" no-print"> Все мат. ценности </h3>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row col-12">
|
||||||
|
<button class="button" id="printallbutton"> Печать </button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row col-12">
|
||||||
|
<button class="button" id="addoborud"> Добавить </button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="card col-md-11 table-responsive">
|
||||||
|
<table id="alldatatable" class="alldatable table pagebreak" >
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th scope="col">№ <br>п/п <br>АСУ</th>
|
||||||
|
<th scope="col">№ п/п <br>вед</th>
|
||||||
|
<th scope="col">Инв. номер</th>
|
||||||
|
<th scope="col">Название</th>
|
||||||
|
<th scope="col">Кол-во</th>
|
||||||
|
<th scope="col">Счёт</th>
|
||||||
|
<th scope="col">Ауд - я</th>
|
||||||
|
<th scope="col">Расположение</th>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tr>
|
||||||
|
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script src="{{url_for('static', filename='js/allmatc.js') }}"></script>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
@@ -10,4 +10,3 @@
|
|||||||
<script src="{{url_for('static', filename='js/searchonaud.js') }}"></script>
|
<script src="{{url_for('static', filename='js/searchonaud.js') }}"></script>
|
||||||
<script src="{{url_for('static', filename='js/print.js') }}"></script>
|
<script src="{{url_for('static', filename='js/print.js') }}"></script>
|
||||||
<script src="{{url_for('static', filename='js/modal.js') }}"></script>
|
<script src="{{url_for('static', filename='js/modal.js') }}"></script>
|
||||||
<script src="{{url_for('static', filename='js/allmatc.js') }}"></script>
|
|
||||||
|
|||||||
@@ -1,62 +0,0 @@
|
|||||||
{% extends 'base.html' %}
|
|
||||||
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="card col-4" >
|
|
||||||
<div class="card-body">
|
|
||||||
|
|
||||||
|
|
||||||
<form class="form-horizontal">
|
|
||||||
<fieldset>
|
|
||||||
|
|
||||||
<!-- Form Name -->
|
|
||||||
<legend>Авторизация</legend>
|
|
||||||
|
|
||||||
<!-- Text input-->
|
|
||||||
<div class="form-group">
|
|
||||||
<label control-label" for="logininput">Логин</label>
|
|
||||||
<div>
|
|
||||||
<input id="logininput" name="logininput" type="text" placeholder="Введите логин" class="form-control input-md">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Password input-->
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="control-label" for="passwordinput">Пароль</label>
|
|
||||||
<input id="passwordinput" name="passwordinput" type="password" placeholder="Введите пароль" class="form-control input-md">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
|
|
||||||
<button id="btn_login" name="btn_login" class="btn btn-primary">Войти</button>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</fieldset>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
@@ -3,98 +3,72 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
|
|
||||||
<!-- Modal -->
|
<!-- Modal -->
|
||||||
<div class="modal fade" id="getmodal" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle"
|
<div class="modal fade" id="getmodal" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
|
||||||
aria-hidden="true">
|
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
<div class="modal-content">
|
||||||
<div class="modal-content">
|
<div class="modal-body" id="textarea">
|
||||||
<div class="modal-body" id="textarea">
|
|
||||||
|
<input type="text" class="form-control" id ='vednumber' placeholder="Номер из веломости">
|
||||||
<input type="text" class="form-control" id='vednumber' placeholder="Номер из веломости">
|
<input type="text" class="form-control" id ='rapolog' placeholder="Введите расположение">
|
||||||
<input type="text" class="form-control" id='rapolog' placeholder="Введите расположение">
|
|
||||||
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<a id="modal_invnom"> </a><a id="modal_matcenn"></a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<form method="POST" action="/addraspved">
|
|
||||||
<div class="row">
|
|
||||||
№ из ведомости
|
|
||||||
<input type="text" class="form-control" name="modal_vednumber" id='modal_vednumber'
|
|
||||||
placeholder="Номер из ведомости">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
Расположение
|
|
||||||
<input type="text" class="form-control" name="modal_rapolog" id='modal_rapolog'
|
|
||||||
placeholder="Введите расположение">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</form>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="button" class="btn btn-secondary" data-dismiss="modal" id="modalclose">Закрыть
|
|
||||||
</button>
|
|
||||||
<button type="button" class="btn btn-primary" id="modalsavetodb">Сохранить изменения</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal" id="modalclose">Закрыть</button>
|
||||||
|
<button type="button" class="btn btn-primary" id="modalsavetodb" >Сохранить изменения</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="row no-print">
|
<div class="row no-print">
|
||||||
<div class="card col-md-10 col-10">
|
<div class="card col-md-10 col-10">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
|
|
||||||
|
|
||||||
|
<select name="auditory" id="auditory">
|
||||||
|
|
||||||
<select name="auditory" id="auditory">
|
{% for item in aud: %}
|
||||||
|
<option name="optauditory" value="{{item.id}}">{{ item.audnazvanie }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
|
||||||
{% for item in aud: %}
|
<button id="searchbutton"> Найти </button>
|
||||||
<option name="optauditory" value="{{ item.id }}">{{ item.audnazvanie }}</option>
|
<button id="printbutton"> Печать </button>
|
||||||
{% endfor %}
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<button id="searchbutton"> Найти</button>
|
|
||||||
<button id="printbutton"> Печать</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="card col-md-10 col-10">
|
<div class="card col-md-10 col-10">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h3 class="card-title no-print"> Поаудиторно </h3>
|
<h3 class="card-title no-print"> Поаудиторно </h3>
|
||||||
|
|
||||||
|
<table class="table" id="datatable" col-md-10>
|
||||||
|
|
||||||
|
<td >Номер в Инв. вед</td>
|
||||||
|
<td >Инв. номер</td>
|
||||||
|
<td >Название</td>
|
||||||
|
<td class="no-print">Аудитория</td>
|
||||||
|
<td >Расположение</td>
|
||||||
|
|
||||||
<table class="table " id="datatable">
|
|
||||||
|
{% for item in res: %}
|
||||||
<th>Номер в Инв. вед</th>
|
|
||||||
<th>Инв. номер</th>
|
<td> <input type="hidden" name="invnomer" value="{{ item[0] }}"> {{ item[0] }} </td>
|
||||||
<th>Название</th>
|
<td> {{ item[1] }} </td>
|
||||||
<th class="no-print">Аудитория</th>
|
<td class="no-print"> {{item[2]}} </td>
|
||||||
<th>Расположение</th>
|
<td id="proverka"> Проверено </td>
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
{% for item in res %}
|
</table>
|
||||||
|
</div>
|
||||||
<td><input type="hidden" name="invnomer" value="{{ item[0] }}"> {{ item[0] }} </td>
|
|
||||||
<td> {{ item[1] }} </td>
|
|
||||||
<td class="no-print"> {{ item[2] }} </td>
|
|
||||||
<td id="proverka"> Проверено</td>
|
|
||||||
|
|
||||||
{% endfor %}
|
|
||||||
</table>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{% endblock %}
|
{%endblock%}
|
||||||
Reference in New Issue
Block a user