API - add typing

This commit is contained in:
Sam
2021-01-02 19:28:03 +01:00
parent 4705393a08
commit 634d06b05a
53 changed files with 1884 additions and 1075 deletions

View File

@@ -1,11 +1,19 @@
from typing import Dict
from fittrackee import db
from flask import current_app
from sqlalchemy.engine.base import Connection
from sqlalchemy.event import listens_for
from sqlalchemy.ext.declarative import DeclarativeMeta
from sqlalchemy.orm.mapper import Mapper
from sqlalchemy.orm.session import Session
from ..users.models import User
BaseModel: DeclarativeMeta = db.Model
class AppConfig(db.Model):
class AppConfig(BaseModel):
__tablename__ = 'app_config'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
max_users = db.Column(db.Integer, default=0, nullable=False)
@@ -16,26 +24,26 @@ class AppConfig(db.Model):
max_zip_file_size = db.Column(db.Integer, default=10485760, nullable=False)
@property
def is_registration_enabled(self):
def is_registration_enabled(self) -> bool:
nb_users = User.query.count()
return self.max_users == 0 or nb_users < self.max_users
@property
def map_attribution(self):
def map_attribution(self) -> str:
return current_app.config['TILE_SERVER']['ATTRIBUTION']
def serialize(self):
def serialize(self) -> Dict:
return {
"gpx_limit_import": self.gpx_limit_import,
"is_registration_enabled": self.is_registration_enabled,
"max_single_file_size": self.max_single_file_size,
"max_zip_file_size": self.max_zip_file_size,
"max_users": self.max_users,
"map_attribution": self.map_attribution,
'gpx_limit_import': self.gpx_limit_import,
'is_registration_enabled': self.is_registration_enabled,
'max_single_file_size': self.max_single_file_size,
'max_zip_file_size': self.max_zip_file_size,
'max_users': self.max_users,
'map_attribution': self.map_attribution,
}
def update_app_config():
def update_app_config() -> None:
config = AppConfig.query.first()
if config:
current_app.config[
@@ -44,14 +52,16 @@ def update_app_config():
@listens_for(User, 'after_insert')
def on_user_insert(mapper, connection, user):
def on_user_insert(mapper: Mapper, connection: Connection, user: User) -> None:
@listens_for(db.Session, 'after_flush', once=True)
def receive_after_flush(session, context):
def receive_after_flush(session: Session, context: Connection) -> None:
update_app_config()
@listens_for(User, 'after_delete')
def on_user_delete(mapper, connection, old_user):
def on_user_delete(
mapper: Mapper, connection: Connection, old_user: User
) -> None:
@listens_for(db.Session, 'after_flush', once=True)
def receive_after_flush(session, context):
def receive_after_flush(session: Session, context: Connection) -> None:
update_app_config()