mirror of
https://gitea.publichub.eu/oscar.krause/fastapi-dls.git
synced 2026-04-06 21:05:47 +03:00
Merge branch 'dev' into ui
# Conflicts: # requirements.txt
This commit is contained in:
10
app/main.py
10
app/main.py
@@ -30,7 +30,7 @@ TZ = datetime.now().astimezone().tzinfo
|
||||
|
||||
VERSION, COMMIT, DEBUG = env('VERSION', 'unknown'), env('COMMIT', 'unknown'), bool(env('DEBUG', False))
|
||||
|
||||
config = dict(openapi_url='/-/openapi.json', docs_url='/-/docs', redoc_url='/-/redoc')
|
||||
config = dict(openapi_url=None, docs_url=None, redoc_url=None) # dict(openapi_url='/-/openapi.json', docs_url='/-/docs', redoc_url='/-/redoc')
|
||||
app = FastAPI(title='FastAPI-DLS', description='Minimal Delegated License Service (DLS).', version=VERSION, **config)
|
||||
app.mount('/static', StaticFiles(directory=join(dirname(__file__), 'static'), html=True), name='static'),
|
||||
templates = Jinja2Templates(directory=join(dirname(__file__), 'templates'))
|
||||
@@ -87,7 +87,7 @@ async def _index(request: Request):
|
||||
|
||||
|
||||
@app.get('/-/health', summary='* Health')
|
||||
async def _health(request: Request):
|
||||
async def _health():
|
||||
return JSONr({'status': 'up'})
|
||||
|
||||
|
||||
@@ -182,6 +182,12 @@ async def _leases(request: Request, origin: bool = False):
|
||||
return JSONr(response)
|
||||
|
||||
|
||||
@app.delete('/-/leases/expired', summary='* Leases')
|
||||
async def _lease_delete_expired(request: Request):
|
||||
Lease.delete_expired(db)
|
||||
return Response(status_code=201)
|
||||
|
||||
|
||||
@app.delete('/-/lease/{lease_ref}', summary='* Lease')
|
||||
async def _lease_delete(request: Request, lease_ref: str):
|
||||
if Lease.delete(db, lease_ref) == 1:
|
||||
|
||||
15
app/orm.py
15
app/orm.py
@@ -1,10 +1,9 @@
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from dateutil.relativedelta import relativedelta
|
||||
|
||||
from sqlalchemy import Column, VARCHAR, CHAR, ForeignKey, DATETIME, update, and_, inspect
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy import Column, VARCHAR, CHAR, ForeignKey, DATETIME, update, and_, inspect, text
|
||||
from sqlalchemy.engine import Engine
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from sqlalchemy.orm import sessionmaker, declarative_base
|
||||
|
||||
Base = declarative_base()
|
||||
|
||||
@@ -161,6 +160,14 @@ class Lease(Base):
|
||||
session.close()
|
||||
return deletions
|
||||
|
||||
@staticmethod
|
||||
def delete_expired(engine: Engine) -> int:
|
||||
session = sessionmaker(bind=engine)()
|
||||
deletions = session.query(Lease).filter(Lease.lease_expires <= datetime.utcnow()).delete()
|
||||
session.commit()
|
||||
session.close()
|
||||
return deletions
|
||||
|
||||
@staticmethod
|
||||
def calculate_renewal(renewal_period: float, delta: timedelta) -> timedelta:
|
||||
"""
|
||||
@@ -190,7 +197,7 @@ def init(engine: Engine):
|
||||
session = sessionmaker(bind=engine)()
|
||||
for table in tables:
|
||||
if not db.dialect.has_table(engine.connect(), table.__tablename__):
|
||||
session.execute(str(table.create_statement(engine)))
|
||||
session.execute(text(str(table.create_statement(engine))))
|
||||
session.commit()
|
||||
session.close()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user