update packages / nix packaging

This commit is contained in:
tuxcoder 2023-09-30 12:58:24 +02:00
parent 230d3e5fe8
commit 536668d8b9
11 changed files with 254 additions and 180 deletions

View file

@ -11,12 +11,14 @@ import logging
import crypt
import secrets
import string
from sqlalchemy.orm import DeclarativeBase, MappedAsDataclass, Mapped, mapped_column, relationship, declarative_base
from flask_sqlalchemy import SQLAlchemy
from flask_sqlalchemy.model import Model, DefaultMeta
from flask_sqlalchemy.extension import _FSAModel
from flask_migrate import Migrate
from datetime import datetime
import uuid
import pyotp
from typing import Optional, Callable
from typing import Optional, List, Dict, Tuple, Any, Type, TYPE_CHECKING
from cryptography.x509 import Certificate as CertificateObj
from sqlalchemy.ext.declarative import DeclarativeMeta
@ -28,8 +30,17 @@ logger = logging.getLogger(__name__)
db = SQLAlchemy()
migrate = Migrate()
class BaseModelIntern(MappedAsDataclass, DeclarativeBase):
pass
BaseModel: DeclarativeMeta = db.Model
if TYPE_CHECKING:
class BaseModel (_FSAModel,BaseModelIntern):
pass
else:
BaseModel: Type[_FSAModel] = db.Model
class ModelUpdatedMixin:
created_at: Mapped[datetime] = mapped_column(db.DateTime, default=datetime.now())
last_update: Mapped[datetime] = mapped_column(db.DateTime, default=datetime.now(), onupdate=datetime.now)
class SecurityUser(UserMixin):

View file

@ -14,24 +14,24 @@ LANGUAGES = {
def get_locale() -> str:
# if a user is logged in, use the locale from the user settings
user = current_user # type: Optional[User]
#user = current_user # type: Optional[User]
return 'de'
# prefer lang argument
if 'lang' in request.args:
lang = request.args['lang'] # type: str
if lang in LANGUAGES:
if not isinstance(user, User):
return lang
user.locale = lang
db.session.commit()
# if 'lang' in request.args:
# lang = request.args['lang'] # type: str
# if lang in LANGUAGES:
# if not isinstance(user, User):
# return lang
# user.locale = lang
# db.session.commit()
if isinstance(user, User):
return user.locale
# otherwise try to guess the language from the user accept
# header the browser transmits. We support de/fr/en in this
# example. The best match wins.
return request.accept_languages.best_match(['de'])
# if isinstance(user, User):
# return user.locale
# # otherwise try to guess the language from the user accept
# # header the browser transmits. We support de/fr/en in this
# # example. The best match wins.
# return request.accept_languages.best_match(['de'])
def get_timezone() -> Optional[str]:
# user = getattr(g, 'user', None)