Save file and upload file functions in vouchers de duplicated
This commit is contained in:
parent
d49be23056
commit
9a1844100f
@ -1,5 +1,6 @@
|
||||
import uuid
|
||||
from io import BytesIO
|
||||
from typing import List
|
||||
|
||||
from fastapi import APIRouter, Depends, Security
|
||||
from fastapi.responses import StreamingResponse
|
||||
@ -9,6 +10,7 @@ from ..core.security import get_user
|
||||
from ..models.voucher import DbImage
|
||||
from ..db.session import SessionLocal
|
||||
from ..schemas.auth import UserToken
|
||||
import brewman.schemas.voucher as output
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@ -34,3 +36,17 @@ def db_image(
|
||||
else:
|
||||
item = BytesIO(item.image)
|
||||
return StreamingResponse(item, media_type="image/jpeg")
|
||||
|
||||
|
||||
def save_files(voucher_id: uuid.UUID, i: List[bytes], t: List[bytes], db: Session):
|
||||
for index, value in enumerate(i):
|
||||
db.add(DbImage(voucher_id, "voucher", i[index], t[index]))
|
||||
|
||||
|
||||
def update_files(voucher_id: uuid.UUID, data: List[output.ImageUpload], i: List[bytes], t: List[bytes], db: Session):
|
||||
old = [f.id_ for f in data if f.id_]
|
||||
images = db.query(DbImage).filter(DbImage.resource_id == voucher_id).all()
|
||||
for image in [i for i in images if i.id not in old]:
|
||||
db.delete(image)
|
||||
for index, value in enumerate(i):
|
||||
db.add(DbImage(voucher_id, "voucher", i[index], t[index]))
|
||||
|
@ -9,13 +9,13 @@ from fastapi import (
|
||||
status,
|
||||
Depends,
|
||||
Security,
|
||||
UploadFile,
|
||||
File,
|
||||
Request,
|
||||
)
|
||||
from sqlalchemy.exc import SQLAlchemyError
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from .db_image import save_files, update_files
|
||||
from .voucher import (
|
||||
voucher_info,
|
||||
check_voucher_lock_info,
|
||||
@ -53,13 +53,11 @@ def save_route(
|
||||
request: Request,
|
||||
data: schema_in.EmployeeBenefitIn = Depends(schema_in.EmployeeBenefitIn.load_form),
|
||||
db: Session = Depends(get_db),
|
||||
i: List[UploadFile] = File(None),
|
||||
t: List[UploadFile] = File(None),
|
||||
i: List[bytes] = File(None),
|
||||
t: List[bytes] = File(None),
|
||||
user: UserToken = Security(get_user, scopes=["employee-benefit"]),
|
||||
):
|
||||
try:
|
||||
i = i or []
|
||||
t = t or []
|
||||
dt = get_last_day(data.date_)
|
||||
days_in_month = dt.day
|
||||
item: Voucher = save(data, dt, user, db)
|
||||
@ -67,7 +65,7 @@ def save_route(
|
||||
item, data.employee_benefits, days_in_month, db
|
||||
)
|
||||
save_journals(item, exp, total, db)
|
||||
save_files(i + t, db)
|
||||
save_files(item.id, i, t, db)
|
||||
db.commit()
|
||||
set_date(data.date_.strftime("%d-%b-%Y"), request.session)
|
||||
info = voucher_info(item, db)
|
||||
@ -170,25 +168,17 @@ def save_journals(voucher: Voucher, exp: int, total: int, db: Session):
|
||||
voucher.journals.append(journal)
|
||||
|
||||
|
||||
def save_files(files: List[UploadFile], db: Session):
|
||||
# for key, value in files.items():
|
||||
# db.add(DbImage(voucher.id, "voucher", value["f"], value["t"]))
|
||||
pass
|
||||
|
||||
|
||||
@router.put("/{id_}", response_model=output.Voucher)
|
||||
def update_route(
|
||||
id_: uuid.UUID,
|
||||
request: Request,
|
||||
data: schema_in.EmployeeBenefitIn = Depends(schema_in.EmployeeBenefitIn.load_form),
|
||||
db: Session = Depends(get_db),
|
||||
i: List[UploadFile] = File(None),
|
||||
t: List[UploadFile] = File(None),
|
||||
i: List[bytes] = File(None),
|
||||
t: List[bytes] = File(None),
|
||||
user: UserToken = Security(get_user, scopes=["employee-benefit"]),
|
||||
):
|
||||
try:
|
||||
i = i or []
|
||||
t = t or []
|
||||
dt = get_last_day(data.date_)
|
||||
days_in_month = dt.day
|
||||
item: Voucher = update(id_, data, user, db)
|
||||
@ -199,7 +189,7 @@ def update_route(
|
||||
)
|
||||
update_journals(item, exp, total)
|
||||
# journals_valid(voucher)
|
||||
update_files(data, i + t, db)
|
||||
update_files(item.id, data.files, i, t, db)
|
||||
db.commit()
|
||||
set_date(data.date_.strftime("%d-%b-%Y"), request.session)
|
||||
return voucher_info(item, db)
|
||||
@ -267,18 +257,6 @@ def update_journals(voucher: Voucher, exp: int, total: int):
|
||||
journal.amount = total
|
||||
|
||||
|
||||
def update_files(data: schema_in.VoucherIn, files: List[UploadFile], db: Session):
|
||||
pass
|
||||
# old_files = [
|
||||
# uuid.UUID(f["id"]) for f in json["files"] if "id" in f and f["id"] is not None
|
||||
# ]
|
||||
# images = db.query(DbImage).filter(DbImage.resource_id == voucher.id).all()
|
||||
# for image in [i for i in images if i.id not in old_files]:
|
||||
# db.delete(image)
|
||||
# for key, value in files.items():
|
||||
# db.add(DbImage(voucher.id, "voucher", value["f"], value["t"]))
|
||||
|
||||
|
||||
@router.get("/{id_}", response_model=output.Voucher)
|
||||
def get_id(
|
||||
id_: uuid.UUID,
|
||||
|
@ -10,13 +10,13 @@ from fastapi import (
|
||||
status,
|
||||
Depends,
|
||||
Security,
|
||||
UploadFile,
|
||||
File,
|
||||
Request,
|
||||
)
|
||||
from sqlalchemy.exc import SQLAlchemyError
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from .db_image import save_files, update_files
|
||||
from .voucher import (
|
||||
voucher_info,
|
||||
check_voucher_lock_info,
|
||||
@ -49,17 +49,15 @@ def save_route(
|
||||
request: Request,
|
||||
data: schema_in.IssueIn = Depends(schema_in.IssueIn.load_form),
|
||||
db: Session = Depends(get_db),
|
||||
i: List[UploadFile] = File(None),
|
||||
t: List[UploadFile] = File(None),
|
||||
i: List[bytes] = File(None),
|
||||
t: List[bytes] = File(None),
|
||||
user: UserToken = Security(get_user, scopes=["issue"]),
|
||||
):
|
||||
try:
|
||||
i = i or []
|
||||
t = t or []
|
||||
item, batch_consumed = save(data, user, db)
|
||||
amount = save_inventories(item, data.inventories, batch_consumed, db)
|
||||
save_journals(item, data.source, data.destination, amount, db)
|
||||
save_files(i + t, db)
|
||||
save_files(item.id, i, t, db)
|
||||
db.commit()
|
||||
set_date(data.date_.strftime("%d-%b-%Y"), request.session)
|
||||
info = voucher_info(item, db)
|
||||
@ -169,29 +167,21 @@ def save_journals(
|
||||
db.add(d)
|
||||
|
||||
|
||||
def save_files(files: List[UploadFile], db: Session):
|
||||
# for key, value in files.items():
|
||||
# db.add(DbImage(voucher.id, "voucher", value["f"], value["t"]))
|
||||
pass
|
||||
|
||||
|
||||
@router.put("/{id_}", response_model=output.Voucher)
|
||||
def update_route(
|
||||
id_: uuid.UUID,
|
||||
request: Request,
|
||||
data: schema_in.IssueIn = Depends(schema_in.IssueIn.load_form),
|
||||
db: Session = Depends(get_db),
|
||||
i: List[UploadFile] = File(None),
|
||||
t: List[UploadFile] = File(None),
|
||||
i: List[bytes] = File(None),
|
||||
t: List[bytes] = File(None),
|
||||
user: UserToken = Security(get_user, scopes=["issue"]),
|
||||
):
|
||||
try:
|
||||
i = i or []
|
||||
t = t or []
|
||||
item, batch_consumed = update(id_, data, user, db)
|
||||
amount = update_inventories(item, data.inventories, batch_consumed, db)
|
||||
update_journals(item, data.source, data.destination, amount)
|
||||
update_files(data, i + t, db)
|
||||
update_files(item.id, data.files, i, t, db)
|
||||
db.commit()
|
||||
set_date(data.date_.strftime("%d-%b-%Y"), request.session)
|
||||
# item: Voucher = db.query(Voucher).filter(Voucher.id == item.id).first()
|
||||
@ -333,18 +323,6 @@ def update_journals(
|
||||
item.amount = amount
|
||||
|
||||
|
||||
def update_files(data: schema_in.IssueIn, files: List[UploadFile], db: Session):
|
||||
pass
|
||||
# old_files = [
|
||||
# uuid.UUID(f["id"]) for f in json["files"] if "id" in f and f["id"] is not None
|
||||
# ]
|
||||
# images = db.query(DbImage).filter(DbImage.resource_id == voucher.id).all()
|
||||
# for image in [i for i in images if i.id not in old_files]:
|
||||
# db.delete(image)
|
||||
# for key, value in files.items():
|
||||
# db.add(DbImage(voucher.id, "voucher", value["f"], value["t"]))
|
||||
|
||||
|
||||
@router.get("/{id_}", response_model=output.Voucher)
|
||||
def get_id(
|
||||
id_: uuid.UUID,
|
||||
|
@ -8,13 +8,13 @@ from fastapi import (
|
||||
status,
|
||||
Depends,
|
||||
Security,
|
||||
UploadFile,
|
||||
File,
|
||||
Request,
|
||||
)
|
||||
from sqlalchemy.exc import SQLAlchemyError
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from .db_image import save_files, update_files
|
||||
from .voucher import (
|
||||
voucher_info,
|
||||
check_voucher_lock_info,
|
||||
@ -26,7 +26,7 @@ from ..models import AccountBase
|
||||
from ..schemas.auth import UserToken
|
||||
from ..core.security import get_current_active_user as get_user
|
||||
from ..db.session import SessionLocal
|
||||
from ..models.voucher import Voucher, VoucherType, Journal, DbImage
|
||||
from ..models.voucher import Voucher, VoucherType, Journal
|
||||
import brewman.schemas.voucher as output
|
||||
import brewman.schemas.input as schema_in
|
||||
|
||||
@ -93,11 +93,6 @@ def save(data: schema_in.JournalIn, user: UserToken, db: Session) -> Voucher:
|
||||
return voucher
|
||||
|
||||
|
||||
def save_files(voucher_id: uuid.UUID, i: List[bytes], t: List[bytes], db: Session):
|
||||
for index, value in enumerate(i):
|
||||
db.add(DbImage(voucher_id, "voucher", i[index], t[index]))
|
||||
|
||||
|
||||
@router.put("/{id_}", response_model=output.Voucher)
|
||||
def update_route(
|
||||
id_: uuid.UUID,
|
||||
@ -175,15 +170,6 @@ def update(
|
||||
return voucher
|
||||
|
||||
|
||||
def update_files(voucher_id: uuid.UUID, data: List[output.ImageUpload], i: List[bytes], t: List[bytes], db: Session):
|
||||
old = [f.id_ for f in data if f.id_]
|
||||
images = db.query(DbImage).filter(DbImage.resource_id == voucher_id).all()
|
||||
for image in [i for i in images if i.id not in old]:
|
||||
db.delete(image)
|
||||
for index, value in enumerate(i):
|
||||
db.add(DbImage(voucher_id, "voucher", i[index], t[index]))
|
||||
|
||||
|
||||
@router.get("/{id_}", response_model=output.Voucher)
|
||||
def get_id(
|
||||
id_: uuid.UUID,
|
||||
|
@ -9,7 +9,6 @@ from fastapi import (
|
||||
status,
|
||||
Depends,
|
||||
Security,
|
||||
UploadFile,
|
||||
File,
|
||||
Request,
|
||||
)
|
||||
@ -17,6 +16,7 @@ from sqlalchemy import func
|
||||
from sqlalchemy.exc import SQLAlchemyError
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from .db_image import save_files, update_files
|
||||
from .voucher import (
|
||||
voucher_info,
|
||||
check_voucher_lock_info,
|
||||
@ -49,17 +49,15 @@ def save_route(
|
||||
request: Request,
|
||||
data: schema_in.PurchaseIn = Depends(schema_in.PurchaseIn.load_form),
|
||||
db: Session = Depends(get_db),
|
||||
i: List[UploadFile] = File(None),
|
||||
t: List[UploadFile] = File(None),
|
||||
i: List[bytes] = File(None),
|
||||
t: List[bytes] = File(None),
|
||||
user: UserToken = Security(get_user, scopes=["purchase"]),
|
||||
):
|
||||
try:
|
||||
i = i or []
|
||||
t = t or []
|
||||
item: Voucher = save(data, user, db)
|
||||
save_inventories(item, data.inventories, db)
|
||||
save_journals(item, data.vendor, db)
|
||||
save_files(i + t, db)
|
||||
save_files(item.id, i, t, db)
|
||||
db.commit()
|
||||
set_date(data.date_.strftime("%d-%b-%Y"), request.session)
|
||||
info = voucher_info(item, db)
|
||||
@ -147,30 +145,22 @@ def save_journals(voucher: Voucher, ven: schema_in.AccountLink, db: Session):
|
||||
db.add(item)
|
||||
|
||||
|
||||
def save_files(files: List[UploadFile], db: Session):
|
||||
# for key, value in files.items():
|
||||
# db.add(DbImage(voucher.id, "voucher", value["f"], value["t"]))
|
||||
pass
|
||||
|
||||
|
||||
@router.put("/{id_}", response_model=output.Voucher)
|
||||
def update_route(
|
||||
id_: uuid.UUID,
|
||||
request: Request,
|
||||
data: schema_in.PurchaseIn = Depends(schema_in.PurchaseIn.load_form),
|
||||
db: Session = Depends(get_db),
|
||||
i: List[UploadFile] = File(None),
|
||||
t: List[UploadFile] = File(None),
|
||||
i: List[bytes] = File(None),
|
||||
t: List[bytes] = File(None),
|
||||
user: UserToken = Security(get_user, scopes=["purchase"]),
|
||||
):
|
||||
try:
|
||||
i = i or []
|
||||
t = t or []
|
||||
item: Voucher = update(id_, data, user, db)
|
||||
update_inventory(item, data.inventories, db)
|
||||
update_journals(item, data.vendor, db)
|
||||
# journals_valid(voucher)
|
||||
update_files(data, i + t, db)
|
||||
update_files(item.id, data.files, i, t, db)
|
||||
db.commit()
|
||||
set_date(data.date_.strftime("%d-%b-%Y"), request.session)
|
||||
return voucher_info(item, db)
|
||||
@ -330,18 +320,6 @@ def update_journals(voucher: Voucher, ven: schema_in.AccountLink, db):
|
||||
db.add(item)
|
||||
|
||||
|
||||
def update_files(data: schema_in.PurchaseIn, files: List[UploadFile], db: Session):
|
||||
pass
|
||||
# old_files = [
|
||||
# uuid.UUID(f["id"]) for f in json["files"] if "id" in f and f["id"] is not None
|
||||
# ]
|
||||
# images = db.query(DbImage).filter(DbImage.resource_id == voucher.id).all()
|
||||
# for image in [i for i in images if i.id not in old_files]:
|
||||
# db.delete(image)
|
||||
# for key, value in files.items():
|
||||
# db.add(DbImage(voucher.id, "voucher", value["f"], value["t"]))
|
||||
|
||||
|
||||
@router.get("/{id_}", response_model=output.Voucher)
|
||||
def get_id(
|
||||
id_: uuid.UUID,
|
||||
|
@ -9,13 +9,13 @@ from fastapi import (
|
||||
status,
|
||||
Depends,
|
||||
Security,
|
||||
UploadFile,
|
||||
File,
|
||||
Request,
|
||||
)
|
||||
from sqlalchemy.exc import SQLAlchemyError
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from .db_image import save_files, update_files
|
||||
from .voucher import (
|
||||
voucher_info,
|
||||
check_voucher_lock_info,
|
||||
@ -48,8 +48,8 @@ def save_route(
|
||||
request: Request,
|
||||
data: schema_in.PurchaseIn = Depends(schema_in.PurchaseIn.load_form),
|
||||
db: Session = Depends(get_db),
|
||||
i: List[UploadFile] = File(None),
|
||||
t: List[UploadFile] = File(None),
|
||||
i: List[bytes] = File(None),
|
||||
t: List[bytes] = File(None),
|
||||
user: UserToken = Security(get_user, scopes=["purchase-return"]),
|
||||
):
|
||||
try:
|
||||
@ -58,7 +58,7 @@ def save_route(
|
||||
item: Voucher = save(data, user, db)
|
||||
save_inventories(item, data.inventories, db)
|
||||
save_journals(item, data.vendor, db)
|
||||
save_files(i + t, db)
|
||||
save_files(item.id, i, t, db)
|
||||
db.commit()
|
||||
set_date(data.date_.strftime("%d-%b-%Y"), request.session)
|
||||
info = voucher_info(item, db)
|
||||
@ -143,30 +143,22 @@ def save_journals(voucher: Voucher, ven: schema_in.AccountLink, db: Session):
|
||||
db.add(item)
|
||||
|
||||
|
||||
def save_files(files: List[UploadFile], db: Session):
|
||||
# for key, value in files.items():
|
||||
# db.add(DbImage(voucher.id, "voucher", value["f"], value["t"]))
|
||||
pass
|
||||
|
||||
|
||||
@router.put("/{id_}", response_model=output.Voucher)
|
||||
def update_route(
|
||||
id_: uuid.UUID,
|
||||
request: Request,
|
||||
data: schema_in.PurchaseIn = Depends(schema_in.PurchaseIn.load_form),
|
||||
db: Session = Depends(get_db),
|
||||
i: List[UploadFile] = File(None),
|
||||
t: List[UploadFile] = File(None),
|
||||
i: List[bytes] = File(None),
|
||||
t: List[bytes] = File(None),
|
||||
user: UserToken = Security(get_user, scopes=["purchase-return"]),
|
||||
):
|
||||
try:
|
||||
i = i or []
|
||||
t = t or []
|
||||
item: Voucher = update(id_, data, user, db)
|
||||
update_inventory(item, data.inventories, db)
|
||||
update_journals(item, data.vendor, db)
|
||||
# journals_valid(voucher)
|
||||
update_files(data, i + t, db)
|
||||
update_files(item.id, data.files, i, t, db)
|
||||
db.commit()
|
||||
set_date(data.date_.strftime("%d-%b-%Y"), request.session)
|
||||
return voucher_info(item, db)
|
||||
@ -273,18 +265,6 @@ def update_journals(voucher: Voucher, ven: schema_in.AccountLink, db):
|
||||
db.add(item)
|
||||
|
||||
|
||||
def update_files(data: schema_in.PurchaseIn, files: List[UploadFile], db: Session):
|
||||
pass
|
||||
# old_files = [
|
||||
# uuid.UUID(f["id"]) for f in json["files"] if "id" in f and f["id"] is not None
|
||||
# ]
|
||||
# images = db.query(DbImage).filter(DbImage.resource_id == voucher.id).all()
|
||||
# for image in [i for i in images if i.id not in old_files]:
|
||||
# db.delete(image)
|
||||
# for key, value in files.items():
|
||||
# db.add(DbImage(voucher.id, "voucher", value["f"], value["t"]))
|
||||
|
||||
|
||||
@router.get("/{id_}", response_model=output.Voucher)
|
||||
def get_id(
|
||||
id_: uuid.UUID,
|
||||
|
Loading…
x
Reference in New Issue
Block a user