Save file and upload file functions in vouchers de duplicated

This commit is contained in:
Amritanshu Agrawal 2020-05-30 11:09:19 +05:30
parent d49be23056
commit 9a1844100f
6 changed files with 46 additions and 130 deletions

View File

@ -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]))

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,