Chore: Upgraded from psycopg2 to psycopg3
This will also change the connection strings. Chore: Removed usage of deprecated datetime.datetime.utcnow()
This commit is contained in:
parent
4d9996353c
commit
43cb697737
@ -27,7 +27,7 @@ class Settings(BaseSettings):
|
||||
if isinstance(self.SQLALCHEMY_DATABASE_URI, str):
|
||||
return self
|
||||
self.SQLALCHEMY_DATABASE_URI = PostgresDsn.build(
|
||||
scheme="postgresql",
|
||||
scheme="postgresql+psycopg",
|
||||
username=self.POSTGRES_USER,
|
||||
password=self.POSTGRES_PASSWORD,
|
||||
host=self.POSTGRES_SERVER,
|
||||
|
@ -1,6 +1,6 @@
|
||||
import uuid
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
from datetime import UTC, datetime, timedelta
|
||||
from typing import Any
|
||||
|
||||
from fastapi import Depends, HTTPException, Security, status
|
||||
@ -35,7 +35,7 @@ class TokenData(BaseModel):
|
||||
|
||||
def create_access_token(*, data: dict[str, Any], expires_delta: timedelta | None = None) -> str:
|
||||
to_encode = data.copy()
|
||||
expire = datetime.utcnow() + expires_delta if expires_delta else datetime.utcnow() + timedelta(minutes=15)
|
||||
expire = datetime.now(UTC) + expires_delta if expires_delta else datetime.now(UTC) + timedelta(minutes=15)
|
||||
to_encode.update({"exp": expire})
|
||||
encoded_jwt = jwt.encode(to_encode, settings.SECRET_KEY, algorithm=settings.ALGORITHM)
|
||||
return encoded_jwt
|
||||
|
@ -1,6 +1,6 @@
|
||||
import uuid
|
||||
|
||||
from datetime import date, datetime
|
||||
from datetime import UTC, date, datetime
|
||||
from decimal import Decimal
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
@ -67,7 +67,7 @@ class Attendance:
|
||||
self.attendance_type = attendance_type
|
||||
self.user_id = user_id
|
||||
self.amount = amount
|
||||
self.creation_date = creation_date or datetime.utcnow()
|
||||
self.creation_date = creation_date or datetime.now(UTC)
|
||||
self.is_valid = is_valid
|
||||
if id_ is not None:
|
||||
self.id = id_
|
||||
|
@ -4,7 +4,7 @@ import random
|
||||
import string
|
||||
import uuid
|
||||
|
||||
from datetime import datetime
|
||||
from datetime import UTC, datetime
|
||||
|
||||
from sqlalchemy import Boolean, DateTime, Integer, Unicode, Uuid, desc
|
||||
from sqlalchemy.orm import Mapped, Session, mapped_column, relationship
|
||||
@ -41,7 +41,7 @@ class Client:
|
||||
self.name = name
|
||||
self.enabled = enabled
|
||||
self.otp = otp
|
||||
self.creation_date = datetime.utcnow() if creation_date is None else creation_date
|
||||
self.creation_date = datetime.now(UTC) if creation_date is None else creation_date
|
||||
if id_ is not None:
|
||||
self.id = id_
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import uuid
|
||||
|
||||
from datetime import datetime
|
||||
from datetime import UTC, datetime
|
||||
|
||||
from sqlalchemy import DateTime, LargeBinary, Unicode, Uuid
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
@ -32,6 +32,6 @@ class DbImage:
|
||||
self.resource_type = resource_type
|
||||
self.image = image
|
||||
self.thumbnail = thumbnail
|
||||
self.creation_date = creation_date or datetime.utcnow()
|
||||
self.creation_date = creation_date or datetime.now(UTC)
|
||||
if id_ is not None:
|
||||
self.id = id_
|
||||
|
@ -1,6 +1,6 @@
|
||||
import datetime
|
||||
import uuid
|
||||
|
||||
from datetime import UTC, datetime
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from sqlalchemy import DateTime, UniqueConstraint, Uuid
|
||||
@ -26,7 +26,7 @@ class LoginHistory:
|
||||
ForeignKey("clients.id"),
|
||||
nullable=False,
|
||||
)
|
||||
date: Mapped[datetime.datetime] = mapped_column(DateTime(), nullable=False)
|
||||
date: Mapped[datetime] = mapped_column(DateTime(), nullable=False)
|
||||
|
||||
user: Mapped["User"] = relationship("User", back_populates="login_history")
|
||||
client: Mapped["Client"] = relationship("Client", back_populates="login_history")
|
||||
@ -35,11 +35,11 @@ class LoginHistory:
|
||||
self,
|
||||
user_id: uuid.UUID,
|
||||
client_id: uuid.UUID,
|
||||
date: datetime.datetime | None = None,
|
||||
date: datetime | None = None,
|
||||
id_: uuid.UUID | None = None,
|
||||
) -> None:
|
||||
self.user_id = user_id
|
||||
self.client_id = client_id
|
||||
self.date = datetime.datetime.utcnow() if date is None else date
|
||||
self.date = datetime.now(UTC) if date is None else date
|
||||
if id_ is not None:
|
||||
self.id = id_
|
||||
|
@ -1,6 +1,6 @@
|
||||
import uuid
|
||||
|
||||
from datetime import date, datetime
|
||||
from datetime import UTC, date, datetime
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from sqlalchemy import Date, DateTime, ForeignKey, Unicode, Uuid
|
||||
@ -52,7 +52,7 @@ class RateContract:
|
||||
self.valid_till = valid_till
|
||||
self.narration = narration
|
||||
self.user_id = user_id
|
||||
self.creation_date = creation_date or datetime.utcnow()
|
||||
self.last_edit_date = last_edit_date or datetime.utcnow()
|
||||
self.creation_date = creation_date or datetime.now(UTC)
|
||||
self.last_edit_date = last_edit_date or datetime.now(UTC)
|
||||
if id_ is not None:
|
||||
self.id = id_
|
||||
|
@ -1,6 +1,6 @@
|
||||
import uuid
|
||||
|
||||
from datetime import date, datetime
|
||||
from datetime import UTC, date, datetime
|
||||
from typing import TYPE_CHECKING, Optional
|
||||
|
||||
from sqlalchemy import Boolean, Date, DateTime, Enum, ForeignKey, Unicode, Uuid
|
||||
@ -72,8 +72,8 @@ class Voucher:
|
||||
self.is_starred = is_starred if is_starred is not None else False
|
||||
self.narration = narration
|
||||
self.posted = posted
|
||||
self.creation_date = creation_date or datetime.utcnow()
|
||||
self.last_edit_date = last_edit_date or datetime.utcnow()
|
||||
self.creation_date = creation_date or datetime.now(UTC)
|
||||
self.last_edit_date = last_edit_date or datetime.now(UTC)
|
||||
self.voucher_type = voucher_type
|
||||
self.user_id = user_id
|
||||
if poster_id is not None:
|
||||
|
@ -1,6 +1,6 @@
|
||||
import uuid
|
||||
|
||||
from datetime import date, datetime
|
||||
from datetime import UTC, date, datetime
|
||||
from decimal import Decimal
|
||||
from math import ceil
|
||||
|
||||
@ -203,7 +203,7 @@ def update_voucher(id_: uuid.UUID, data: schema_in.EmployeeBenefitIn, user: User
|
||||
voucher.narration = data.narration
|
||||
voucher.user_id = user.id_
|
||||
voucher.posted = False
|
||||
voucher.last_edit_date = datetime.utcnow()
|
||||
voucher.last_edit_date = datetime.now(UTC)
|
||||
return voucher
|
||||
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import uuid
|
||||
|
||||
from datetime import date, datetime
|
||||
from datetime import UTC, date, datetime
|
||||
from decimal import Decimal
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException, Request, Security, status
|
||||
@ -163,7 +163,7 @@ def update_voucher(id_: uuid.UUID, data: schema_in.IncentiveIn, user: UserToken,
|
||||
voucher.narration = data.narration
|
||||
voucher.user_id = user.id_
|
||||
voucher.posted = False
|
||||
voucher.last_edit_date = datetime.utcnow()
|
||||
voucher.last_edit_date = datetime.now(UTC)
|
||||
return voucher
|
||||
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import uuid
|
||||
|
||||
from datetime import datetime
|
||||
from datetime import UTC, datetime
|
||||
from decimal import Decimal
|
||||
|
||||
from fastapi import APIRouter, Depends, File, HTTPException, Request, Security, status
|
||||
@ -234,7 +234,7 @@ def update_voucher(
|
||||
voucher.narration = data.narration
|
||||
voucher.user_id = user.id_
|
||||
voucher.posted = False
|
||||
voucher.last_edit_date = datetime.utcnow()
|
||||
voucher.last_edit_date = datetime.now(UTC)
|
||||
|
||||
for item in voucher.journals:
|
||||
if item.debit == 1:
|
||||
@ -343,7 +343,7 @@ def update_journals(
|
||||
|
||||
def refresh_voucher(id_: uuid.UUID, batch_id: uuid.UUID, db: Session) -> None:
|
||||
try:
|
||||
db.execute(update(Voucher).where(Voucher.id == id_).values(last_edit_date=datetime.utcnow()))
|
||||
db.execute(update(Voucher).where(Voucher.id == id_).values(last_edit_date=datetime.now(UTC)))
|
||||
batch = db.execute(select(Batch).where(Batch.id == batch_id)).scalar_one()
|
||||
db.execute(
|
||||
update(Inventory)
|
||||
|
@ -1,6 +1,6 @@
|
||||
import uuid
|
||||
|
||||
from datetime import datetime
|
||||
from datetime import UTC, datetime
|
||||
|
||||
from fastapi import APIRouter, Depends, File, HTTPException, Request, Security, status
|
||||
from sqlalchemy import distinct, select
|
||||
@ -143,7 +143,7 @@ def update_voucher(id_: uuid.UUID, data: schema_in.JournalIn, user: UserToken, d
|
||||
voucher.narration = data.narration
|
||||
voucher.user_id = user.id_
|
||||
voucher.posted = False
|
||||
voucher.last_edit_date = datetime.utcnow()
|
||||
voucher.last_edit_date = datetime.now(UTC)
|
||||
|
||||
for i in range(len(voucher.journals), 0, -1):
|
||||
item = voucher.journals[i - 1]
|
||||
|
@ -1,4 +1,4 @@
|
||||
from datetime import datetime, timedelta
|
||||
from datetime import UTC, datetime, timedelta
|
||||
|
||||
from fastapi import (
|
||||
APIRouter,
|
||||
@ -57,14 +57,12 @@ async def login_for_access_token(
|
||||
delete(LoginHistory)
|
||||
.where(
|
||||
or_(
|
||||
LoginHistory.date < datetime.utcnow() - timedelta(days=30),
|
||||
LoginHistory.date < datetime.now(UTC) - timedelta(days=30),
|
||||
LoginHistory.client_id.in_(
|
||||
select(Client.id)
|
||||
.where(
|
||||
Client.creation_date < datetime.utcnow() - timedelta(days=3),
|
||||
select(Client.id).where(
|
||||
Client.creation_date < datetime.now(UTC) - timedelta(days=3),
|
||||
Client.enabled == False, # noqa: E712
|
||||
)
|
||||
.subquery()
|
||||
),
|
||||
)
|
||||
)
|
||||
@ -72,7 +70,7 @@ async def login_for_access_token(
|
||||
)
|
||||
db.execute(
|
||||
delete(Client).where(
|
||||
Client.creation_date < datetime.utcnow() - timedelta(days=3),
|
||||
Client.creation_date < datetime.now(UTC) - timedelta(days=3),
|
||||
Client.enabled == False, # noqa: E712
|
||||
)
|
||||
)
|
||||
|
@ -1,6 +1,6 @@
|
||||
import uuid
|
||||
|
||||
from datetime import date, datetime
|
||||
from datetime import UTC, date, datetime
|
||||
from decimal import Decimal
|
||||
|
||||
from fastapi import APIRouter, Depends, File, HTTPException, Request, Security, status
|
||||
@ -231,7 +231,7 @@ def update_voucher(id_: uuid.UUID, data: schema_in.PurchaseIn, user: UserToken,
|
||||
voucher.narration = data.narration
|
||||
voucher.user_id = user.id_
|
||||
voucher.posted = False
|
||||
voucher.last_edit_date = datetime.utcnow()
|
||||
voucher.last_edit_date = datetime.now(UTC)
|
||||
return voucher
|
||||
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import uuid
|
||||
|
||||
from datetime import datetime
|
||||
from datetime import UTC, datetime
|
||||
from decimal import Decimal
|
||||
|
||||
from fastapi import APIRouter, Depends, File, HTTPException, Request, Security, status
|
||||
@ -224,7 +224,7 @@ def update_voucher(id_: uuid.UUID, data: schema_in.PurchaseIn, user: UserToken,
|
||||
voucher.narration = data.narration
|
||||
voucher.user_id = user.id_
|
||||
voucher.posted = False
|
||||
voucher.last_edit_date = datetime.utcnow()
|
||||
voucher.last_edit_date = datetime.now(UTC)
|
||||
return voucher
|
||||
|
||||
|
||||
|
@ -14,10 +14,7 @@ host = os.getenv("HOST", "0.0.0.0")
|
||||
port = os.getenv("PORT", "9994")
|
||||
bind_env = os.getenv("BIND", None)
|
||||
use_loglevel = os.getenv("LOG_LEVEL", "info")
|
||||
if bind_env:
|
||||
use_bind = bind_env
|
||||
else:
|
||||
use_bind = f"{host}:{port}"
|
||||
use_bind = bind_env if bind_env else f"{host}:{port}"
|
||||
|
||||
cores = multiprocessing.cpu_count()
|
||||
workers_per_core = float(workers_per_core_str)
|
||||
|
@ -10,7 +10,7 @@ uvicorn = {extras = ["standard"], version = "^0.23.2"}
|
||||
fastapi = {extras = ["all"], version = "^0.110.1"}
|
||||
python-jose = {extras = ["cryptography"], version = "^3.3.0"}
|
||||
passlib = {extras = ["bcrypt"], version = "^1.7.4"}
|
||||
psycopg2-binary = "^2.9.9"
|
||||
psycopg = {extras = ["binary", "pool"], version = "^3.1.18"}
|
||||
SQLAlchemy = "^2.0.29"
|
||||
python-multipart = "^0.0.9"
|
||||
PyJWT = "^2.8.0"
|
||||
|
@ -3,7 +3,7 @@ HOST=0.0.0.0
|
||||
PORT=80
|
||||
LOG_LEVEL=WARN
|
||||
DEBUG=false
|
||||
SQLALCHEMY_DATABASE_URI=postgresql://postgres:123456@db:5432/brewman_{{ name }}
|
||||
SQLALCHEMY_DATABASE_URI=postgresql+psycopg://postgres:123456@db:5432/brewman_{{ name }}
|
||||
MODULE_NAME=brewman.main
|
||||
PROJECT_NAME=brewman
|
||||
SECRET_KEY={{ secret_key }}
|
||||
|
Loading…
Reference in New Issue
Block a user